Транзакция с моделью данных Cassandra

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

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

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

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам