Czy można używać wartości UUID jako klucza podstawowego w SQLite? Znajduję bardzo ograniczone informacje na ten temat, więc nie jestem pewien, czy SQLite obsługuje typ danych UUID. Czy powinienem zapisywać UUID jako ciąg?Używanie identyfikatorów UUID w SQLite
Odpowiedz
SQLite pozwala używać dowolnego data type jako klucza podstawowego.
Identyfikatory UUID można przechowywać jako ciągi znaków (czytelne dla człowieka) lub jako 16-bajtowe obiekty BLOB (które mogą być szybsze, jeśli rekordy są tak małe, że różnica ma znaczenie).
Odpowiedź CL jest prawidłowa, ale rodzaj spódnic stanowi problem. Jak wspomniano, kolumna (lub wiele kolumn) dowolnego typu może być użyta jako klucz podstawowy. Tak więc możesz przechowywać przechowywać UUID w sformatowanym, czytelny dla człowieka formacie ciąg i sprawiają, że klucz tabeli. A ponieważ UUID jest tylko 128-bitową liczbą całkowitą, można również przechowywać bajty liczby całkowitej jako BLOB, co jak sądzę byłoby nieco szybsze.
Ale, aby bardziej bezpośrednio odpowiedzieć, co uważam za pytanie, nie, SQLite ma , a nie ma żadnych funkcji, które bezpośrednio obsługują UUID. SQLite używa zadeklarowanego typu kolumny, aby określić, który z pięciu podstawowych storage classes (integer, real, text, blob lub null) użyje. Ale deklarowany typ kolumny jest zignorowany. Tak więc nie ma typów kolumn specyficznych dla UUID ani klas przechowywania. Nie wydaje się też, aby dostępna była jakakolwiek konwersja functions na sformatowany ciąg UUID. Aby otrzymać bajty UUID, będziesz chciał zobaczyć, jakie metody są dostępne w języku, w którym napisana jest twoja aplikacja. Przykładowo, klasa Java UUID lub Apple NSUUID.
Nie jestem pewien używając go jako domyślnego pola, ale jeśli ktoś potrzebuje wygenerować unikalną wartość w sqlite zapytania następującym podejściu suggested here można stosować:
randomblob funkcja (N) zwraca N-bajtowy blob zawierający pseudo -random bajtów. Jeśli N jest mniejsze niż 1, zwracany jest 1-bajtowy przypadkowy obszar blob. wskazówka: aplikacje mogą generować globalnie unikalne identyfikatory pomocą tego funkcji razem z heksanem() i/lub dolna(), w następujący sposób:
hex(randomblob(16))
lub
lower(hex(randomblob(16)))
- 1. Używanie identyfikatorów UUID zamiast ObjectID w MongoDB
- 2. Używanie identyfikatorów UUID w mangecie dla referencji ObjectID
- 3. Czy przy korzystaniu z identyfikatorów UUID należy również używać AUTO_INCREMENT?
- 4. Używanie sqlite android w pamięci
- 5. Używanie Ember.Select do ustawiania identyfikatorów asocjacji
- 6. Używanie rozkładówki z duplikatami identyfikatorów dla wierszy
- 7. Używanie Reszta do przechowywania danych w Sqlite
- 8. Używanie bazy danych SQLite w Libgdx
- 9. PostgreSQL Wydajność typu UUID
- 10. Jaki zakres identyfikatorów UUID Bluetooth może być używany dla profili zdefiniowanych przez dostawcę?
- 11. mysql UUID() i java UUID.randomUUID()
- 12. jak używać UUID w Django
- 13. Aby porównać UUID, czy mogę użyć == lub użyć UUID.equals (UUID)?
- 14. python: jak przekonwertować prawidłowy uuid z String na UUID?
- 15. Napisz CBCharacteristic przez UUID
- 16. Biblioteka UUID dla C?
- 17. SecureRandom.uuid vs UUID gem
- 18. UUID ze strukturą Play
- 19. UUID dla DynamoDB?
- 20. UUID jako wartość domyślna w modelu Django
- 21. Usuń #inst i #uuid literały w clojure
- 22. Jak uzyskać UUID urządzenia w ramach
- 23. Jak zmienić UUID w wirtualnym pudełku
- 24. Czy istnieje adnotacja weryfikatora uuid?
- 25. Wybór SQLite z instrukcji LIKE nie działa?
- 26. Migracja małych identyfikatorów parse do normalnych identyfikatorów obiektów MongoDB
- 27. Klucz podstawowy UUID w modelu wymownym jest przechowywany jako uuid, ale zwraca jako 0
- 28. Wydajność długich identyfikatorów
- 29. Jak przechowywać uuid jako numer?
- 30. zainstalować uuid-dev na Heroku
są albo tego rodzaju danych skuteczniejsze niż inne do przechowywania identyfikatorów UUID? –
Dla innych czytników ... odczytywany przez ludzi 36-znakowy ciąg szesnastkowy wygląda następująco: '988097c8-3f9c-4ecf-9d1d-64701bb9764c' –
UUID BLOB vs TEXT ma wpływ na rozmiar pliku, jednak szybkość wstawiania i zapytania dotyczy samo, zobacz http://stackoverflow.com/a/11337522/254109 – xmedeko