爲什麼在Cassandra鍵中通常定義爲UUID。看起來密鑰是在客戶端生成的,爲什麼不直接存儲爲字符串?作爲UUID專門存儲有什麼好處?Cassandra uuid作爲行鍵
3
A
回答
3
Cassandra Keys可以被定義爲任何類型(或其組合),因此您不受UUID限制。
但是,爲什麼你會使用UUID在一個字符串:
UUID是一個128位。字符串是可變長度,UUID的字符串十六進制表示將需要32個字符。如果您使用的是16位unicode字符,則意味着每個密鑰需要512位或4倍的空間。
4
一個可能與卡桑德拉任意鍵,一鍵是bytearray
反正。如果客戶想要擁有像「foobar」或其他任意長度的字符串,那麼它沒有任何問題。 Cassandra客戶端在傳輸到Cassandra服務器之前將其轉換爲字節數組。從技術上講,它將作爲「foobar」存儲在服務器端。
還有其他的事情之一需要考慮的關鍵方式決定時:
- 密鑰長度對Cassandra的性能直接影響。保持它們儘可能短,以便它們對於所需的數據訪問仍然有用。對數據訪問無用的短密鑰並不比具有更好獲取/掃描屬性的更長密鑰更好。設計鑰匙時需要權衡。如果你有很長的字符串作爲鍵,那麼把它們散列成UUID可能是個好主意。 您可以存儲UUID爲具有UUID像「f5606950-98d1-11e3-a5e2-0800200c9a66」而是一種更好的主意人類可讀的字符串
- 注意是使用,只需佔用16個字節來存儲它的內部數據類型。
- 你需要做出決定是否使用OrderedPreservingPartitioner or RandomPartitioner前期,有取捨的數量,但什麼是最重要的是它將如何影響整個集羣密鑰分發。通常使用OrderedPreservingPartitioner,因爲它允許進行有意義的掃描,具體取決於它通常導致熱/冷Cassandra節點的關鍵值。爲了再次提供幫助,要麼使用原始密鑰的散列 - UUID,要麼使用某個UUID預先輸入一個真正的密鑰。
- 你打算如何來訪問你的鑰匙,這正好從簡單
get
,以slice
和過於忽略delete
,人們往往發現,UUID是一個很好的妥協 - 你打算如何進行負載均衡數據
1
當存在大量行時,這節省了磁盤空間。
當行數較多時,通過減少取出磁盤的數據量來降低性能。
相關問題
- 1. UUID Cassandra
- 2. 將Guid轉換爲Cassandra UUID
- 3. HashMap UUID或String作爲鍵?
- 4. UUID cassandra排序?
- 5. Cassandra CompositeType作爲行鍵驗證程序
- 6. 作爲主鍵不工作的UUID Laravel
- 7. 使用UUID作爲主鍵的Laravel 4
- 8. Android:使用UUID作爲SQLite的主鍵
- 9. 自定義UUID作爲主鍵
- 10. 實現作爲主鍵的UUID
- 11. Cassandra - 如何插入UUID
- 12. 複製,uuid字段作爲主鍵,基於行的複製
- 13. 獲取Cassandra行鍵
- 14. 可讀行鍵cassandra
- 15. 爲IndexedDB鍵生成UUID?
- 16. 從cassandra cli刪除行鍵
- 17. 行鍵作爲長型
- 18. Cassandra中的UUID真的「有必要嗎?」
- 19. Cassandra UUID與TimeUUID的優點和缺點
- 20. Cassandra的數據建模和uuid
- 21. Postgresql UUID []給Cassandra:轉換錯誤
- 22. Cassandra:如何從CLI中刪除UUID?
- 23. UUID主鍵和Memcached
- 24. 作爲列默認SQLite UUID
- 25. MySQL Workbench爲主鍵自動生成UUID
- 26. PHP的mysql_insert_id()爲MySQL的UUID()主鍵?
- 27. 在OpenSuse上運行Cassandra作爲服務
- 28. cassandra未作爲服務運行
- 29. MySQL爲多行生成UUID()
- 30. Cassandra將UUID轉換爲字符串並返回