#php #mysql #sql #mongodb
#php #mysql #sql #mongodb
Вопрос:
Мы находимся в процессе переноса наших mongodb в MySQL. Большинство наших клиентских приложений и инфраструктуры использует 24-символьный объект mongo id. Сейчас я ищу способ, с помощью которого я могу сгенерировать аналогичную уникальную строку, но в SQL.
Я прочитал на эту тему, и некоторые сообщения предполагают, что невозможно получить тот же идентификатор mongo в sql.
Я знаю, что MongoID состоит из: [4 байта секунд с момента эпохи, 3 байта машинного хэша, 2 байта идентификатора процесса, 3 байта счетчика]
Я думал о написании функции MySQL с именем get_mongo_id(), которая вернет следующее:
ОСТАЛОСЬ (SHA2(UUID(),256),24)
Но я боюсь, что это все равно может привести к дублированию, потому что я использую только первые 24 символа из 64-символьного хэша.
Кто-нибудь сталкивался с подобной проблемой раньше? Любые рекомендации будут оценены.
Комментарии:
1. ну, идентификатор mongo — это значение 12 байт / 96 бит. если вы используете авто_инкрементный bigint (8 байт / 64 бит), mysql вежливо пропустит любые значения, которые уже существуют в БД.конечно, вам придется уменьшить ваши mongoids до 64 бит, чтобы они поместились в это поле bigint, чтобы вы могли использовать auto_increment .
2. @Conrad Может быть, не по теме, но мне любопытно узнать основную причину ухода из MongoDB?
3. Основная причина заключается в реляционных данных. В mongo сложно управлять.
4. Нужно ли переносить данные обратно в mongo? Если нет, то просто используйте автоинкрементное целое число или, если вы действительно мазохист, uuid.
Ответ №1:
Что вы можете сделать, так это использовать строку в качестве первичного ключа и перенести ее. Все должно работать одинаково, потому что MySQL может справиться с этим. Вы боитесь проблем с хранилищем?