2017-01-08 7 views
1

Мне нужно разработать проект с использованием базы NoSql, либо couchbase, либо cassandra. Я хотел бы знать, рекомендуется ли разделять данные каждого клиента в ведре?nosql отдельные данные клиентом

В моем случае никогда не будет запросов между разными клиентами. Данные могут быть полностью разделены.

Для couchbase я видел, что для каждого ведра объем памяти был зарезервирован для него.

Куда делить нужно сделать в другом месте документа или супер столбце для кассандры.

Спасибо

ответ

1

Где делает разделение должно быть сделано в другом месте документа или супер колонки для Кассандры.

Совет № 1, при работе с Кассандрой, полностью стереть слово «супер столбец» из своего словаря.

Я хотел бы знать, рекомендуется ли разделять данные каждого клиента в ведре?

Это зависит. Похоже, что ваши запросы будут в основном основаны на идентификаторе клиента, поэтому имеет смысл иметь его как раздел вашего ключа раздела. Однако, если каждый раздел клиента содержит миллионы строк и/или столбцов под ним, это будет очень большим.

Совет №2, правильное моделирование Кассандры осуществляется на основе того, как выглядят ваши требуемые запросы. Поэтому, фактически не видя тех запросов, которые вам нужно обслуживать, будет сложно быть более конкретным, чем это.

Если у вас есть данные о клиентах, относящиеся к учетным записям и адресам и т. Д., То создание таблицы customers с PRIMARY KEY всего customer_id может иметь смысл. Но если вы обнаружите, что вам нужно запросить своих клиентов (например) на email_address, тогда вы захотите создать таблицу customers_by_email, дублируйте свои данные и создайте PRIMARY KEY, который поддерживает это.

Кроме того, если вы обнаружите, что занимаетесь хранением данных о деятельности клиента, вы можете рассмотреть таблицу customer_activity с ПЕРВИЧНЫМ КЛЮЧОМ PRIMARY KEY ((customer_id,month),activity_time). В качестве ключа раздела будут использоваться как customer_id, так и month, сохраняя активность клиента, сгруппированную по activity_time. В этом случае, если мы не использовали month в качестве дополнительного ключа раздела, каждый раздел customer_id будет постоянно записываться, пока не станет слишком неудобно писать или запрашивать (рост несвязанных строк).

Резюме:

  • Если кто-то говорит вам, чтобы использовать супер колонки в Кассандре, хлопнуть их.
  • Вы должны знать свои вопросы до вы разрабатываете свои таблицы.
  • Да, customer_id был бы хорошим способом сохранить ваши данные отдельно и гарантировать, что каждый запрос будет ограничен одним узлом. -Установите свои ключи разделов для учета роста несвязанных строк, чтобы вы не могли писать слишком много данных в один раздел.
+0

Отлично, спасибо вам за разъяснения. Целевое приложение подходит к онлайн-учетному приложению, но почти только в консультации для клиента. Данные добавляются автоматическим процессом. Я никогда не использовал cassandra, просто mongoDb в nosql. (Таким образом, группировка выполняется с помощью столбцов, а не супер столбца) – user4185975