Подходит ли Cassandra для системы, которая требует частых запросов (чтение / запись)? - PullRequest
2 голосов
/ 09 сентября 2011

Я разрабатываю веб-приложение, которое требует, чтобы множество пользователей находилось в одной и той же «вселенной», где будет происходить много частых запросов:

  • частый поиск клиентов, которые находятся в определенной области окна (между X1, X2, Y1 и Y2)
  • частые обновления позиций клиентов
  • частые сообщения в чате от клиентов
  • частые обновления статуса клиентами
  • частые подключения и отключения новых и старых клиентов

Я считаю, что мои узлы могут иметь достаточно памяти, чтобы все пользователи, находящиеся в данный момент в сети, могли находиться в оперативной памяти. Вот почему я изначально рассматривал Redis. Однако я решил, что Redis здесь не применим, потому что:

  • имеет одну точку отказа (один главный сервер)
  • только главный сервер может записывать, если у одного есть 40 узлов, то 39 подчиненных должны были бы заставить одного главного записывать каждую запись

Кажется, Кассандра решает эти проблемы.

Однако подходит ли Кассандра и для моих частых запросов?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Cassandra, безусловно, является превосходным решением для обработки записей, но если вы можете определить нагрузку на чтение, тогда определенно можно ожидать точного ответа, но в целом чтение также хорошо, если у вас достаточно оперативной памяти.

Пользовательописанный вами случай, по-видимому, включает в себя много объединений.

У вас достаточно причин для принятия решения NoSQL прямо со стадии разработки?Потому что Cassandra - это, в основном, решение для установок, которые требуют высокой масштабируемости, НО за счет ненормализации и значительного снижения количества объединений.Другими словами, вам нужно больше дискового пространства, но мало ЦП.

Или вы доработали свой дизайн базы данных и очевидную схему (хотя Cassandra не привязана к схеме), которая удовлетворяет всем вашим запросам, особенно требованиям к чтению?(его v.imp)

2 голосов
/ 09 сентября 2011

Cassandra оптимизирует запись поверх чтения (чтение дороже по сравнению с записью), но при этом она может поддерживать высокую пропускную способность чтения и записи одновременно.

С правильными структурами семейства столбцов вы сможете делать то, что хотитена высоких частотах, в зависимости от того, насколько велик ваш кластер.

Лично я бы использовал Redis для кэширования большей части информации и читал только из Cassandra при пропадании кэша.

...