Cassandra1.2文档学习(8)—— 数据管理
数据参考:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_manage_ondisk_c.html#concept_ds_rwq_d4x_zj
Cassandra使用的数据存储结构类似于日志结构的合并树,不同于典型的关系型数据库使用B-树。存储引擎使用追加模式按顺序写入磁盘中,数据存储是连续的。在各个节点和一台机器的操作都是平行的。因为Cassandra不适用B-tree,并发控制是不需要的。因为写的时候不需要更新以前的数据。
Cassandra对于先进的固态硬盘适应的非常好。不贵的普通固态硬盘同样也能很到。磁盘IO对Cassandra性能的影响是最小的。
吞吐量和延迟
在磁盘上管理数据,吞吐量和延迟是两个影响Cassandra性能的关键因素:
•吞吐量是每分钟的操作数
•延迟是完成一个请求的往返时间
当数据库的操作室串行化的时候,吞吐量和延迟是可以互换的。Cassandra的操作是平行化的,因此吞吐量和延迟式独立的。不像其他很多数据库,Cassandra可以达到很好的吞吐量和极低的延迟。
数据写入在Cassandra中非常高效。在数据存储引擎里面分散随机写入数据是非常低效率的。但你在做很多随机的写入数据的一部分是,Cassandra在固态硬盘扇区内读取。Cassandra没有关系数据库的随机搜索。Cassandra日志结构的设计避免了磁盘搜索的需求。
当数据库的接收到更改请求时,Cassandra并不覆盖数据。更改已有的数据会导致做随机的I/O操作。Cassandra更新字节并且重写完整的扇区代替修改磁盘的数据。消除磁盘上的数据并且磁盘块擦除周期延长了固态硬盘的寿命并且节省了1或2个毫秒的时间。
Cassandra并不对快的写入请求路径加锁,因为那样对吞吐量造成消极的影响。因为不修改磁盘的数据,对磁盘上的数据采用同步控制锁是没有必要的。操作的设计很好地集成了操作系统的页面缓存。因为Cassandra不修改数据,脏页不会产生。
使用固态硬盘代替传统硬盘可以获得低的延迟。Cassandra在每一个节点运行相同的代码并且没有主节点没有单点故障,这样使得Cassandra获得了极大的吞吐量。
数据文件按表放置在不同目录
Cassandra1.1和之后的稳定版本对于在表的数据存储在磁盘上提供了细粒度的控制,将表的数据写入的磁盘中会在keyspace的目录下按表使用分开的目录。
数据文件被存储在以下位置并以以下规则命名:
/var/lib/cassandra/data/ks1/cf1/ks1-cf1-hc-1-Data.db
新的文件的名字包含了keyspace的名字这样当导入数据的时候能分辨出该文件包含了哪个keyspace和表。
Cassandra为每一个表创建了一个子目录,这样做使得你可以为表创建一个符号链接,链接到一个物理的驱动器或者数据卷宗。这样提供了将非常活跃的表移动到更快的媒介的能力,例如使用固态硬盘以获得更好的性能,这样做将表可以所有接触的存储设备上进行分配以达到在存储层实现更好的I/O平衡。
Cassandra1.2文档学习(8)—— 数据管理的更多相关文章
- Cassandra1.2文档学习解读计划——为自己鼓劲
最近想深入研究一下Cassandra,而Cassandra没有中文文档,仅有的一些参考书都是0.7/0.6版本的.因此有个计划,一边学习文档(地址:http://www.datastax.com/do ...
- Cassandra1.2文档学习(16)—— 模式的变化
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_schema ...
- Cassandra1.2文档学习(15)—— 配置数据一致性
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_config ...
- Cassandra1.2文档学习(1)——Cassandra基本说明
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/a ...
- Cassandra1.2文档学习(19)—— CQL索引
参考文档:http://www.datastax.com/documentation/cql/3.0/webhelp/index.html#cql/ddl/ddl_primary_index_c.ht ...
- Cassandra1.2文档学习(17)—— CQL数据模型(上)
参考文档:http://www.datastax.com/documentation/cql/3.0/webhelp/index.html#cql/ddl/ddl_anatomy_table_c.ht ...
- Cassandra1.2文档学习(14)—— 事务和并发控制
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
- Cassandra1.2文档学习(13)—— 数据读取
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
- Cassandra1.2文档学习(12)—— hint机制
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
随机推荐
- SICP 习题 (1.14)解题总结
SICP 习题 1.14要求计算出过程count-change的增长阶.count-change是书中1.2.2节讲解的用于计算零钱找换方案的过程. 要解答习题1.14,首先你需要理解count-ch ...
- 怎样加入� android private libraries 中的包的源码
先上图: 这里以加入� afinal_0.5.1_bin.jar 为例. 第一步:加入�jar包到libs里面,系统自己主动把jar载入到android private libraries中: 第二步 ...
- JavaScript中Get和Set访问器的实现
我们常用的实现方法可能是这样的: function Field(val){ var value = val; this.getValue =function(){ return value; }; t ...
- PDF转换成二进制字符串写入 HTTP 输出流
最近项目需要做电子签章,需要网页打开PDF签章后保存:正好复习哈二进制和流的转换: 文件转换成二进制字符串写入HTTP输出流 protected void Page_Load(object sende ...
- QUiLoader 动态加载.ui文件
动态加载UI文件是指,用 Qt Designer 通过拖拽的方式生产.ui 文件.不用 uic工具把.ui 文件变成等价的 c++代码,而是在程序运行过程中需要用到UI文件时,用 QUiLoader ...
- div+css(ul li)实现图片上文字下列表布局
css样式表代码: html布局代码: 效果图: html布局部分,可根据自己需要添加对应的div即可. 1.CSS关键样式单词解释 1).ul.imglist{ margin:0 auto; wid ...
- 基于动态库的C++插件开发模型
基类为抽象类,在不同的动态库中实现不同的执行行为,但是每个动态库要提供2个统一的方法:1) baseClass * create(); 2) void destroy( baseClass* );,调 ...
- /lib /usr/lib /usr/local/lib 区别
简单说,/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的. /lib/ — 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件.目录 /usr/lib ...
- .Net 指定时间段内定时执行的Windows服务(System.Threading.Thread)
创建一个Windows服务项目:解决方案(右击)——> 添加 ——> 新建项目——>项目类型选择Windows——>模板选择Windows服务 ,如图: 编写Windows服务 ...
- Ubuntu Update-rc.d命令详细介绍
http://www.jb51.net/os/Ubuntu/182768.html Ubuntu或者Debian系统中update-rc.d命令,是用来更新系统启动项的脚本.这些脚本的链接位于/etc ...