2009-05-20 10 views
14

sqlite używa czegoś, co autorzy nazywają "Manifest Typing", co w zasadzie oznacza, że ​​sqlite jest wpisywane dynamicznie: Możesz przechowywać wartość varchar w kolumnie "int", jeśli chcesz.Kiedy jest oczywiste, że pisanie w sqlite jest użyteczne?

Jest to interesująca decyzja dotycząca projektu, ale ilekroć używam sqlite, użyłem go jak standardowego RDMS i traktowałem typy tak, jakby były statyczne. Rzeczywiście, nigdy nie życzyłem sobie dynamicznie wpisywanych kolumn podczas projektowania baz danych w innych systemach.

Kiedy ta funkcja jest przydatna? Czy ktokolwiek znalazł w praktyce dobry użytek, który nie mógłby być wykonany równie łatwo przy statycznie wpisywanych kolumnach?

Odpowiedz

5

To naprawdę sprawia, że ​​typy są łatwiejsze w użyciu. Nie musisz się martwić o to, jak duże musi być to pole na poziomie bazy danych, ani jak wiele digetów mogą stanowić internauci. Mniej więcej jest to "dlaczego nie?" rzecz.

Z drugiej strony, pisanie statyczne w SQL Serverze pozwala systemowi wyszukiwać i indeksować lepiej, w niektórych przypadkach znacznie lepiej, ale w przypadku połowy wszystkich aplikacji, wątpię, że poprawa wydajności bazy danych miałaby znaczenie, lub ich wydajność jest " słabe "z innych powodów (tabele tymczasowe są tworzone przy każdym selekcji, wykładniczej wykładni itd.).

Używam SqLite cały czas dla moich projektów .NET jako pamięć podręczną klienta, ponieważ jest zbyt łatwy w użyciu. Teraz, jeśli mogą go używać tylko identyfikatory GUID takie same jak serwer SQL, byłbym szczęśliwym kamperem.

+2

Jest to dobry punkt, na przykład, że pola varchar nie są już ograniczone do pewnej liczby znaków, co zawsze przeszkadza mi w tradycyjnych systemach RDMS. –

+0

Pomyślałem, że oprócz mnie otrzymam przynajmniej kilka innych "odpowiedzi". To tylko kolejny dowód na to, że potrzebujemy więcej SqLite.NET. Jest tak łatwy w użyciu i wdrażaniu w miejscach, w których nie potrzebujesz * SQL Server lub Express. – JasonRShaver

4

Dynamiczne pisanie jest przydatne do przechowywania rzeczy, takich jak ustawienia konfiguracji. Weź na przykład Rejestr systemu Windows. Każdy klucz jest bardzo podobny do posiadania tabeli SQLite w postaci:

STWÓRZ TABELĘ Ustawienia (Nazwa TEKSTOWY KLUCZ GŁÓWNY, Wartość);

gdzie wartość może mieć wartość NULL (REG_NONE) lub INTEGER (REG_DWORD/REG_QWORD), TEXT (REG_SZ) lub BLOB (REG_BINARY).

Muszę również zgodzić się z Jasonami na temat przydatności braku wymuszania maksymalnego rozmiaru dla ciągów. Przez większość czasu limity są czysto arbitralne i możesz liczyć, że pewnego dnia znajdziesz ciąg 32-bajtowy, który musi być przechowywany w VARCHAR (30).

Powiązane problemy