我有一個擁有數百億記錄的巨大表格,我的意思是在這張表中添加一個字段,其中相同的值將爲數百萬條記錄重複。我不知道如何有效地在cassandra中建模。請允許我闡述:如何建模cassandra上多條記錄的重複信息
我有一個通用的表:
CREATE TABLE readings (
key int,
key2 int,
time timestamp,
name text,
PRIMARY KEY ((key, key2) time)
)
此表有700.000.000+記錄。 我想在此表中創建一個名爲source
的字段。該字段指示記錄的來源(因爲該軟件有許多方法可以接收reading
表中的信息)。這個字段的一個可能的值是"XML: path\to\file.xml"
或"Direct import from the X database"
或甚至"Manually added"
,我希望這是一個描述性字段,專門用於在數據庫中進行後期維護,我們只想操作來自給定源的記錄。
我想運行,我不能現在的疑問:
- 在
readings
表,記錄是從給定源得到? - 給定記錄的來源是什麼?
一個解決方案是爲我創建一個表,如:
CREATE TABLE readings_per_source(
source text,
key int,
key2 int,
time timestamp,
PRIMARY KEY (source, key, key2, time)
)
這將允許我執行第一查詢,但也意味着我將創建700.000.000+新紀錄在我的數據庫中有很多信息,這會佔用大量不必要的存儲空間,因爲數以百萬計的這些記錄具有相同的值source
。
如果這是一個關係型的環境,我會在readings
表和source
表id (PK)
和name
領域創造source_id
場,這將意味着存儲有關readings
表的每一行和新表只是一個額外的整數有不同來源的記錄數量很多。
我們如何在cassandra中對此進行建模?
是的,我知道這個查詢可能會返回很多記錄,而這也是一種目的。它可能是一個問題嗎?我的意思是用單個查詢返回數百萬條記錄。此外,我曾想過創建某種索引,但不知道如何去做,您的答案會有很大幫助。但有一個問題仍然存在:簡單地添加列並以非標準化的方式重複該值,是否會導致過度使用存儲? –
此外,我使用python驅動程序,並且我發現驅動程序已經對大量查詢的結果進行了分頁,是否需要配置與它已有的內容不同的內容? –
「一個問題仍然存在:只需添加列並以非標準化的方式重複該值,是否不會導致過度使用存儲? - >理論上是的,在實踐中,如果啓用了磁盤壓縮(默認情況下),它應該有助於節省空間。 – doanduyhai