Jaki jest dobry wybór bazy danych dla małej aplikacji .NET? [Zamknięte]

180

Tworzę małą aplikację z C # w .NET i chcę mieć małą, lekką bazę danych, która nie zużywa dużo zasobów.

Czy możesz wymienić niektóre z najbardziej znanych lekkich programów baz danych .

ePezhman
źródło
1
linqdb
ren

Odpowiedzi:

192

14/06/2016 Tak ... wciąż zyskuje głosy: - /


17.03.2014 Nadal otrzymuję za to głosowanie, pamiętaj o dacie, na którą pierwotnie udzielono odpowiedzi. Chociaż trzy główne wymienione elementy są nadal w pełni opłacalne, lista będzie miała tendencję do starzenia się. Istnieją inne technologie baz danych, których nie ma na liście.


Masz kilka natychmiast rozpoznawalnych i bezpłatnych opcji:

Pobieranie SQL Server Compact jest dostarczane z dostawcą ADO.NET, do którego należy odwoływać się w kodzie. Pobieranie SQLite może go nie mieć, więc tutaj jest link:

http://sqlite.phxsoftware.com/

Wszystkie trzy używają SQL, choć prawdopodobnie z kilkoma ograniczeniami / dziwactwami. Management Studio współpracuje z Compact i LocalDB, natomiast z SQLite potrzebujesz innego narzędzia interfejsu użytkownika, takiego jak SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

Istnieją alternatywy NoSQL, takie jak:

Osobiście unikałbym używania MS Access w obliczu innych bezpłatnych opcji. Nie możesz się pomylić z LocalDB, Compact lub SQLite. Wszystkie są uroczymi małymi bazami danych, które działają stosunkowo szybko w małej ilości pamięci RAM - osobiście preferuję aspekty religijne związane z lubieniem produktu Microsoft :-)

Korzystam z programowania Sterling dla systemu Windows Phone, ponieważ jest on zbudowany do korzystania z magazynu izolowanego. Widziałem tylko artykuły na temat RavenDb, ale mogę powiedzieć, że jest to platforma do przechowywania dokumentów oparta na JSON.

Aby nie pomylić sytuacji (przejdź do SQLite, SQL Server Express LocalDB lub SQL Server Compact Edition), ale istnieją inne osadzone / lokalne bazy danych, niektóre są relacyjne, inne są zorientowane obiektowo:

Nie wszystkie z nich są bezpłatne. Obsługa SQL / LINQ / in-proc różni się między sobą. Ta lista jest tylko dla ciekawości.

Teraz jest też karvonite , jednak link do galerii kodów jest zepsuty. Kiedy znów będzie na żywo, przyjrzę się temu rozwojowi WP7.

Adam Houldsworth
źródło
11
+1 dla SQL Server CE. Zamiast instalować serwer SQL wraz z aplikacją, możesz po prostu użyć bibliotek DLL programu SQL Server CE i mieć plik bazy danych w katalogu roboczym aplikacji. Prosty.
Phil
2
RavenDB jest rzeczywiście bazą danych dokumentów, ale jego interfejs API jest znacznie potężniejszy niż proste pary nazwa i wartość. Problem polega na tym, że nie jest darmowy dla projektów komercyjnych na wypadek, gdybyś szukał darmowych alternatyw.
JCallico
@JCallico Przyznaję, że trochę uogólniam to streszczenie, ale wątpię, czy ktokolwiek przyjąłby to, co powiedziałem, jako ewangelię.
Adam Houldsworth,
@Brendan Long, nie ma implementacji SQL, która mogłaby powiedzieć, że jest w 100% standardowa.
Pop Catalin
1
Zamiast pozostawiać małą trudną do odczytania wiadomość na górze odpowiedzi, która wyjaśnia, że ​​informacje są nieaktualne. Może być łatwiej po prostu zaktualizować i / lub dołączyć do swojej odpowiedzi oraz podać przykłady dostępnych opcji.
James Shaw
58

Polecam SQLite . Używamy go do prawie wszystkich aplikacji, które tworzymy tam, gdzie pracuję.

Jest mały i kompaktowy. Wymaga biblioteki DLL znajdującej się w katalogu aplikacji, ale nie trzeba instalować innego oprogramowania, takiego jak Access lub SQL Server. Ponadto, jak stwierdził danielkza poniżej, „SQLite jest własnością publiczną, więc nie musisz się martwić o licencje”. To naprawdę może zrobić dużą różnicę.

Możesz użyć System.Data.SQLite lub csharp-sqlite, aby uzyskać do niego dostęp w aplikacji C # przy użyciu tych samych metod, jak SQL lub OleDB.

Będziesz także potrzebować aplikacji do edycji / zarządzania bazą danych. Moim zdaniem najlepszy jest SQLite Studio . Oto kilka innych:
Administrator
SQLite SQLite 2009 Pro (na dole strony)
Aktualizacja - 25.07.11 - Więcej aplikacji SQLite (pytanie tutaj na SO)

Oto więcej na temat SQLite:
SQLite na Wikipedii
Firmy używające SQLite

Funkcje niestandardowe: Dodatkowo, jeśli szukasz funkcji SQLite Core i nie widzisz takiej, którą lubisz, możesz tworzyć własne funkcje niestandardowe. Oto kilka przykładów:
Z przykładu SO
Anoter

Mike Webb
źródło
8
Jeden dodatek: SQLite jest domeną publiczną, więc nie musisz się martwić o licencje.
danielkza
@MikeWebb Czy Sqlite będzie działać z aplikacjami ClickOnce bez potrzeby instalowania dodatkowej usługi czy czegoś takiego? Czy to zadziała, jeśli jest w udziale sieciowym dla wielu współbieżnych użytkowników?
Prokurors
1
@Prokurors - Wszystko, co należy uruchomić SQLite, to plik DLL odpowiadający językowi używanemu w programie (C ++, C # itp.). Nie są wymagane żadne inne usługi ani programy. Powinien także działać w sieci z jednoczesnymi użytkownikami. Mamy kopię uruchomioną na serwerze, na którym pracuję i działa świetnie. Więcej informacji na temat współbieżności można znaleźć tutaj: sqlite.org/lockingv3.html
Mike Webb
10

Osadzony Firebird może być dobrym wyborem

Wersja osadzona to niesamowita odmiana serwera. Jest to w pełni funkcjonalny serwer Firebird spakowany w zaledwie kilku plikach. Jest bardzo łatwy do wdrożenia, ponieważ nie ma potrzeby instalowania serwera.

Istnieje kilka bardzo dobrych sterowników sieci kropkowej

Hugues Van Landeghem
źródło
8

SQL Server Compact, jeśli chcesz korzystać z oficjalnego rozwiązania Microsoft. Ma to tę zaletę, że można użyć replikacji z serwerem SQL, jeśli tego potrzebujesz.

SQLite, jeśli chcesz coś bardzo prostego, małego i darmowego. To właśnie wykorzystuje Android w swoich wewnętrznych bazach danych, więc jest bardzo dobrze obsługiwany i dostępne są bardzo dobre powiązania .NET.

Jedną wyraźną zaletą SQLite jest to, że jest on wieloplatformowy. Więc jeśli chcesz przenieść swoją aplikację do Mono.NET, nie będziesz musiał wprowadzać żadnych modyfikacji w implementacji bazy danych.

Nie podoba mi się MS Access dla tego rozwiązania, ale wiele osób włączyło go do swojej odpowiedzi. Jest ograniczony ze względu na zastrzeżony format i zależność od platformy. Ma jednak swoje zalety. Możesz łatwo manipulować danymi, jeśli masz kopię MS Access, możesz tworzyć zapytania graficznie i tworzyć makra. Możesz łatwo zintegrować go z resztą MS Office.

Ze wszystkich tych SQLite byłbym moim zaleceniem, ponieważ jest tak kompaktowy, dobrze udokumentowany i wspierany przez rosnącą armię innych programistów bez względu na platformę.

EDYTOWAĆ

Uświadomiłem sobie, że istnieje inna opcja, o której wszyscy tutaj zapomnieli

Tak długo, jak nie potrzebujesz tabel relacyjnych, możesz użyć pliku CSV odczytywanego jako zestaw danych przez ADO.NET. (Więcej sugestii Lulz niż cokolwiek innego, ale byłoby odpowiednie w niektórych przypadkach i nie wymaga dodatkowych bibliotek do wdrożenia MS.

Moog
źródło
8

Jeśli budujesz projekt z .NET 4.0.2 lub nowszym i chcesz obsługiwać wbudowaną bazę danych, rozważ SQL Server Express LocalDB .

Jest to stosunkowo nowy dodatek do rodziny Express, który cechuje się mniejszą instalacją i mniejszym nakładem zarządzania (w porównaniu z innymi edycjami Express), ale zachowuje aspekty programistyczne SQL Server. Oznacza to, że w przeciwieństwie do Compact Edition, LocalDB nie wymaga instalacji osobnego dostawcy ADO.NET do komunikacji z SQL.

Więcej informacji:

SQL Express v LocalDB v SQL Compact Edition (blogi MSDN)
SQL LocalDB kontra SQL Server CE (przepełnienie stosu)

Robert Mooney
źródło
7

co z http://en.wikipedia.org/wiki/NoSQL_(RDBMS) ?

w szczególności MongoDB dla .Net

http://www.mongodb.org/display/DOCS/Home

nWorx
źródło
1
Lub specjalnie dla .NET, możesz zajrzeć na RavenDB
marc_s
Mongo, choć piękne, nie działa osadzone - musisz uruchomić osobny proces serwera, który może być trochę ciężki dla celów PO.
Mike Woodhouse
Mongodb nie obsługuje sql. pytający chce „gdzie mogę zapisywać i odzyskiwać rekordy za pomocą zapytań Sql”. Co więcej, mongodb jest głodny pamięci. Nie polecam tego w tym przypadku użycia.
Peter Long,
4

Możesz użyć Sql Server Express Editionjako darmowy i jest równie potężny, dopóki nie chcesz funkcjonalności takiej jak mirroringitp. Spójrz na to .

FIre Panda
źródło
8
Pytanie brzmi: „Nie potrzebuję niczego potężnego”. SQL Server Express NIE jest lekką wersją SQL Server. Jest to wersja z ograniczoną wielkością bazy danych i ma duży wpływ na uruchamianie komputera użytkownika w momencie uruchamiania usług. To przesada w przypadku tego pytania. SQL Server Compact jest bardziej odpowiedni.
Moog,
2

Z powodzeniem wykorzystałem db4o.
Oparta na plikach, duża społeczność, prosta w obsłudze.

http://www.db4o.com/

Szczegóły dotyczące licencjonowania

Darmowa ogólna licencja publiczna db4o jest domyślnie licencjonowana na licencji GPL.

Licencja GPL jest idealna, jeśli planujesz używać db4o we własnym zakresie lub planujesz opracowywać i rozpowszechniać własną pracę pochodną jako wolne oprogramowanie również na licencji GPL.

Licencja komercyjna Licencja komercyjna jest wymagana, jeśli chcesz osadzić db4o w komercyjnym produkcie innym niż GPL. Licencjobiorcy komercyjni uzyskują dostęp do usług premium i wsparcia.

Jeremy Gray
źródło
Korzystałem z db4o przez 6 miesięcy w 2012 roku. Jeśli byłby jakiś sposób na uniknięcie problemów z niemożnością dostępu do starych danych po zmianach modelu obiektu, głosowałbym za odpowiedzią. O ile mi wiadomo, trudno zmienić stare dane, jeśli zmienisz swoje obiekty. Podsumowując, zawsze przechowuj kopię zapasową danych w innym miejscu, w innym formacie niż db4o (co zresztą jest dość ogólną zasadą).
Contango
2

Alternatywą, o której nie wspomniano, jeśli nie jest wymagana bezpłatna baza danych, jest VistaDB. To wszystko zarządzany kod, zapewnia mnóstwo funkcji dla wbudowanej bazy danych i oferuje całkiem dobrą wydajność. Całkiem dobry pomost między SQL CE i SQL Server Express, ponieważ większość procedur przechowywanych w VistaDB będzie działać bez modyfikacji w SQL Server Express. W tym momencie jestem również bardzo zadowolony z obsługi klienta. Używam go w pracy. Brak usług do uruchomienia. Pusty DB ma około 1 MB, a DLL jest także dość lekki. Ma dostawców ADO.NET i takie rzeczy. Trochę mi się podobało.

VistaDB

Takielunek
źródło
Cześć! Czy to działa w scenariuszu dla wielu użytkowników? Na przykład czy mogę przechowywać ten VistaDB w udziale sieciowym i uzyskiwać do niego dostęp jednocześnie od wielu użytkowników?
Prokurors
1
Pod tym względem ma ograniczone możliwości. Oczywiście nie może zastąpić prawdziwej bazy danych działającej lokalnym silnikiem db na tym komputerze, ale oferuje kilka opcji transakcyjnych. Planowaliśmy użyć go w tym scenariuszu, ponieważ wydawało się, że poradziłby sobie z tym lepiej niż którakolwiek z bezpłatnych opcji, które napotkaliśmy, a nasi klienci prawdopodobnie nie mieliby specjalistycznej wiedzy, aby skonfigurować serwer SQL lub cokolwiek innego. Oferuje więcej funkcji niż sqlce, ale nie tak bardzo jak pełny serwer sql. To oprogramowanie wysokiej jakości.
Rig
Dziękuję za informację! A ich nowa oczekiwana wersja 5 brzmi bardzo obiecująco. Czy próbowałeś Entity Framework z VistaDB? Może najpierw stworzył plik VistaDB z kodem EF?
Prokurors
1
Zrobiłem to, ale było to około 3-4 lata temu. W tym momencie stwierdziłem, że działa dobrze i to było moje pierwsze doświadczenie EF. Zakładam, że teraz jest lepiej. Jedynym brakiem w tym czasie było to, że niektóre fragmenty dokumentacji były rzadkie, ale było to w trakcie przejścia po tym, jak zostały zakupione przez ich obecnych właścicieli.
Rig
1
PS: Przynajmniej w momencie, gdy go użyłem, byli bardziej niż gotowi dostarczyć licencję demo do użytku. Gorąco polecam wypróbowanie go przed ponoszeniem kosztów licencji.
Rig
1

SQL Server Compact Edition najlepiej, ponieważ jest bezpłatny, lekki i dobrze się integruje

panindra
źródło
0

SQL Server Express lub MS Access

Barry Kaye
źródło