資源描述:
《cassandra 教程》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、提綱概述和特點數(shù)據(jù)模型概念,排序,twitter,rrdRing寫操作讀操作API性能測試和比較配置說明概述非關系的數(shù)據(jù)庫分布式的Key-Value存儲系統(tǒng)一堆數(shù)據(jù)庫節(jié)點共同構成的一個分布式網(wǎng)絡服務對Cassandra的一個寫操作,會被復制到其他節(jié)點上去對Cassandra的讀操作,也會被路由到某個節(jié)點上面去讀取特點模式靈活:使用Cassandra,像文檔存儲,你不必提前解決記錄中的字段。你可以在系統(tǒng)運行時隨意的添加或移除字段。這是一個驚人的效率提升,特別是在大型部署上。真正的可擴展性:Cassandra是純粹意義上的水平擴展
2、。為給集群添加更多容量,可以指向另一臺電腦。你不必重啟任何進程,改變應用查詢,或手動遷移任何數(shù)據(jù)。多數(shù)據(jù)中心識別:你可以調整你的節(jié)點布局來避免某一個數(shù)據(jù)中心起火,一個備用的數(shù)據(jù)中心將至少有每條記錄的完全復制。數(shù)據(jù)模型數(shù)據(jù)模型可以理解為四維或者五維的hashCluster包含多個KeyspaceKeyspace包含多個ColumnFamily,通常對應一個application,如twitterColumnFamily包含多個Column,或者是SuperColumnSuperColumn:包含有多個ColumnColumn最小
3、數(shù)據(jù)單元,三元組:name,value,timestamp想象成一個name/value對name和value都是byte[]類型的,長度不限例子:"name":"emailAddress","value":"foo@bar.com","timestamp":123456789所有的值都由客戶點提供,包括timestamp,所以要求客戶端同步;Timestamp的作用是用來解決數(shù)據(jù)沖突,幾乎可以忽略;Column(三元組)SuperColumn我們可以將SuperColumn想象成Column的數(shù)組,它包含一個name,以及一
4、系列相應的Column{//這是一個SuperColumnname:“Address",value:{{name:“street”,value:“中關村”,timestamp:1234},{name:“city”,value:“北京”,timestamp:1234},}}Column和SuperColumn都是name與value的組合,只是value部分不一樣;SuperColumn的value部分是columns;注意:SuperColumn本身是不包含timestamp的;ColumnFamilyColumnFamily
5、是一個包含了許多Row的結構,類似數(shù)據(jù)庫的Table。每一個Row都包含有Key以及和該Key關聯(lián)的一系列Column。UserProfile//ColumnFamily{user1:{//keyusername:“x",email:“x@gmail.com",phone:“134666666"},//第一個row結束user2:{//keyusername:“zi",email:"zi@live.com",phone:“1399888888"age:“24”},//第二個row結束}ColumnFamily的類型:Stand
6、ard(column)或Super(Supercolumn)。ColumnFamilySuperColumnfamilyColumnfamilyCassandra和關系數(shù)據(jù)庫的對比:Columnname字段名Columnvalue值Keyprimarykey;rowColumnfamilytableKeyspacedatabaseClusterserver插入:cassandra>setKeyspace1.Standard1['jsmith']['first']='John'Valueinserted.cassandra>s
7、etKeyspace1.Standard1['jsmith']['last']='Smith'Valueinserted.cassandra>setKeyspace1.Standard1['jsmith']['age']='42'Valueinserted.讀?。篶assandra>getKeyspace1.Standard1['jsmith']?(column=age,value=42;timestamp=1249930062801)?(column=first,value=John;timestamp=1249930
8、053103)?(column=last,value=Smith;timestamp=1249930058345)Returned3rows.排序注意:在某一個Key的某個CF內(nèi)的所有Column都是按照它的Name來排序的,不是按照value排序故cassandra表設計