В настоящее время я работаю с Кассандрой, и я могу помочь с несколькими плюсами и минусами.
Требования
Cassandra легко справится с этими тремя требованиями. Он был разработан для быстрого чтения и записи. Фактически, Cassandra отлично справляется с записью, в основном потому, что вы можете писать, не выполняя чтения.
Кроме того, Cassandra хранит некоторые данные в памяти, так что вы даже можете избежать вторичной базы данных.
Последовательность
В Cassandra вы выбираете согласованность в каждом запросе, который вы делаете, поэтому вы можете иметь согласованные данные, если хотите. Обычно вы используете:
ОДИН - только один узел должен получить или принять изменение. Это означает быстрое чтение / запись, но низкую согласованность (у вас может быть другая машина, доставляющая старую информацию, в то время как согласованность не была достигнута).
КВОРУМ - 51% ваших узлов должны получить или принять изменение. Это означает, что чтение и запись не будут такими быстрыми, но вы получите ПОЛНУЮ согласованность, ЕСЛИ вы используете ее в ОБЕИХ операциях чтения и записи. Это потому, что если более половины ваших узлов имеют ваши данные после того, как вы вставили / обновили / удалили, то при чтении с более чем половины ваших узлов по крайней мере один узел будет иметь самую последнюю информацию, которая будет той, которая будет доставлена. .
Оба эти варианта рекомендуются, поскольку они позволяют избежать единой точки отказа. Если бы все машины должны были принять, если бы один узел не работал или был занят, вы не смогли бы запросить.
Плюсы
Cassandra - это решение для повышения производительности, линейной масштабируемости и предотвращения единичных точек отказа (вы можете отключить машины, другие возьмут на себя работу). И большую часть своей работы по управлению он выполняет автоматически. Вам не нужно управлять распределением данных, репликацией и т. Д.
Минусы
Минусы Cassandra заключаются в моделировании и запросах.
С помощью реляционной базы данных вы моделируете сущности и отношения между ними. Обычно вас не волнует, какие запросы будут сделаны, и вы работаете над их нормализацией.
У Кассандры другая стратегия. Вы моделируете таблицы для обслуживания запросов. И это происходит потому, что вы не можете присоединиться и не можете фильтровать данные как хотите (только по их первичному ключу). Итак, если у вас есть база данных для компании с продуктовыми магазинами, и вы хотите сделать запрос, который возвращает все продукты определенного магазина (например, Нью-Йорк), и другой запрос, чтобы вернуть все продукты определенного отдела (например. : Computers), у вас будет две таблицы ProductsByStore и ProductsByDepartment с одинаковыми данными, но по-разному организованы для обслуживания запроса.
Материализованные представления могут помочь в этом, избегая необходимости изменять в нескольких таблицах, но они должны показать, как все работает по-другому с Cassandra.
Денормализация также распространена в Cassandra по той же причине: производительность.
person
Edu
schedule
19.09.2017