А у вас будет zero performance when server down.tessob wrote: 30 Apr 2018 12:37Пример вполне корректный. Мы же про реальную жизнь тут говорим. Представьте, что таким образом я хочу собирать чеки пробитые на кассах. Там еще и бумажка с ИД появится. Случаи, когда в одну табличку пишется одна строчка - скорее экзотика.Vladimir Kr. wrote: 29 Apr 2018 16:23Извините, но вы смешали все в кучу: создание записи, ее изменение, связь с 3rd party на грязных данных, отсустствие синхронизации за вменяемое время, да еще и отсутствие шардинга.
У вас в обоих случаях будет проигрыш в производительности в сравнении с единственным мастером. Кроме того мне не очень понятно как вы заблокируете другие потоки на запись. Просто представьте, что два клиента параллельно выполнили все проверки и фиганули свои записи на разные сервера с одинаковым ключом. У Вас тут будут те же проблемы с "гонкой", что и в многопоточном программировании. Только в сравнении с многопоточным программированием у вас нет единой среды выполнения.Vladimir Kr. wrote: 29 Apr 2018 16:23Но правильнее всего, это использовать 2й способ - XA transaction (двухфазный коммит) или 3й способ.
Сори, но мы говорим на разных языках. Please google and understand first: DB transactions, XA (two phase commit), sharding (aka partitioning). и как решают у DB проблемы с "гонкой".
Мои поинт был в том, чтобы (a): показать, что решение существует, (b): спросить про реализацию, если кто знает.