Happy Apache Cassandra 2: File Store Format

原创 2011年11月28日 14:37:57

h3. Model Review

Cassandra data model

Column Family



Super Column Family



h3. File Format

h4. Keyspace

  • Each Keyspace(Eg. Lobs)in separated directory
  • Each ColumnFamily(Eg. object) in separated sstable files
    • ColumnFamilyName-version-#-Data.db
    • ColumnFamilyName-version-#-Index.db
    • ColumnFamilyName-version-#-Filter.db

h4. Index File 

  • Each entry is [Key, Position], order by key
  • Index Summary(pre-loaded into memory), every 1 entry in 128 entries
  • Key Cache, cache the entry after access it


h4. data file

  • Each entry is [Row], order by key
  • Each Row contains columns, order by column name
  • Each Row contains column index (in range)


h4. others

  • Bloom filter file
    • Given {an element}, answer {is contained in a set} .
    • Given a {key}, answer {is contained in current sstable file}
  • Commit log file
    • Used in write, avoid data lost 
  • Statistical file

h3. CRUD

h4. write

BigTable

  • First write to a disk commit log (sequential) 
  • Update to appropriate memtables
  • Memtables are flushed to disk into SSTable ( immutable)


h4. read

  • Check row cache
  • Cassandra will read all the SSTables for that Column Family
    • Bloom Filter for each SSTable to determine whether this SSTable contains the key
    • Use index in SSTable to locate the data (check key cache)
    • Read from data file

h4. update

  • Same sequence with write
    • SSTable is immutable
    • Update is write into new SSTable
  • Column Reconcile
    • Read columns from all the SSTables
    • Merge/Reduced columns with same name, CollationController
      • Use timestamp, return latest column

h4. delete

  • Same sequence with write
    • SSTable is immutable
    • Delete is write into new SSTable
  • Delete a column
    • Column flag is set to delete flag
  • Delete a Row
    • markedForDeleteAt  is set to delete timestamp
    • Column timestamp is compared with markedForDeleteAt when reducing columns in read

h4. drop

  • Drop a Column Family
    • Take snapshots (move to snapshot dir)
    • Remove column family definition
  • Drop a Keyspace
    • Take snapshots (move to snapshot dir)
    • Remove keyspace definition

h4. Compaction

Periodically data files are merged sorted into a new file (and creates new index)
  • Merge keys 
  • Combine columns 
  • Discard tombstones


References

http://jonathanhui.com/how-cassandra-read-persists-data-and-maintain-consistency

Happy Apache Cassandra 3: Monitor

http://wiki.apache.org/cassandra/Operations#Monitoring bin/cassandra-cli -h host bin/nodetoo...
  • FireCoder
  • FireCoder
  • 2011年12月14日 17:02
  • 1237

Happy Apache Cassandra 1: Setup

Cassandra Setup Setup Cassandra GettingStarted Single Node Download tar xvf cassandra-*.ta...
  • FireCoder
  • FireCoder
  • 2011年11月25日 21:19
  • 1017

Cassandra3.x的cqlsh无法打开的解决办法

安装Cassandra与Python后,执行cqlsh,提示因为python的_ssl包不存在的问题: ImportError: No module named _ssl...
  • asdfak
  • asdfak
  • 2017年05月14日 18:48
  • 868

Apache Cassandra架构理解

转载自:http://www.360doc.com/content/17/0116/11/39871333_622789686.shtml 架构 基本流程: 点对点分布式系统,集群中各节点平等,数...
  • nangongyanya
  • nangongyanya
  • 2017年01月16日 11:15
  • 1162

Cassandra cqlsh命令大全

一:CQL 简介 CQL是Cassandra Query Language的缩写,目前作为Cassandra默认并且主要的交互接口。CQL和SQL语法很相似,主要的区别是cql不支持join和子查...
  • vbirdbest
  • vbirdbest
  • 2017年09月02日 20:57
  • 1451

cassandra eclipse 环境构建

摘要本文主要介绍如何在eclipse中搭建cassandra环境更多cassandra,nosql 相关知识请访问http://www.webpersonaldeveloper.cn 正文1.for...
  • FS1360472174
  • FS1360472174
  • 2016年05月25日 19:28
  • 1917

Cassandra HintedHandoff

Cassandra HintedHandoff
  • wh62592855
  • wh62592855
  • 2010年08月03日 18:50
  • 921

Fatal error: Incompatible file format: The encoded file has format major ID 1...解决方案

申请好域名和空间后,将网站源码上传到空间,解析好域名后。在地址栏输入域名出现下面错误: Fatal error: Incompatible file format: The encoded file ...
  • liaction
  • liaction
  • 2014年11月20日 14:28
  • 15607

Cassandra数据模型设计最佳实践(下)

在第一部分中,我们介绍了一些基本实践,然后通过一个具体的例子帮助大家开启Cassandra数据模型设计之旅。你可以跳过第一部分直接阅读本篇文章,但是我推荐你看看第一篇文章中“术语和约定”部分。如果你是...
  • nangongyanya
  • nangongyanya
  • 2017年02月17日 11:39
  • 930

Apache Cassandra (四):使用php-cassandra进行分页查询,

1、使用 prepare 函数,设置 page_size=5 成功查询5条记录 , $cql ="select * from revall_books where solr_query = 'c...
  • iong_l
  • iong_l
  • 2017年06月21日 11:08
  • 508
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Happy Apache Cassandra 2: File Store Format
举报原因:
原因补充:

(最多只允许输入30个字)