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