用Column Family作為索引

來源:互聯網
上載者:User
用一個ColumnFamily來儲存資料,用一個或者多個ColumnFamily來為這些資料提供索引服務,是一個常見的資料存放區策略。

索引策略主要依賴需要被索引的資料。記住,索引中的每一行都儲存在單一的節點上,所以當一個單行索引被大量使用的時候,這個節點的負載會比平均負載大一些。以下為一些常見使用的索引策略。

一對一

這種情況對應於關聯式資料庫的唯一索引,被索引的值不存在重複,每一個被索引的值都對應於一條記錄,可以使用Cassandra的寬表方式來儲存索引資訊,ColumnFamily的一行資料表示一個索引,每一個列的名稱表示被索引的值,每一個列的值表示被索引資料所對應的Row Key。

索引特徵:

一個被索引的值匹配一個資料行Key;

每個索引是一個單獨的行,該行的每一列為被索引的資料行;

索引的行Key是你要使用的索引的名稱;

索引的列名是被索引的值;

索引的列值是被索引的行key;

使用案例:

存在一個會員列表Users(user_id、name、email、addresss),每一行表示一條會員資訊,其中存在一個User_ID列表示該會員的數字ID,具有唯一性。由於業務需要根據User_ID來尋找使用者資訊,所以可以給User_ID建一個唯一索引。

在Cassandra中建立一個ColumnFamily,UNIQUE_INDEX

TableName: UNIQUE_INDEX

Row Key

INDEX_USERS_USER_ID

ColumnName

10000055

1000898

4562221

Value

USERS_ROW_KEY1

USERS_ROW_KEY2

USERS_ROW_KEY2

 

一個對幾個

這種情況對應於關聯式資料庫的普通索引,同樣的值允許重複,但是重複的次數不會太多,並且對於重複值的讀取存在一定的集合性。與前述的唯一索引類似,在索引的ColumnFamily中,依然是一個行對應於一個索引,行Key即為索引名稱,不一樣的地方在於Column是使用Super Column,對於被索引的值對應得多條記錄,則分別用SuperColumn中的Sub Column來加以區別,超列名稱為被索引的值,子列名稱為索引值所對應的多條記錄的Row Key,子列的值不需要儲存任何資訊。

索引特徵:

一個被索引的值匹配幾個行Key;

每個索引是一個單獨的行,每個索引的值是一個超列;

索引的行Key是你要使用的索引的名稱;

索引的超列名稱是被索引的值;

索引的超列中的子列名稱是被索引的行key;

超列中的子列沒有值;

 

一個對多個

這種情況對應於關聯式資料庫的位元影像索引,被索引的值具有一定的枚舉性,每一個被索引的值都對應著成千上萬的記錄資訊。我們常見的有對於狀態的索引,比如Users表有一個欄位,Status(1 初始化 2 待審核 3 審核通過 4 審核不通過 5 作廢),業務需要根據狀態來查詢使用者資訊,則需要在Status上建立索引資訊。對於每一個這樣的索引欄位,都需要使用一個專有的Column Family儲存,對於行Key,則為被索引的值,對於列名則為被索引的值所對應的及記錄的Row Key。

索引特徵:

 

一個被索引的值匹配許多行Key;

每一個被索引的值只接受它自己的行;

每一個索引的行Key匹配被索引的行的列值;

列名稱可以是:

   行Key,在沒有排序要求的情況下;

   用於去排序Key的值;列值包含行keys;

每一個被索引的列名使用一個column family;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.