Schnelle Frage: Wenn ich in ArangoDB einen eindeutigen Index (zum Beispiel einen eindeutigen Hash-Index) erzeuge, validiert ArangoDB die Eindeutigkeit dieses Attributs oder nimmt es einfach an, weil ich ihm gesagt habe, dass es einzigartig ist? Ich bin neugierig, ob ich einen Validierungsschritt durchführen sollte, um die Eindeutigkeit meiner Daten zu überprüfen, bevor ich eindeutige Indizes erstelle.ArangoDB Unique Index Validation
0
A
Antwort
3
Wie Sie wissen, baut ArangoDB die Indizes auf, bevor Sie sie verwenden können.
127.0.0.1:[email protected]_system> c = db._create("c")
[ArangoCollection 169, "c" (type document, status loaded)]
127.0.0.1:[email protected]_system> c.insert({"abc":1})
{
"_id" : "c/172",
"_key" : "172",
"_rev" : "_T1m73_m---"
}
127.0.0.1:[email protected]_system> c.insert({"abc":1})
{
"_id" : "c/176",
"_key" : "176",
"_rev" : "_T1m748K---"
}
127.0.0.1:[email protected]_system> c.ensureIndex(
...> {"type":"hash","unique":true,"fields":["abc"]})
JavaScript exception in file '.../arangosh.js' at 97,7:
ArangoError 1210: unique constraint violated
! throw error;
! ^
stacktrace: ArangoError: unique constraint violated
at Object.exports.checkRequestResult (.../arangosh.js:95:21)
at ArangoCollection.ensureIndex (.../arango-collection.js:733:12)
at <shell command>:1:3
127.0.0.1:[email protected]_system> c.ensureIndex(
...> {"type":"skiplist","unique":true,"fields":["abc"]})
JavaScript exception in file '.../arangosh.js' at 97,7:
ArangoError 1210: unique constraint violated
! throw error;
! ^
stacktrace: ArangoError: unique constraint violated
at Object.exports.checkRequestResult (.../arangosh.js:95:21)
at ArangoCollection.ensureIndex (.../arango-collection.js:733:12)
at <shell command>:1:3
ähnlich, was es tut, wenn Sie versuchen, ein Dokument einzufügen, das die eindeutige Einschränkung verletzt: Wenn es die Eindeutigkeit gewährleisten fehlschlägt, wird eine Ausnahme werfen
127.0.0.1:[email protected]_system> db._drop("c")
127.0.0.1:[email protected]_system> c = db._create("c")
[ArangoCollection 315, "c" (type document, status loaded)]
127.0.0.1:[email protected]_system> c.ensureIndex({
...>"type":"skiplist","unique":true,"fields":["abc"]})
{
"id" : "c/318",
"type" : "skiplist",
"fields" : [
"abc"
],
"unique" : true,
"sparse" : false,
"isNewlyCreated" : true,
"code" : 201
}
127.0.0.1:[email protected]_system> c.insert({"abc":1})
{
"_id" : "c/330",
"_key" : "330",
"_rev" : "_T1n-B2S---"
}
127.0.0.1:[email protected]_system> c.insert({"abc":1})
JavaScript exception in file '.../arangosh.js' at 97,7:
ArangoError 1210: cannot create document, unique constraint violated
! throw error;
! ^
stacktrace: ArangoError: cannot create document, unique constraint violated
at Object.exports.checkRequestResult (.../arangosh.js:95:21)
at ArangoCollection.save.ArangoCollection.insert
(.../arango-collection.js:978:14)
at <shell command>:1:3
, wenn Sie also Fügen Sie Ihre Dokumente während des Setups Ihrer Anwendung ein, bevor Sie den Index erstellen (aus Performancegründen ein praktikabler Ansatz). Sie müssen beim Erstellen dieser Indizes mögliche Ausnahmen behandeln.
Verwandte Themen
- 1. Unique Geo Index ArangoDB
- 2. JPA Unique Umbenennung Unique Index
- 3. Unique Constraint vs Unique Index
- 4. yii2 Unique Validation (non-ajax) funktioniert nicht
- 5. unique mit Index
- 6. definieren Geo-Index in ArangoDB
- 7. PostgreSQL UNIQUE Index nicht eindeutig?
- 8. Unique und Index in MongooseJS?
- 9. Merge mit Unique gefilterten Index
- 10. MySQL: Unique und Index Äquivalenz
- 11. Unique vs nicht eindeutigen Index
- 12. Unique Index mit komplizierten Zustand
- 13. Sperre Timeout beim Index in ArangoDB Erstellung
- 14. Laravel - Unique Validation mit mehreren Spalten und ungleich
- 15. Laravel 5.2 Unique Validation immer ungültig auf UPDATE
- 16. laravel brauche ich index() auf unique() spalte?
- 17. Maximale Größe des UNIQUE Index in MySQL
- 18. Wie definiert man einen Index in ArangoDB FOXX?
- 19. Mehrere NULL-Werte in Spalte mit UNIQUE-Index
- 20. Kann Unique Index auf Loopback nicht automatisch migrieren()
- 21. Ist der Sql Server Unique Key auch ein Index?
- 22. MySql Unique Index wie eine angemessene Antwort zu generieren?
- 23. ArangoDB geospatial Array
- 24. Validation Redux
- 25. Unterschied zwischen UNIQUE und UNIQUE KEY mySQL
- 26. Objekt der Klasse Illuminate \ Validation \ Rules \ Unique konnte nicht in int
- 27. Mongoose - Unabhängige UNIQUE-Einschränkungen
- 28. mysql - drop unique constraint
- 29. Laravel Validation - Eindeutiger Benutzername
- 30. Return Array von Unique Elements
Danke! Das beantwortet meine Frage. Da Sie die Leistung des Hinzufügens von Daten nach dem Erstellen des Index aufrufen, gibt es eine Möglichkeit, die Indizierung während einer Einfügung vorübergehend zu deaktivieren und dann den Index am Ende zu aktualisieren? Ich nehme an, dies verletzt ACID, aber damit bin ich einverstanden. Ich muss eine große Anzahl von Kanten einfügen. Das Erstellen der Beziehungsdefinitionen selbst würde sehr von der Indizierung profitieren (sehr große Viele-zu-Viele-Joins), aber die Einfügeoperation wird durch Indizierung erheblich verlangsamt, wodurch der Leistungsvorteil eliminiert wird. –