Этот вопрос касается NoSQL (например, взять cassandra).Избавление от путаницы в отношении баз данных NoSQL
Верно ли, что при использовании базы данных NoSQL без репликации данных у вас нет проблем с согласованностью? Также не в случае параллелизма доступа?
Что происходит в случае раздела, в котором одна и та же строка была записана в обоих разделах, возможно несколько раз? Когда раздел ушел, какое письменное значение используется?
Предположим, вы используете N = 5 Вт = 3 R = 3. Это означает, что у вас есть гарантированная последовательность? Насколько хорошо использовать этот кворум? Имея 3 узла, возвращающих данные, это не большие накладные расходы?
Можете ли вы указать для каждого запроса в cassandra, хотите ли вы, чтобы запрос имел гарантированную согласованность? Например, вы выполняете запрос вставки, и вы хотите, чтобы все реплики заполнили вставку до того, как значение будет возвращено операцией чтения?
Если у вас есть: сотрудники {PK: employeeID, departmentId, employeeName, birthday} и отдел {PK: departmentID, departmentName}, и вы хотите получить день рождения всех сотрудников с определенным названием отдела. Две проблемы:
- вы не можете попросить всех сотрудников с данным днем рождения (потому что вы можете только запрос по первичному ключу)
- Вы не можете присоединиться к сотруднику и семьи колонки отдел, потому что присоединяется невозможны.
Так что вы можете сделать, это создать семью колонки:
departmentBirthdays {PK: (departmentName, день рождения), [сотрудников-чей-день рождения-это-это]}
В этом случае, когда работник уволен/нанят, его необходимо удалить/добавить в семейство столбцов departmentBirthdays. Этот процесс вам нужно сделать вручную? Итак, вам нужно вручную создавать запросы для обновления всех избыточных/денормализованных данных?