Ми переносимо базу даних з MySQL на MongoDB з міркувань продуктивності та розглядаємо, що використовувати для ідентифікаторів документів MongoDB. Ми дискутуємо між використанням ObjectID, що є за замовчуванням MongoDB, або використанням UUID (замість цього ми використовували до цього часу в MySQL). Наразі аргументами, які ми маємо підтримати будь-який із цих варіантів, є такі:
ObjectIDs: ObjectIDs - це за замовчуванням MongoDB, і я припускаю (хоча я не впевнений), що це з якоїсь причини, тобто, я сподіваюся, що MongoDB може обробляти їх ефективніше, ніж UUID, або має іншу причину віддавати їм перевагу. Я також знайшов цю відповідь stackoverflow, в якій згадується, що використання ObjectID робить індексацію більш ефективною, однак було б непогано мати деякі показники щодо того, наскільки ця "більш ефективна".
UUID: Наш основний аргумент на користь використання UUID (і це досить важливий) полягає в тому, що вони так чи інакше підтримуються практично будь-якою базою даних. Це означає, що якщо якимось чином буде вирішено перейти з MongoDB на щось інше з будь-якої причини, і ми вже маємо API, який отримує документи з БД на основі їх ідентифікаторів, для клієнтів цього API нічого не змінюється, оскільки ідентифікатори можуть продовжуватись щоб бути абсолютно однаковим. Якби ми використовували ObjectID, я не впевнений, як би ми перенесли їх в іншу БД.
Хтось має уявлення про те, чи може один із цих варіантів бути кращим за інший і чому? Ви коли-небудь використовували UUID в MongoDB замість ObjectID, і якщо так, то з якими перевагами / проблемами ви зіткнулися?