Apache Cassandra 中的索引概念
Apache Cassandra 中的索引是一種提高非主鍵列查詢效率和效能的方法。在 Cassandra 中,資料組織在表中,每個表都有一個主鍵,該主鍵由一個或多個唯一標識表中每一行的列組成。使用主鍵檢索資料的查詢非常高效,但使用 WHERE 子句中其他列的查詢可能會比較慢。
為了解決這個問題,Cassandra 提供了輔助索引,允許查詢除主要鍵列以外的列。輔助索引建立在表的列上,並維護一個不同的索引資料結構,該結構將索引列的值與相關的錶行關聯起來。透過在索引中查詢行,然後從表中獲取相關資料,可以快速處理該列上的查詢。
在 Cassandra 中,輔助索引有兩種型別:SASI(SSTable 附加輔助索引)和傳統輔助索引。SASI 索引比傳統輔助索引更強大,它能夠索引多個列,執行子字串搜尋並允許範圍查詢。它們比傳統輔助索引更難使用,並且佔用更多磁碟空間。
何時應該使用索引?
對於包含索引項的多個行的表,最佳選擇是使用內建索引。
如果給定列具有大量唯一值,則可以使用索引。
如果表由於多種原因而具有額外的開銷,例如包含更多條目的列,則可以使用索引。
為了查詢和維護索引,我們可以使用索引,在這些情況下,這始終是明智的選擇。
索引建立語法
CREATE INDEX IF NOT EXISTS ON TABLE NAME(column_name);
示例
讓我們建立一個名為 users 的表,其中包含列“user_id”、“user_name”和“user_email”。
CREATE TABLE users (
user_id int,
user_name text,
user_email text
);
輸出表
user_id |
user_name |
user_email |
您可以使用以下命令在“user_email”列上建立索引:
CREATE INDEX email_index ON users (user_email);
這將在“users”表中的“user_email”列上建立一個名為“email_index”的索引。
輸入
輸入是一個 CQL 命令,它在 users 表的 user_email 列上建立一個名為 email_index 的輔助索引。
輸出
輸出是一條訊息,指示索引是否建立成功。如果索引建立成功,我們可以使用它根據 user_email 列中的值更快地檢索資料。
您還可以透過逗號分隔多個列來建立索引:
CREATE INDEX name_email_index ON users (user_name, user_email);
這將在“users”表中的“user_name”和“user_email”列上建立一個名為“name_email_index”的索引。
輸入
輸入是一個 CQL 命令,它在 users 表的 user_email 和 user_name 列上建立一個名為 name_email_index 的輔助索引。
輸出
輸出是一條訊息,指示索引是否建立成功。如果索引建立成功,我們可以使用它根據 user_email 和 user_user_name 列中的值更快地檢索資料。
結論
需要注意的是,應謹慎使用 Cassandra 中的輔助索引,並且僅在經常查詢的列上使用。過度使用輔助索引會導致效能問題並增加儲存需求。通常,最好透過使用複合主鍵和反規範化來設計資料模型,從而最大程度地減少對輔助索引的需求。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP