Zanim zadam pytanie, pozwól mi najpierw opisać swoje przemyślenia na temat SQLite.
Zdarza mi się lubić narzędzia, które są małe, szybkie i, co ważniejsze, mają tylko naprawdę niezbędną funkcjonalność. Dlatego lubię SQLite i trochę mniej MS-SQL.
Na przykład: MS-SQL może mieć znacznie większą funkcjonalność, skalowalność itp. Itd., Ale może być również trudny do zainstalowania, jeśli masz pecha. Oczywiście nie twierdzę, że trudna instalacja jest powodem, aby nie wybierać konkretnej bazy danych.
Nie zrozum mnie źle: MS-SQL jest produktem wysokiej jakości. Mam duże doświadczenie z MS-SQL; Bardzo dobrze rozumiem ten produkt jako profesjonalista. Po prostu wolę go mniej w pewnych okolicznościach, w których nie jest tak naprawdę potrzebny (= niewielu użytkowników, <10-15).
Ile funkcji bazy danych naprawdę używasz? Z mojego doświadczenia wynika, że często jest to zwykły SQL (SELECT, INSERT i UPDATE).
Lubię SQLite. Fascynuje szybko. „Instalacja” jest niezwykle łatwa. Myślę, że SQLite może zrobić więcej, niż twierdzi. Dlaczego warto go używać tylko do aplikacji jednoprocesowych / dla pojedynczego użytkownika? W końcu: niewiele aplikacji stale uzyskuje dostęp do bazy danych.
Na przykład: rozważ aplikację ERP z, powiedzmy, 15 użytkownikami. Dlaczego nie można do tego użyć SQLite? Spójrzmy prawdzie w oczy: z mojego doświadczenia zawodowego użytkownicy tego typu aplikacji będą uzyskiwać dostęp do bazy danych przez około 5-10% całkowitego czasu korzystania z aplikacji. W pozostałych 90–95% po prostu oglądają informacje na ekranie, wprowadzają dane w siatce / formie, a kiedy zapisują swoje dane, nie przekracza to 1 sekundy czasu bazy danych. Fe: 1,5 minuty czasu wejściowego vs. 1 sekunda czasu oszczędzania.
Jeśli plik bazy danych SQLite jest zablokowany podczas „oszczędzania czasu”, inni użytkownicy, którzy potrzebują dostępu do bazy danych, po prostu czekają, ale nie zauważają tego, ponieważ czas oczekiwania będzie bardzo krótki (niezauważalny). W kodzie wystarczy poradzić sobie z możliwym „zajętym” czasem bazy danych, aby uniknąć wyjątków, ale nie jest to trudne.
Jakiś facet, który musi myśleć tak samo jak ja, zbudował nawet rozwiązanie klient-serwer dla SQLite: SQLitening . To mnie bardziej przekonało, że sam siebie nie oszukuję.
Oczywiście istnieją aplikacje intensywnie korzystające z baz danych, w których SQLite nie pasuje. Ale jak teraz o tym myślę, wiele aplikacji dla wielu użytkowników, jeśli nie przekracza 15 użytkowników, powinno dobrze działać z SQLite.
Wielu naszych klientów nie wydaje dużo na sprzęt, więc często spotykam się z jednym serwerem ze wszystkim na nim (Exchange, SQL (s), klienci itp.) I z tego powodu są prawie „bez tchu”. Gdybym mógł dostarczyć produkt, który nie ma wysokich wymagań systemowych, mój klient byłby zadowolony. SQLite nie dodaje żadnej wagi (przynajmniej niewiele), MS-SQL robi. Nie wybrałbym więc SQLite, ponieważ jest darmowy, tani lub łatwy w instalacji. Wybrałbym to ze względów praktycznych / technicznych.
FYI: W moim zawodzie sprzedajemy produkty (niestandardowe i standardowe, głównie związane z ERP) klientom, z których średnio nie będzie korzystało więcej niż 5-6 osób. Istnieją pewne wyjątki, ale nie więcej niż 10-15 użytkowników.
Pytanie brzmi: czy mam rację sądząc, że mogę używać SQLite do niektórych aplikacji dla wielu użytkowników, takich jak opisany przeze mnie przykład? Czy są jakieś wady techniczne, o których powinienem wiedzieć? Jakie są twoje doświadczenia (negatywne lub pozytywne), które pomogą mi dokonać właściwego wyboru?
Aktualizacja: nie postrzegaj tego jako negatywnej oceny innych baz danych. W większości są to dobre produkty. Po prostu dzielę się swoimi przemyśleniami tutaj i jestem zainteresowany twoimi opiniami na ten temat.