У меня есть клиенты и исполнители в системе. Заказчик может создать задачу, которую должны выполнять исполнители.
Основная проблема заключается в том, что я должен обеспечить масштабируемость и согласованность в системе. И я должен разработать эту базу данных в случае, когда каждая таблица лежит на выделенном сервере (поэтому я не могу делать какие-либо транзакции и соединения между этими таблицами).
Я думаю, что было бы неплохо хранить операции в одной таблице (назовем ее таблицей операций), такой как Создать задачу, Выполнить задачу, Удалить задачу, Платить в а также Выплата и каждое действие пользователя, которое взаимодействует с деньгами (потому что создает задачу, блокирует некоторые деньги на его счете), будет сохранено в этой таблице.
И, конечно же, мы должны дать ответы на список задач со смещением и текущее количество денег на аккаунт пользователя. Для этих двух типов запросов я думаю, что мы должны создать какие-то кеширующие таблицы, и главная слабость этой схемы в том, что для каждого запроса таблица задач и каждый запрос на счет пользователя деньги мы должны выбрать последнее добавленное в таблицу операций для обновления на случай, если мы что-то потеряли
Я прав в дизайне базы данных?
Существуют ли другие методы, которые помогают избежать непоследовательного состояния распределенной базы данных?
Если ваши таблицы настолько велики, что каждая из них должна находиться на своем собственном сервере, это One Big Database. Это могло бы конкурировать с чем-либо, что могло бы иметь АНБ.
Вы можете попасть туда когда-нибудь. Но в то же время, по крайней мере, начнем с 99,99% баз данных.
Если у вас не может быть транзакций и соединений между таблицами, у вас также не может быть обычных функций, таких как ограничения внешнего ключа. В растущей базе данных это означает катастрофу. Для любой базы данных, какой бы маленькой или большой она ни была, основным принципом, который нельзя игнорировать, является целостность данных. Если вы не можете сохранить это, вы получите много данных и очень мало информации.
Других решений пока нет …