Транзакция с моделью данных Cassandra - PullRequest
5 голосов
/ 04 сентября 2011

Согласно теории CAP, Кассандра может иметь только постоянную последовательность.Что еще хуже, если у нас есть несколько операций чтения и записи во время одного запроса без надлежащей обработки, мы можем даже потерять логическую согласованность.Другими словами, если мы делаем вещи быстро, мы можем делать это неправильно.

Между тем, лучшая практика для разработки модели данных для Cassandra - это подумать о запросах, которые мы собираемся получить, а затем добавить CFк этому.Таким образом, добавить / обновить один объект означает обновить много представлений / CF во многих случаях.Без функции атомарных транзакций трудно сделать это правильно.Но с этим мы снова теряем части A и P.

Я не вижу, что это касается многих людей, поэтому я удивляюсь, почему.

  • Это потому, что мы всегда можем найтиспособ спроектировать нашу модель данных, чтобы избежать нескольких операций чтения и записи за один сеанс?
  • Это потому, что мы можем просто игнорировать «правильную» часть?
  • На практике мы можемвсегда есть функция ACID где-то посередине?Я имею в виду, может быть, реализовать на уровне приложений или добавить промежуточное программное обеспечение для обработки?

1 Ответ

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

Это касается людей, но, вероятно, вы используете cassandra, потому что один сервер базы данных не может удовлетворить ваши потребности из-за масштабирования или проблем с надежностью.Из-за этого вы вынуждены обходить ограничения распределенной системы.

На практике у нас всегда есть функция ACID где-то посередине?Я имею в виду, может быть, реализовать на уровне приложений или добавить промежуточное программное обеспечение для обработки?

Нет, у вас обычно нет кислоты где-то еще, так как предположительно, что где-то еще должно быть также распределено по нескольким машинам.Вместо этого вы разрабатываете свое приложение с учетом ограничений распределенной системы.

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

Если вы можете структурировать свое приложение таким образом, может быть полезным использование службы координации, такой как Zookeeper или cages .

...