多层存储
Ignite在内存和磁盘之间向上扩展和向外扩展。默认情况下,Ignite以纯内存模式运行。但是,通过切换单个配置设置,您可以将集群转变为可以扩展到群集的内存容量:
<bean class=“org.apache.ignite.conformation.IgniteConfiguration”><property name=“dataStorageConfiguration”><bean class=“org.apache.ignite.conformation.DataStorageConfiguration”><property name=“defaultDataRegionConfiguration”><bean class=“org.apache.ignite.conformation.DataRegionConfiguration”><property name=“persistenceEnabled”value=“true”/></bean></属性></bean></属性></bean>
点火配置cfg=新的点火配置();DataStorageConfiguration storageCfg=新的DataStorageConfiguration();//启用点燃持久性storageCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(true);//使用新的存储配置cfg.setDataStorageConfiguration(storageCfg);
var cfg=新点火配置{DataStorageConfiguration=新DataStorageConfiguration{DefaultDataRegionConfiguration=新DataRegionConfiguration{名称=“Default_Region”,PersistenceEnabled=true}}};
分布式SQL
通过利用JDBC驱动程序、ODBC驱动程序或可用于Java、C#、C++、Python和其他编程语言的本机SQL API,将Ignite用作传统SQL数据库。无缝连接、分组、聚合和订购分布式内存和磁盘数据:
选择country.name、city.name、MAX(city.population)作为MAX_popFROM country JOIN city ON city.countrycode=国家代码WHERE country.code IN('USA','BRA','ESP','JPN')按国家名称、城市名称分组按max_pop DESC LIMIT 3订购;
ACID事务
Ignite可以以强一致的模式运行,为分布式ACID事务提供全面支持。跨多个群集节点、缓存、表和分区进行事务处理:
IgniteTransactions事务=ignite.transactions();try(事务tx=transactions.txStart()){整数hello=cache.get(“hello”);if(hello==1)cache.put(“你好”,11);cache.put(“世界”,22);tx.承诺();}
var交易=点火。GetTransactions();使用(var tx=事务.TxStart()){int hello=缓存。Get(“你好”);if(hello==1){隐藏物。Put(“你好”,11);}隐藏物。Put(“世界”,22);tx.提交();}
Java、Scala、Kotlin、C#、C中的计算API++
对于传统数据库,对于就地计算,可以使用用PL/SQL等语言编写的存储过程。使用Ignite,您可以使用现代JVM语言、C#或C++跨您的分布式数据库:
//仅向服务器节点广播任务。IgniteCompute compute=ignite.compute(ignite.cluster().forServers());//每个远程服务器节点将执行以下任务/lambda的逻辑。compute.broadcast(()->System.out.println(“Hello Node:”+ignite.cluster().localNode().id()));
//仅向服务器节点广播任务。var计算=点火。GetCluster()。对于服务器()。获取计算();//每个远程服务器节点都将执行自定义PrintNodeIdAction任务。计算。广播(new PrintNodeIdAction());
内置机器学习
Ignite机器学习使用内置算法和工具,以及TensorFlow集成,以建立可扩展的机器学习模型并避免昂贵的数据传输。培训、部署、评估和更新您的ML和DL模型持续不断地扩展:
//创建培训师KNNClassificationTrainer-trainer=新KNNClassificationTrainer().withK(3).withIdxType(空间索引类型.BALL_TREE).with DistanceMeasure(新的欧几里德距离()).带权重(true);//训练模型KNNClassificationModel knnMdl=训练器.fit(点火、数据缓存、矢量器);//做出预测双重预测=knnMdl.预测(观察);
连续查询
使用关系数据库,可以使用触发器对某些事件作出反应。使用Ignite,可以部署用现代编程语言(如Java或C#)编写的连续查询,并在数据库和应用程序端:
ContinuousQuery qry=new ContinuousQuery();//将在应用程序端触发的回调。qry.setLocalListener(新的MyLocalListeter());//将在服务器端执行的回调。qry.setRemoteFilterFactory(新的MyRemoteFictory());//在集群中部署查询。cache.query(查询);
var缓存=点火。GetOrCreateCache(“myCache”);var查询=new ContinuousQuery(new MyLocalListener(),//将在应用程序端触发。new MyRemoteFilter());//将在服务器端执行。//在集群中部署查询。var句柄=缓存。QueryContinuous(查询);