(tldr, я думаю, что периодические обновления заставляет таблицу использовать естественный ключ И поэтому я должен перенести свою схему базы данных.).Как создать схему для обработки периодических объемных вставок/обновлений?
У меня есть базы данных производства с таблицей как планет, которые хотя у него есть хорошие потенциальные естественные ключи (например, имена планет, которые никогда не изменяются), в качестве первичного ключа используется типичное добавочное целое число. В таблице планет имеется столбец с саморегуляцией или два, например * parent_planet_id *.
Теперь я создаю офлайн-облачных работников, которые воссоздают подмножества записей планет каждую неделю, и их необходимо интегрировать с основным сервером. Мой план:
- Экземпляр работника имеет мини-версию базы данных (такую же схему, но нет планет записи)
- Раз в неделю, рабочий разжигает, делает всю свою обработку, создает его 100 000 или так что записи планет и экспорт данных. (Я не думаю, что формат экспорта имеет значение для этой конкретной проблемы: может быть mysqldump, yaml и т. Д.)
- Затем производственный сервер импортирует записи: некоторые из них являются новыми, большинство из них - обновлениями.
Этот последний шаг - это то, что я не знаю, как решить. Я не полностью заменяю таблицу планет каждый раз, поэтому проблема заключается в том, что каждая из двух баз данных имеет свои собственные инкрементные целые PK. И поэтому я не могу просто сделать простой импорт.
Я думал об экспорте без столбца id, но потом понял, что столбцы с самосогласованием предотвращают это.
Я вижу два возможных решения:
- перепроектировать схему, чтобы использовать естественный ключ для таблицы планет. Это было бы болью.
- Используйте UUID вместо инкрементирующего целого для ключа. Было бы легче, я думаю, переехать. Идентификатор будет уникальным, и новые строки могут быть безопасно импортированы. Это также позволяет избежать проблем в зависимости от естественных данных в ключах.
Вам понадобится обновить планету, которая уже существует в базе данных «master», или вы всегда будете ВСТАВИТЬ? –
Большинство операций - это обновления ... – Dogweather