2016-06-14 2 views
1

Я переношу приложение из Кассандры в DynamoDB. На Кассандре мы использовали в качестве ключа комбинацию (entityName, TimeUUID) с DynamoDB, насколько я читал, я мог бы использовать основной ключ хэш + диапазона.Cassandra TimeUUID в DynamoDB

Чтобы использовать ту же структуру данных в базе данных Cassandra, я думал об использовании entityName как хэша и временной метки как диапазона. Затем я подумал, что, возможно, временные метки могут быть не уникальными: я говорю об угловых случаях, но основной ключ Cassandra (entityName, TimeUUID) является более мощным, чем DynashDB Hash + Range (имя_иммограммы, временная метка), поскольку он позволяет существование элементов с одним и тем же именем сущности и временной меткой.

Могу ли я использовать TimeUUID Cassandra как диапазон DynamoDb? Есть ли причина, почему я не должен использовать этот подход?

+1

Возможно, вы также попросите/переместите этот вопрос на http: //dba.stackexchange.com/... – Castaglia

ответ

1

Вы можете (и должны, если вы считаете, что можете столкнуться на timestamp). Единственный улов, о котором я могу думать, это то, что вам, возможно, придется обращаться с between time_x and time_yQuery по своему усмотрению.

Для например, предположим, что у вас есть эти 5 пунктов в таблице:

  • HK: h1. RK: t1_uuid1
  • HK: h1. RK: t1_uuid2
  • HK: h1. RK: t2_uuid3
  • HK: h1. RK: t3_uuid4
  • HK: h2. RK: t4_uuid5

Кроме того, предположим, что t1 < t2 < t3 и UUID, 4 строки символов между aaaa и zzzz

Теперь, если вам нужны все детали с HK h1 и РК между t1 и t2, то ваш Query будет содержать что-то вроде between t1_aaaa and t2_zzzz.

Это потому, что DynamoDB сам по себе не понимает концепцию TimeUUID, как Cassandra. Таким образом, вам придется обрабатывать такие случаи, как указано выше в вашем прикладном уровне.

Смежные вопросы