xdmp: random() ist eine 64-Bit-Pseudo-Zufallsgenerator (PRNG) mit den Eigenschaften von solchen, FIPS konformen Implementierung verwendet, wenn verfügbar. Es ist das gleiche wie intern für das Generieren von Dokument- und Fragment-IDs verwendet. In der Praxis können Sie also keine bessere Generierung eindeutiger IDs erzielen. Und das ist etwas, was die meisten Leute zuerst schwer akzeptieren (ich selbst eingeschlossen).
Nun, das ist nicht unbedingt das Gleiche wie das Gewähren in einem bestimmten Kontext und dass Ihre Verwendung von diesem einzigartige URIs generiert (was die ML-Version einer GUID oder eines datenbankweiten Primärschlüssels ist). Um dies zu tun, müssen Sie garantieren, dass die einzige Quelle von URIs die Sie generieren und dass Sie alle 64 Bits voll ausnutzen. Wenn Sie sich selbst beweisen wollen, dass es absolut einzigartig ist, egal was vor sich geht, dann brauchen Sie einen Transaktions-Atomzähler in irgendeiner Form. Das sind leicht gemacht (ein Dokument lesen-update-write-commit von einzelnen gemeinsamen Dokument), aber das ist schrecklich langsam im Maßstab.
Eine andere Alternative, wenn die Daten im Stapel von CSV hochgeladen werden, ist die Verwendung des Versatzes (Zeile oder Zeile #) des Datensatzes als Teil der URL und etwas Einzigartiges über jede Datei, wie der Dateiname.
CSV-Daten selbst enthalten oft eine Spalte oder eine Kombination von Spalten, die einen Primärschlüssel für dieses Dataset darstellen. Das kann auch verwendet werden.
Dank hunterhacker für die Antwort. – RCS
@hunterhacker Das stimmt nicht in allen Fällen richtig. Als Datenbank sollte es möglich sein, eine Sequenz/Zufallszahlen zu generieren. Wie in Mongo DB generiert _id Objekt für jede Einfügung, die einzigartig ist. Ist MarkLogic nicht ähnlich? – DMA
Gibt es eine Möglichkeit, eine Sequenz zuverlässig zu generieren? Absolut! Möchten Sie das für eindeutige IDs tun? Nein. Weil es Overhead für keinen Nutzen bringt, und es gibt viel bessere Chancen, dass Ihr Smart Code einen Fehler hat, als ein großer zufälliger Wert mit einem anderen kollidiert. MongoDB führt keine datenbankinterne Überprüfung durch. Die Mongo_id ist * clientseitig * und "ist ein 12-Byte-Wert, der aus einem 4-Byte-Zeitstempel (Sekunden seit der Epoche), einer 3-Byte-Maschinen-ID, einer 2-Byte-Prozess-ID und einem 3-Byte besteht counter "per http://stackoverflow.com/questions/5817795/how-are-mongodbs-objectids-generated. Setzen Sie Ihre Uhr zurück und viel Glück ... – hunterhacker