Обновить

ObjectId против UUID: как выбор _id в MongoDB влияет на API, индексы и миграции

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8K
Всего голосов 4: ↑4 и ↓0+6
Комментарии3

Комментарии 3

Так что делать, если нужен упорядоченный айди внутри без раскрытия метки времени наружу?

В статье как раз есть блок про разделение внутреннего _id и публичного public_id:

Если нужен упорядоченный ID внутри — оставляем его внутренним ключом: ObjectId, UUIDv7 или другой вариант, отсортированный по временной метке, чтобы индексу было удобно.

А наружу отдаём отдельный public_id: случайный UUIDv4 или что-то, что не раскрывает время создания.

ObjectId ценен монотонностью, не размером: timestamp в первых байтах даёт последовательную вставку в B-tree. UUIDv4 фрагментирует индекс, UUIDv7 решает проблему, но миграция болезненна.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации