WedX - журнал о программировании и компьютерных науках

Могу ли я положиться на riak как на мастер-хранилище данных в электронной коммерции?

В документации riak часто встречаются примеры того, как можно определенным образом смоделировать хранилище данных электронной коммерции. Но вот написано:

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

Из https://docs.basho.com/riak/latest/theory/concepts/crdts/#Riak-Data-Types-Under-the-Hood, последний абзац.

Итак, достаточно ли безопасно использовать Riak в качестве основного хранилища данных в приложении для электронной коммерции или лучше использовать другую базу данных с более надежной согласованностью?

13.10.2015

Ответы:


1

Использовать готовые решения

На мой взгляд, готовый Riak недостаточно безопасен для использования в качестве основного хранилища данных в приложении для электронной коммерции. Это связано с возможной согласованностью Riak (и многих решений NoSQL).

В Теореме CAP распределенные хранилища данных (одним из них является Riak) могут гарантировать не более двух из следующих условий:

  • Согласованность (все узлы видят одни и те же данные одновременно)
  • Доступность (гарантия того, что каждый запрос получает ответ о том, был ли он успешным или нет)
  • Устойчивость к разделам (система продолжает работать, несмотря на произвольное разделение из-за сетевых сбоев)

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


Что Riak может сделать для приложения электронной коммерции

Используя Riak «из коробки», он может стать хорошим источником контента о товарах, продаваемых в вашем приложении для электронной коммерции (контент, который обычно пишется один раз и читается много раз, является отличным вариантом использования Riak), но с сохранением:

  • подсчитайте, сколько предметов осталось
  • деньги на счету пользователя

Требуется осторожное обращение в распределенном хранилище данных.


Реализация согласованности в потенциально согласованном хранилище данных

Есть несколько методов, которые вы можете использовать, они включают в себя:

  • Реализуйте метод сериализации при записи обновлений значений, которые должны быть согласованными (т. е. пройти через единую/контролируемую службу, которая гарантирует последовательное обновление только одного элемента), это нужно будет сделать вне Riak в вашем API. слой

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

На уровне корзины вы можете выбрать, сколько копий данных вы хотите хранить в своем кластере (N или n_val), сколько копий вы хотите считывать за один раз (R или r) и сколько копий должно храниться в вашем кластере. быть записано, чтобы считаться успешным (W или w).

Важное примечание. Во всех этих системах хранения данных (распределенных или нет) вы обычно будете делать следующее:

  1. Прочитать текущие данные
  2. Принять решение на основе текущего значения
  3. Изменить данные (уменьшить количество элементов)

Если все три вышеперечисленных действия нельзя выполнить атомарно (путем блокировки или сбоя третьего, если значение было изменено чем-то другим), приложение электронной коммерции открыто для злоупотреблений. Эта проблема существует в традиционных решениях для хранения SQL (именно поэтому у вас есть транзакции SQL).

04.11.2015
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

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

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]