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平衡。

你可能感兴趣的:(cassandra)