几种内存数据的总结
MemSQL 原理:将不用锁的数据结构和即时编译器结合起来应对大容量的工作负载,在内存中实现了免锁的hashtable和免锁skiplists(一种层级关系的链表结构)来快速随机访问数据。 持久性:MemSQL尽管在内存中存数据,可以通过写日志和快照(类于checkpoint)对
MemSQL
原理:将不用锁的数据结构和即时编译器结合起来应对大容量的工作负载,在内存中实现了免锁的hashtable和免锁skiplists(一种层级关系的链表结构)来快速随机访问数据。
持久性:MemSQL尽管在内存中存数据,可以通过写日志和快照(类似于checkpoint)对数据持久化到磁盘
复制:MemSQL目前支持master-slave的复制方式,它支持本地复制协议能将事务日志转运到slave上。
分布式架构:基于聚合器和叶子节点的理念进行工作,一个叶子节点就是一个MemSQL的数据库,聚合器负责分解查询到相关的叶子节点上,同时将结果聚合回客户端。
GemFire基于内存的分布式集群系统,分布式内存数据平台的技术原理如上图所示:通过云计算平台虚拟化技术,将若干X86服务器的内存集中起来,组成最高可达数十TB的内存资源池,将全部数据加载到内存中,进行内存计算。计算过程本身不需要读写磁盘,只是定期将数据同步或异步方式写到磁盘。GemFire在分布式集群中保存了多份数据,任何一台机器故障,其它机器上还有备份数据,因此通常不用担心数据丢失,而且有磁盘数据作为备份。GemFire支持把内存数据持久化到各种传统的关系数据库、Hadoop库和其它文件系统中,12306之前采用Unix小型机架构,采用GemFire技术改造成Linux/X86服务器集群架构,就意味着一下跨越三代。从小型机到大内存X86服务器集群,不仅让性能提升了一个数量级,而且成本也要低得多。
Neo4j是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图(网络)中而不是表中存储数据。Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图,可以扩展到多台机器并行运行。相对于关系数据库来说,图数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。Neo4j重点解决了拥有大量连接的传统RDBMS在查询时出现的性能衰退问题。通过围绕图进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图的数据量没有任何关系。此外,Neo4j还提供了非常快的图算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是无法实现的。
VOLTDB是一种开源的运行在集群上的OLTP数据库,智能快速数据的唯一内存解决方案,它提供了内存的性能,NoSQL的可扩展性,完全的流能力和传统关系型数据库的连续性,在密室和云环境下它提供了可靠和容错性。数据表被分割在集群的多个服务器上,兼容SQL和ACID,可以在线扩展,使用并行的单线程处理方式确保数据的一致性,避免传统数据库的锁和资源管理的开销,但是由于VOLTDB的数据分析是基于SNA,数据分布策略是基于哈希的,采用这种方法后,集群规模是事先确定好的,新增机器需要停止服务后重新分布数据,另外,数据哈希被分散后,数据的连续性被打乱,在这个数据结构上做范围查询需要用服务这张表的所用机器,处理范围查询效率会很低下。
SAP HANA主要是用于主数据分析用的,hana可以抽取其他类型的数据,在hana上快速的分析,SAP HANA与传统分析模型的主要区别在于摒弃了任何物质化的东西,即,所有模型都是完全虚拟的,均基于基本的具体运营数据计算结果,这样,模型就能够被方便的修改。它采用数据字典的方法对数据进行压缩,最小化数据传输; 把大数据量和计算量分散到不同处理器上,不同的服务器之间共享一组数据,单一的服务器的DOWN机将不影响任何计算,成本特别贵,几千万。