Pytanie Jaka jest najlepsza baza danych dla aplikacji pulpitu C #? (BEZ SIECI) [zamknięte]


Co powinienem użyć? Potrzebuję przechowywać dane, a to musi być tylko na komputerze lokalnym. Będę przechowywać wszystkie zmienne łańcuchowe w wielu kolumnach.

Co jest najlepsze? Czy byłaby to nawet baza danych?


12
2018-02-17 01:34


pochodzenie




Odpowiedzi:


Polecam db4o, obiektowy silnik bazy danych. Jest to bardzo proste i nie wymaga żadnego serwera ani instalacji na kliencie. Inną alternatywą może być SQLite. Możesz pobrać dostawcę .NET tutaj.

Edytować

Zobacz samouczek db4o tutaj.


13
2018-02-17 01:39



+1 za wskazanie db4o. Jest znacznie prostszy i bardziej naturalny niż pozostałe, ponieważ nie musisz obsługiwać połączeń i innych rzeczy (tylko obiektów).
I robi się to całkowicie w C #? - Bloodyaugust
brzmi trochę egzotycznie - MedicineMan
@Bloodyaugust - tak, jest. Możesz sprawdzić kod źródłowy na source.db4o.com/db4o/trunk/db4o.net - Fernando


SQL Server Compact 3.5 SP1 nie wymaga instalacji (wystarczy dostarczyć pliki .dll, ale sprawdź umowę licencyjną, jeśli jest to dozwolone) i jest raczej prosta w użyciu.


6
2018-02-17 01:40





Polecam używanie sqlite, to bardzo szybka tylko do plików, wbudowana, bogata w funkcje baza danych. mam lekki ORM z wiązaniami C # to upraszcza i ułatwia dostęp do niego. Tutaj jest prezentacja demo web-service za pomocą sqlite.

Oh yeah db4o to również dobry wybór, który również mam Powiązania bazy danych C # ponieważ obsługuje to automatyczne właściwości C # (jak nie ma domyślnego dostawcy db4o) i inne typowe scenariusze dostępu do danych.


5
2018-02-17 01:42



SQLite. Ręce na dół. - Sky Sanders


Powinieneś spojrzeć na SQLite, jeśli szukasz RDBMS lub czegoś podobnego do MongoDB, jeśli przechowujesz obiekty lub podobne.


3
2018-02-17 01:39





Dlaczego nie SQL Server Express? To nawet za darmo.


2
2018-02-17 01:37



@Downvoter: w czym problem? SQL Server Express nie wymaga ani nawet nie używa sieci. - John Saunders
Nie doceniłem cię, ale istnieje wiele prostszych opcji, które nie wymagają pobierania 84 MB-500 MB i ogromnego rozmiaru. Zapewnia na pewno bardziej niezawodne opcje, ale ta osoba chce tylko utrzymać kilka ciągów. - Chris Conway
Zignorowałem twoją odpowiedź przez pomyłkę; to jest teraz rozwiązane. - Matthew Flaschen
@Chris: dla rekordu 84 MB to tylko baza danych, 172 MB dla narzędzi do zarządzania, 225 MB dla bazy danych i narzędzi do zarządzania, a 515 MB to wszystko, plus zaawansowane usługi (wyszukiwanie pełnotekstowe, Reporting Services). Mówi także o łańcuchach, ale "o garści kolumn". - John Saunders
@John: poprawne, 84 MB to rozmiar samej bazy danych, ale porównaj to z 500 KB i zero instalacji SQLite i widzisz drastyczną różnicę. Wdrażanie staje się również niezwykle łatwe, ponieważ może to być po prostu kopiowanie i wklejanie. W przypadku mnóstwa kolumn SQLite może obsłużyć do 32767 kolumn w jednej tabeli. - Chris Conway


Gorąco polecam sprawdzenie struktury serializacji. Nie jest nawet zbliżony do wydajności bazy danych, ALE, jeśli nie mówisz o dużej ilości danych, to ma o 100% mniej narzutów. Serializowanie obiektów do pliku w .net jest dziecinnie proste:

XmlSerializer serializer = new XmlSerializer(typeof(myObjectType));

using(FileStream stream = new FileStream("file", FileMode.Create, FileAccess.Write)
{
   serializer.Serialize(stream, myObject);        
}

To jest to!

Odczyt jest wręcz przeciwny. LINQ zapewnia jeszcze więcej opcji. Ponownie, nie jest to nawet bliskie db pod względem wydajności, ale widziałem wiele, wiele wdrożeń, w których baza danych była skrajnie przesadna dla ilości przechowywanych danych. Oczywiście, jeśli masz wyraźną potrzebę skalowania, itp., Będziesz chciał to zaplanować. Właściwe narzędzie dla właściwego problemu i tak dalej.


2
2018-02-17 02:01



Czy mógłbyś powiedzieć, że może być 200 obiektów z 10 właściwościami dla każdego serializera? - Bloodyaugust
Znowu zależy to od tego, co robisz, ale myślę, że to rozsądne. Fajnie jest, że (w zależności od tego, co "przełamywanie" zmian można sobie pozwolić) zawsze można przejść do serializatora binarnego, który ma również plusy i minusy. Zalety serializatora binarnego są w dużej mierze zależne od wydajności, a wady są bardziej związane z typem. Wiem, że są ludzie, którzy oczerniają XmlSerializer, ale mam tendencję do używania go, jeśli mogę sobie pozwolić na b / c, na dłuższą metę generalnie napotkasz mniej problemów. Jeszcze jedno - rozważ użycie atrybutów zamiast elementów! - Jeff


Jeśli chcesz tylko przechowywać niewielką ilość danych w dość prostej strukturze i nie będziesz wykonywać żadnych skomplikowanych zapytań, rozważ plik XML. Nie potrzebujesz żadnego dodatkowego oprogramowania i możesz z nim łatwo pracować używając LINQ do XML.


0
2018-02-17 01:50





XML może zamiast Twojego wymagania!


0
2018-02-17 02:04





sprawdzić memcache jeśli chcesz bardzo dużą szybkość. Ale nie zapisują na dysku twardym, więc nadal możesz potrzebować innych wymienionych db, jeśli chcesz przechowywać je w sesjach. W moim projekcie używamy mongodb do buforowania danych i używania memcache do buforowania mongo. Więc najpierw dane będą pobierane z memcache, jeśli nie zostaną znalezione, spróbuj mongo. Jeśli nadal nie zostanie znaleziony, otrzymamy nowe dane.

W przypadku okien i .net spójrz na tutaj


0
2018-04-19 01:43