国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解Cassandra數據模型

數據庫 其他數據庫
本文將為大家介紹的是Cassandra數據模型,希望通過這些例子,能讓大家更好的理解NoSQL的精髓。

Cassandra是一個開源的分布式數據庫,結合了Dynamo的Key/Value與Bigtable的面向列的特點。

Cassandra的特點如下:

1.靈活的schema:不需要象數據庫一樣預先設計schema,增加或者刪除字段非常方便(on the fly)。

2.支持range查詢:可以對Key進行范圍查詢。

3.高可用,可擴展:單點故障不影響集群服務,可線性擴展。
我們可以將Cassandra的數據模型想象成一個四維或者五維的Hash。

Column

Column是Cassandra中最小的數據單元。它是一個3元的數據類型,包含:name,value和timestamp。

將一個Column用JSON的形式表現出來如下:

  1. {  // 這是一個column     
  2. name: "逖靖寒的世界",    
  3. value: "gpcuster@gmali.com",   
  4. timestamp: 123456789  
  5. }  

為了簡單起見,我們可以忽略timestamp。就把column想象成一個name/value即可。

注意,這里提到的name和value都是byte[]類型的,長度不限。

SuperColumn

我們可以將SuperColumn想象成Column的數組,它包含一個name,以及一系列相應的Column。

將一個SuperColumn用JSON的形式表現如下:

  1. {     
  2. // 這是一個SuperColumn     
  3. name: "逖靖寒的世界",  
  4.  // 包含一系列的Columns   
  5. value: {    
  6. street: {name: "street", value: "1234 x street", timestamp: 123456789},     
  7.  city: {name: "city", value: "san francisco", timestamp: 123456789},     
  8. zip: {name: "zip", value: "94107", timestamp: 123456789},    
  9. }    

Columns和SuperColumns都是name與value的組合。最大的不同在于Column的value是一個“string”,而SuperColumn的value是Columns的Map。

還有一點需要注意的是:SuperColumn’本身是不包含timestamp的。

ColumnFamily

ColumnFamily是一個包含了許多Row的結構,你可以將它想象成RDBMS中的Table。

每一個Row都包含有client提供的Key以及和該Key關聯的一系列Column。

我們可以看看結構:

  1. UserProfile = {   
  2. // 這是一個ColumnFamily   
  3. phatduckk: {     
  4. // 這是對應ColumnFamily的key    
  5. // 這是Key下對應的Column    
  6.  username: "gpcuster",    
  7.  email: "gpcuster@gmail.com",   
  8. phone: "6666"     
  9.  }, // 第一個row結束   
  10. ieure: {    
  11.  // 這是ColumnFamily的另一個key   
  12. //這是另一個Key對應的column   
  13.  username: "pengguo",   
  14.  email: "pengguo@live.com",    
  15.  phone: "888"   
  16.  age: "66"    
  17.  },    
  18.  }  

ColumnFamily的類型可以為Standard,也可以是Super類型。

我們剛剛看到的那個例子是一個Standard類型的ColumnFamily。Standard類型的ColumnFamily包含了一系列的Columns(不是SuperColumn)。

Super類型的ColumnFamily包含了一系列的SuperColumn,但是并不能像SuperColumn那樣包含一系列Standard ColumnFamily。

這是一個簡單的例子:

  1. AddressBook = { // 這是一個Super類型的ColumnFamily     
  2. phatduckk: {    // key   
  3.   friend1: {street: "8th street", zip: "90210", city: "Beverley Hills", state: "CA"},   
  4.  John: {street: "Howard street", zip: "94404", city: "FC", state: "CA"},    
  5. Kim: {street: "X street", zip: "87876", city: "Balls", state: "VA"},    
  6. Tod: {street: "Jerry street", zip: "54556", city: "Cartoon", state: "CO"},   
  7. Bob: {street: "Q Blvd", zip: "24252", city: "Nowhere", state: "MN"},    
  8.   ...   
  9.  }, // row結束   
  10.  ieure: {     // key   
  11.     joey: {street: "A ave", zip: "55485", city: "Hell", state: "NV"},    
  12.      William: {street: "Armpit Dr", zip: "93301", city: "Bakersfield", state: "CA"},   
  13.   },    
  14.  }  

Keyspace

Keyspace是我們的數據最外層,你所有的ColumnFamily都屬于某一個Keyspace。一般來說,我們的一個程序應用只會有一個Keyspace。

簡單測試

我們將Cassandra運行起來以后,啟動命令行,執行如下操作:

 

  1. cassandra> set Keyspace1.Standard1['jsmith']['first'] = 'John'   
  2. Value inserted.   
  3. cassandra> set Keyspace1.Standard1['jsmith']['last'] = 'Smith'   
  4. Value inserted.   
  5. cassandra> set Keyspace1.Standard1['jsmith']['age'] = '42'   
  6. Value inserted. 

這個時候,Cassandra中就已經有3條數據了。

其中插入數據的各個字段含義如下:

image 

接下來,我們執行查詢操作:

  1. cassandra> get Keyspace1.Standard1['jsmith']   
  2.   (column=agevalue=42timestamp=1249930062801)   
  3.   (column=firstvalue=Johntimestamp=1249930053103)   
  4.   (column=lastvalue=Smithtimestamp=1249930058345)   
  5. Returned 3 rows. 

這樣,我們就可以將之前插入的數據查詢出來了。

排序

有一點需要明確,我們使用Cassandra的時候,數據在寫入的時候就已經排好順序了。

在某一個Key內的所有Column都是按照它的Name來排序的。我們可以在storage-conf.xml文件中指定排序的類型。

目前Cassandra提供的排序類型有:BytesType, UTF8Type,LexicalUUIDType, TimeUUIDType, AsciiType,和LongType。

現在假設你的原始數據如下:

  1. {name: 123, value: "hello there"},   
  2. {name: 832416, value: "kjjkbcjkcbbd"},   
  3. {name: 3, value: "101010101010"},   
  4. {name: 976, value: "kjjkbcjkcbbd"} 

當我們storage-conf.xml文件中指定排序的類型為LongType時:

<!--
      ColumnFamily 在 storage-conf.xml 中定義
-->
<ColumnFamily CompareWith="LongType" Name="CF_NAME_HERE"/>

排序后的數據就是這樣的:

  1. {name: 3, value: "101010101010"},     
  2. {name: 123, value: "hello there"},   
  3. {name: 976, value: "kjjkbcjkcbbd"},   
  4. {name: 832416, value: "kjjkbcjkcbbd"} 

如果我們指定排序的類型為UTF8Type

  1. <!--   
  2.       ColumnFamily 在 storage-conf.xml 中定義  
  3. -->   
  4. <ColumnFamily CompareWith="UTF8Type" Name="CF_NAME_HERE"/> 

排序后的數據就是這樣的:

  1. {name: 123, value: "hello there"},      
  2. {name: 3, value: "101010101010"},   
  3. {name: 832416, value: "kjjkbcjkcbbd"},   
  4. {name: 976, value: "kjjkbcjkcbbd"} 

大家可以看到,指定的排序類型不一樣,排序的結果也是完全不同的。

對于SuperColumn,我們有一個額外的排序維度,所以我們可以指定CompareSubcolumnsWith來進行另一個維度的排序類型。

假設我們的原始數據如下:

  1. // first SuperColumn from a Row   
  2.     name: "workAddress",   
  3.     // and the columns within it   
  4.     value: {   
  5.         street: {name: "street", value: "1234 x street"},   
  6.         city: {name: "city", value: "san francisco"},   
  7.         zip: {name: "zip", value: "94107"}   
  8.     }   
  9. },   
  10. // another SuperColumn from same Row   
  11.     name: "homeAddress",   
  12.     // and the columns within it   
  13.     value: {   
  14.         street: {name: "street", value: "1234 x street"},   
  15.         city: {name: "city", value: "san francisco"},   
  16.         zip: {name: "zip", value: "94107"}   
  17.     }   

然后我們定義CompareSubcolumnsWith和CompareWith的排序類型都是UTF8Type,那么排序后的結果為:

  1. {   
  2.     // this one's first b/c when treated as UTF8 strings   
  3.     { // another SuperColumn from same Row   
  4.         // This Row comes first b/c "homeAddress" is before "workAddress"              
  5.         name: "homeAddress",   
  6.         // the columns within this SC are also sorted by their names too   
  7.         value: {   
  8.             // see, these are sorted by Column name too   
  9.             city: {name: "city", value: "san francisco"},                  
  10.             street: {name: "street", value: "1234 x street"},   
  11.             zip: {name: "zip", value: "94107"}   
  12.         }   
  13.     },          
  14.     name: "workAddress",   
  15.     value: {   
  16.         // the columns within this SC are also sorted by their names too   
  17.         city: {name: "city", value: "san francisco"},              
  18.         street: {name: "street", value: "1234 x street"},   
  19.         zip: {name: "zip", value: "94107"}   
  20.     }   

再額外提一句,Cassandra的排序功能是允許我們自己實現的,只要你繼承org.apache.cassandra.db.marshal.IType就可以了。

原文標題:大話Cassandra數據模型

鏈接: http://www.cnblogs.com/gpcuster/archive/2010/03/12/1684072.html

【編輯推薦】
  1. 詳解NoSQL數據庫Apache Cassandra的配置
  2. 漫談Cassandra客戶端的使用
  3. 關系數據庫的末日是否已經來臨
  4. 超越關系型數據庫 pureXML技術應用及展望
  5. 新興數據庫打破整個舊規則
  6. 探尋關系數據庫和ORM的最佳替代者
責任編輯:彭凡 來源: 博客園
相關推薦

2022-11-15 08:21:49

物聯網數據模型Apache

2021-02-28 22:20:25

2009-09-18 14:07:51

LINQ to SQL

2012-03-05 10:54:03

NoSQL

2021-01-27 05:34:33

Python對象模型

2010-02-22 09:09:02

Visual Stud

2010-05-31 17:18:39

Cassandra數據

2017-06-27 10:08:29

數據倉庫模型

2016-11-02 12:32:47

數據分析大數據模型

2010-08-11 09:29:25

FlexJava數據模型

2010-03-16 14:05:19

Cassandra

2021-07-14 10:09:05

架構模型數據

2022-08-15 14:49:12

物聯網數據模型存儲

2022-12-09 09:39:01

數據治理

2020-10-14 06:28:38

數據倉庫模型

2016-01-07 11:25:12

數據模型訓練數據

2009-11-12 16:39:02

ADO.NET實體數據

2009-07-20 14:14:03

PowerDesign

2024-11-15 11:43:21

2023-02-26 17:46:03

點贊
收藏

51CTO技術棧公眾號

婷婷视频在线播放| 日韩成人中文电影| 91情侣偷在线精品国产| 欧美成人三区| 亚洲大胆av| 日韩精品在线播放| 岛国毛片在线播放| 狠狠爱成人网| 色偷偷91综合久久噜噜| 天天影院图片亚洲| 日韩成人一区二区三区在线观看| 一区二区成人精品| 96久久久久久| 国产自产v一区二区三区c| 国产成人精品视频在线观看| 白白色在线观看| 亚洲欧洲综合另类| 夜夜爽www精品| 西瓜成人精品人成网站| 欧美区一区二区三区| 国产又黄又大又粗视频| 在线看片日韩| 欧美—级高清免费播放| 国产在线激情| 亚洲四区在线观看| 亚洲一区二区三区免费观看| 国产精品对白| 亚洲国产91色在线| 最新在线地址| 成人av动漫在线| 亚洲xxx自由成熟| 亚洲欧洲日韩精品在线| 欧美日本在线视频| 三级黄色的网站| 蜜桃av一区二区三区| 国产精品日日摸夜夜添夜夜av| 亚洲精品动漫| 在线观看一区二区精品视频| 欧美丰满熟妇xxxxx| 毛片av一区二区| 亚洲精品女av网站| 亚洲精品高潮| 亚洲美女久久久| 欧美被日视频| 精品久久久免费| 男女男精品视频站| 国产精品18久久久久久vr | 欧美一区二区视频在线| 99ri日韩精品视频| 久久国内精品一国内精品| 国内高清免费在线视频| 欧美色视频在线| 超碰在线免费| 91片黄在线观看| 中文字幕欧美日韩一区二区| 久久久www| 精品国产一区二区三区久久久久久| 日韩视频在线观看| 国产97在线|日韩| 国产精品久久麻豆| 欧美一区二区三区视频免费播放| 男男电影完整版在线观看| 色美美综合视频| 毛片在线视频| 国产亚洲精品va在线观看| 国产91在线精品| 久久精品精品电影网| 成人知道污网站| 国产精品入口福利| 国产伦理一区| 国产在线无码精品| 国产精品素人一区二区| 黄动漫在线观看| 日韩午夜三级在线| 88xx成人免费观看视频库| 九九精品在线观看| 91日韩视频| 日韩亚洲视频| 久久久久久99久久久精品网站| 啦啦啦在线视频免费观看高清中文| 色婷婷av一区二区三区大白胸| 成人激情校园春色| 好吊妞这里只有精品| 日韩精品中午字幕| 美女视频黄 久久| 俄罗斯一级**毛片在线播放| 日韩久久精品一区二区三区| 欧美性精品220| 国产综合婷婷| 成人影院av| 九色视频网站入口| 在线成人小视频| 午夜精品久久久内射近拍高清| 欧美在线视屏| 日韩在线综合网| 日韩美女视频一区二区 | 国产一区二区伦理片| 欧美日韩在线高清| 久久婷婷蜜乳一本欲蜜臀| 亚洲欧美变态国产另类| 麻豆精品一区| 亚洲一区美女视频在线观看免费| 国产盗摄一区二区| 欧美大片日本大片免费观看| 9999精品成人免费毛片在线看 | 亚洲国产精品自拍| 蜜臀av在线播放| 欧美成人高清视频| 亚洲视频资源| 5566日本婷婷色中文字幕97| 国产一区二区精品久久| 国产99re66在线视频| 久久精品女人的天堂av| 欧美日韩午夜影院| 可以在线看的黄色网址| 亚洲国产精品一区二区久久| 欧美少妇精品| 成人国产精品色哟哟| 风间由美性色一区二区三区| 2019av中文字幕| 狠狠色丁香久久婷婷综合_中| 写真福利理论片在线播放| 亚洲少妇激情视频| 天使萌一区二区三区免费观看| av蜜臀在线| 亚洲一区有码| 午夜精品999| 天天操综合520| 91精彩在线视频| 亚洲小说区图片| 日韩伦理片在线观看| 国产成人高潮免费观看精品| 国产欧美1区2区3区| 欧洲天堂在线观看| 亚洲一区二区三区美女| 久久精品凹凸全集| 日韩一区二区电影在线观看| 日本大香伊一区二区三区| 国产丝袜一区| 国产免费网址| 日韩欧美电影一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 午夜性色一区二区三区免费视频| 人妻av无码专区| 精品盗摄一区二区三区| caoporm超碰国产精品| 精品成人自拍视频| 久久av少妇| 青青艹视频在线| 欧美精品成人91久久久久久久| 成人免费一区二区三区在线观看| 久久视频一区| 蜜桃视频欧美| 欧美系列精品| 乱人伦视频在线| 可以在线观看的av| 韩国日本美国免费毛片| 久久亚裔精品欧美| 国产成人拍精品视频午夜网站| 日韩精品在线观看视频| 精品国产鲁一鲁一区二区张丽| 久久无码av三级| 国产一区亚洲| 影音先锋男人资源在线| 在线免费视频a| 精品国产乱码久久久久软件| 亚洲第一狼人社区| 伊人久久大香线蕉无限次| 欧美成人精品三级网站| 中文字幕免费在线| 懂色av一区二区三区四区五区| 亚洲码在线观看| 久久久精品网| av最新在线| 婷婷六月天在线| 国产精品视频永久免费播放 | 小明精品国产一区二区三区| 久久久久久久免费视频| 欧美一二三区在线观看| 99久久精品一区| 极品中文字幕一区| 男女羞羞视频在线观看| 欧美日韩国产不卡在线看| 欧美疯狂性受xxxxx另类| 亚洲精品国产精品乱码不99| 免费人成网站在线观看欧美高清| 久久国际精品| 中文av在线播放| 少妇特黄a一区二区三区| yellow视频在线观看一区二区| 欧美日韩中国免费专区在线看| 亚洲大胆在线| 日本一区二区在线看| 国产成人精品免费视| 免费成人蒂法| 成人av国产| 欧美激情极品| 少妇高潮一区二区三区| 国产精品亚洲一区二区三区妖精 | 日韩毛片在线免费看|