Na gebruik van ObjectId
s meerdere keren in RESTful API's zijn gebruikt, is het grootste nadeel eigenlijk dat ze erg luidruchtig zijn in termen van een schone URL. Je laat het ofwel als een HEX-nummer staan, of je converteert het naar een heel groot geheel getal, beide zorgen voor een ietwat onvriendelijke URL:
/rest/resource/52435dbecb970072ec3a780f
/rest/resource/25459211534898951476729247759
Ik heb een "titel" aan de URL toegevoegd (zoals StackOverflow doet) om ze iets vriendelijker te maken:
/rest/resource/52435dbecb970072ec3a780f/FriendlyResourceName
Natuurlijk wordt de "titel" genegeerd in software, maar de gebruiker ziet het en kan het gekke ID-segment mentaal negeren.
Er is heel weinig nuttigs dat kan worden geleerd van de infrastructuur door ze bloot te leggen:
- Tijdstempel
- Machine-ID
- Proces-ID
- Willekeurige oplopende waarde
Behalve het mogelijk verzamelen van computer-ID's (die doorgaans het aantal clients aangeven dat ObjectId
maakt s), is er niet veel.
ObjectId
s zijn niet willekeurig, dus je zou ze niet voor beveiliging kunnen gebruiken. U moet de gegevens altijd beveiligen. Hoewel ze misschien niet op een voor de hand liggende manier toenemen, zou het gemakkelijk zijn om met brute kracht andere bronnen te vinden. Als u echter eerder automatisch oplopende ID's gebruikte, is dit geen nieuw probleem voor u.
Als u weet dat u op een bepaald moment niet veel nieuwe documenten maakt, is het misschien de moeite waard om een van de patronen hier te gebruiken om een eenvoudiger ID te maken. In één app die ik schreef, gebruikte ik een auto-inc-techniek voor sommige document-ID's die in URL's werden weergegeven, en voor degenen die alleen voor Ajax waren, gebruikte ik ObjectId
s. Ik wilde echt dat sommige URL's gemakkelijk konden worden "getypt". Geen vorm van een ObjectId
wordt gemakkelijk getypt door een eindgebruiker. Dat is een van de sterke punten van MongoDB -- dat je elke _id
. kunt gebruiken formaat dat u wilt. :)