几种内存数据的总结

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机将不影响任何计算,成本特别贵,几千万。

时间: 2024-08-09 05:38:25

几种内存数据的总结的相关文章

实现按行读取文件,把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。

/* 2 编写一个业务函数,实现按行读取文件.把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出. 函数原型有两个,任意选择其一 要求1:请自己任意选择一个接口(函数),并实现功能:70分 要求2:编写测试用例.30分 要求3:自己编写内存释放函数 */ /********************************************************************** * 版权所有 (C)2015, Wu Yingqiang. * * 文件名称:ReadFi

内存数据持久化的两种常见方法

内存数据持久化的两种常见方法: 1.将内存数据定期dump到磁盘 优点:效率高,操作简便 缺点:会损失部分数据 2.利用类似于mysql的binlog日志的方式,记录更新操作,需要时回放数据 优点:可保证数据完整性 缺点:会损失部分性能,实现稍微复杂点 redis实现了这两种方式

ZeroMQ接口函数之 :zmq_send_const – 从一个socket上发送一个固定内存数据

ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ————————————————————————————————————— ZeroMQ 官方地址:http://api.zeromq.org/4-1:zmq-send-const zmq_send_const(3)           ØMQ Manual - ØMQ/4.1.0 Name zmq_send_const – 从一个socket上发送一个固定内存数据

C提高_day03_二级指针做输入第2种内存模型

#include <stdlib.h> #include <string.h> #include <stdio.h> //打印 排序 //封装成函数 void main() { int i = 0, j = 0; int num = 4; char tmpBuf[30]; char myArray[10][30] = {"aaaaaa", "ccccc", "bbbbbbb", "1111111111

揭秘12306技术改造(三):传统框架云化迁移到内存数据平台

摘要:此篇文章列举不同类型的系统改造迁移到云平台方案,从改造思路探讨,系统框架设计和项目实施的整个迁移过程,供大家参考和交流. 注:本文首发于CSDN,转载请标明出处. [编者按]在年前的「技术揭秘12306改造」专题中,负责12306改造的技术架构师刘云程从技术的角度.用科学论证的方式说明 12306是如何实现高流量高并发的关键技术,以及深入探讨了12306两地三中心混合云架构,今天,他继续为大家带来第三篇:传统框架云化迁移到内存数据平台. 以下为正文>> 摘要 12306混合云成功案例给予

关于内存数据与 JSON

闲话: 正在用 WebBroker 写一个小网站,感受颇多:1.如果是写一个小东西,应该先考虑下 WebBroker,因为它是分分钟即可上手的.2.如果要写一个大东西,或许也应该考虑下 WebBroker,因为相比其他它有着最高的灵活度(但这只是相像,因为我只是写了一个小东西).3.Delphi 3 就有了 WebBroker,可惜现在才开始使用它:随着“服务器”与“网页程序”的普及,WebBroker 应该会被更多地提起. 期间用到了 json, 所以有了这篇博文. Delphi 与内存数据的

C++二级指针第二种内存模型(二维数组)

C++二级指针第二种内存模型(二维数组) 二维数组 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”. 定义 类型说明符 数组名[常量表达式][常量表达式] 例如: float a[3][4],b[5][10]; 二维数组元素地址 #include <iostream> using namespace std; int main() { cout << "Hello world!" << endl; int a[3][4]={ {1,2,3

万一博客转载:关于内存数据与 JSON

转载地址: http://www.cnblogs.com/del/p/4225871.html 介绍本文章介绍了关于内存数据与 JSON,下面是具体的内容:Delphi 与内存数据的总结与回顾:1.普通类型变量:储存一个数据.2.数组:储存一组同类型的数据.3.结构体:储存一组不同类型的数据:现在的结构体越来越复杂了,还可以操作这些个数据,越来越像“类”了.4.“键值”对:我一般使用 TStringList,并常常用它代替 ini 文件类:同类还有 THashedStringList.TStri

C++的4种内存分配方式(抄的,备忘一下)

C++的4种内存分配方式 :堆.栈.自由存储区.全局/静态存储区和常量存储区 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区.里面的变量通常是局部变量.函数参数等.在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用.和堆一样,用户栈在程序执行期间可以动态地扩展和收缩. 堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete.如果程序员没有释放掉,那么在程序结束后,操作