Почему в ключах Кассандры обычно определяется как UUID. Похоже, что ключ создается на стороне клиента, так почему бы просто не хранить его как строку? Что полезно хранить в качестве UUID?Cassandra uuid as row key
ответ
Ключи Cassandra могут быть определены как любой тип (или комбинация therof), поэтому вы не ограничены UUID.
Но, почему вы должны использовать UUID над строкой:
UUID составляет 128 бит. Строка представляет собой переменную длину, а шестнадцатеричное представление строки для UUID должно содержать 32 символа. Если вы использовали 16-разрядные символы юникода, что означает, что для каждой клавиши потребуется 512-битное или в 4 раза больше места.
Возможно, любой ключ с Cassandra, ключ bytearray
в любом случае. Если клиенты хотят иметь ключ типа «foobar» или любую другую строку произвольной длины, в этом нет ничего плохого. Клиент Cassandra преобразует его в массив байтов перед передачей на сервер Cassandra. Технически он будет храниться как «foobar» на стороне сервера.
Есть и другие вещи, которые нужно учитывать при принятии решения о ключевом формате:
- Длина ключа имеет непосредственное влияние на производительность Кассандры. Держите их такими короткими, насколько это разумно, так что они могут быть полезны для доступа к данным. Короткий ключ, бесполезный для доступа к данным, не лучше, чем более длинный ключ с лучшими свойствами получения/сканирования. Ожидайте компромиссы при разработке ключей. Если у вас длинные строки как ключи, может быть хорошей идеей хешировать их в UUID.
- Обратите внимание, что вы можете хранить UUID как удобочитаемую строку, которая имеет UUID, например 'f5606950-98d1-11e3-a5e2-0800200c9a66', но лучше всего использовать внутренний тип данных, который просто использует 16 байтов для его хранения.
- Вам необходимо принять решение о том, следует ли использовать OrderedPreservingPartitioner or RandomPartitioner авансом, существует ряд компромиссов, но самое главное, как это повлияет на распределение ключей по кластеру. Обычно обычно идет с OrderedPreservingPartitioner, поскольку он позволяет иметь значимые проверки, в зависимости от того, какие ключевые значения он обычно приводит к узлам Cassandra для горячего/холодного режима. Чтобы снова помочь этому, либо использует хэш исходного ключа - UUID, либо добавляет реальный ключ с некоторым UUID.
- Как вы планируете открыть свои ключи, это идет от простого
get
, чтобыslice
и чрезмерно игнорировалиdelete
, часто люди считают, что UUID является хорошим компромиссом - Как вы планируете балансировки нагрузки данных
Это экономит дисковое пространство при наличии большого количества строк.
Вниз увеличение производительности за счет уменьшения количества данных для извлечения диска, когда в строках есть большое количество.
- 1. UUID Cassandra
- 2. Cassandra UUID понимание
- 3. Запрос с использованием составных клавиш, кроме Row Key в Cassandra
- 4. Cassandra Key Cache empty
- 5. Cassandra - Как вставить UUID
- 6. HBase Design Row Key
- 7. HBase Row Key Design
- 8. DBUnit & Postgres UUID Primary Key
- 9. MethodBase as Hashtable Key
- 10. Variable as array key
- 11. g_hash_table: int64 as key
- 12. Array as array key
- 13. Cassandra Key Cache Building
- 14. cassandra uuid и keycloak id
- 15. Cassandra As Daemon
- 16. Cassandra: изменить тип от UUID до TIMEUUID
- 17. Cassandra UUID в ЗЕЬЕСТ с искровым SQL
- 18. Моделирование данных и uuid на Cassandra
- 19. Mysql: return row as columns
- 20. PHP string as array key для mysqli_fetch_array
- 21. Cassandra uuid или текст с uuid от Java
- 22. HashMap и int as key
- 23. Enum as key of HashTable
- 24. HashMap using Object as key
- 25. PHP - regex as array key
- 26. function parameter as json key
- 27. cassandra wide row column slice performance
- 28. Преимущества и недостатки Cassandra UUID vs TimeUUID
- 29. Cassandra Преобразует UUID в год дата месяц
- 30. Вставка жестко запрограммированного UUID через CQLsh (Cassandra)