Mam aplikację WCF, która obecnie używa przechowywania plików na bazie XML do przechowywania danych, które przyzwyczaja się do generowania raportów. Poza tym decyzje dotyczące przetwarzania są podejmowane na podstawie informacji przechowywanych w tych plikach XML.Wszelkie uwagi przed skokiem do SQLite?
Uderzam teraz w objętości około 30 000 plików tekstowych. Jest to niewiarygodnie podatkowe, a aplikacja czasami się zatrzymuje.
Zawsze chciałem zamienić XML DAL na korzyść RDBMS, ale menedżerowie projektów po prostu na to nie pozwalają. Ale byliby skłonni spojrzeć na rozwiązanie bezserwerowe, na przykład SQLLite. Naprawdę mam ochotę po prostu zanurkować i zacząć używać go jako zamiennik DAL (warstwa dostępu do danych).
Potrzebowałbym nie więcej niż około 20 tabel w całym rozwiązaniu, a spodziewałbym się, że nie będzie więcej niż około 20 000 - 100 000 transakcji dziennie, jednak jest to ekstremalne, rzeczywiste wolumeny byłyby mniejsze niż to w większości przypadków.
Aktualizacja
ja nie spodziewałem się wiele jednoczesnych połączeń, kiedy mówię transakcji, to w istocie oznaczać 1 lub 2 klientów, które sprawiają, połączeń i realizują przeciwko bazy danych w porządku. Czasami istnieje możliwość, że klienci zewnętrzni będą wykonywać szybkie połączenia z bazą danych. Ale większość połączeń DB będzie wykonywana przez moją usługę WCF, która jest zaplanowanym zadaniem wstecznym, nie obsługującym 100-stu osób w organizacji.
Kolejną zaletą jest to, że muszę przechowywać dane tylko przez 90 dni, więc baza danych nie powinna rosnąć zbyt duża.
Moje główne problemy to:
Jak wiarygodny jest SQLLite? Co się stanie, jeśli plik DB zostanie uszkodzony, stracę wszystkie dane przetwarzania. Jak łatwo jest utworzyć kopię zapasową DB? Czy obsłuży moje tomy? I na koniec, jak dobrze działa dostawca .net (tutaj: http://sourceforge.net/projects/sqlite-dotnet2/).
Jeśli masz jakieś doświadczenie z SQLLite, opublikuj swoje doświadczenia, aby móc podjąć świadomą decyzję o zmianie.
góry dzięki ...
Pozwólcie, że zmienię moje pytanie. –
Dobrze, sqlite nie obsługuje wielu użytkowników próbujących uzyskać do niego dostęp jednocześnie, ale dopóki jest to monolityczny magazyn danych używany przez jedną aplikację na raz, działa świetnie. – Karl
@Karl obsługuje równoczesny dostęp do różnych procesów, nawet z różnych systemów, i obsługuje transakcje, co jest najlepszym sposobem na zarządzanie blokowaniem. Jest zgodny z ACID. Ponieważ jednak cała baza danych jest zawarta w jednym pliku i blokuje się na poziomie pliku, czytniki blokują oczekujące zapisy i zapisują blok do momentu zakończenia odczytu. –