[ dule_ns @ 16.03.2021. 17:14 ] @
Pravim za poznanicu neki mali desktop programčić, između ostalog trebala bi mi i baza, ništa veliko, desetak tabela, max par hiljada slogova u najvecoj tabeli. Ništa ne bi išlo preko mreže, sve na istom kompu. Naravno da baza bude besplatna :)

Neki predlog šta mi je najzgodnije da odradim u c#?
[ Branimir Maksimovic @ 16.03.2021. 17:55 ] @
mysql
[ djoka_l @ 16.03.2021. 18:22 ] @
Zavisi od toga na šta si navikao. Za tako malu bazu dolaze u obzir i SQL Server Express i Oracle XE koje su besplatne u ovim varijantama.
Kao što Branko reče, MySql je isto dobar izbor, kao i PostgreSQL.

Možda je SQL Server Express najbolji izbor, uzimajući u obzir da je predviđen razvoj u C#
[ dejanet @ 16.03.2021. 18:45 ] @
dule_ns: "Ništa ne bi išlo preko mreže, sve na istom kompu."

Za ovaj scenario dobar izbor je sqlite.
[ mjanjic @ 16.03.2021. 18:54 ] @
Da, baš htedoh to da kažem, ako se ne zahtevaju neke stvari koje pruža klasičan DB server, kao što su procedure, trigeri i sl., može praktično sqlite, a za C#/.NET postoji "drajver".
Jedan primerčić za Core verzije .NET-a: https://zetcode.com/csharp/sqlite/
Ako je potrebno za druge "arome" .NET-a, imaš ovde detaljnije:
- .NET: https://www.nuget.org/packages/System.Data.SQLite/
- .NET Core: https://www.nuget.org/packages/System.Data.SQLite.Core/

U oba slučaja pod stavkom "Dependencies" imaš naznačeno koja je najmanja verzija System.Data.SqLite za određenu .NET verziju.
[ Branimir Maksimovic @ 16.03.2021. 19:06 ] @
mjanjic:"može praktično sqlite"

moze ako samo jedan korisnik pristupa.
[ Shadowed @ 16.03.2021. 19:54 ] @
Sqlite je takodje podrzan u Entity Framework-u ako njega koristi.
[ ravni @ 16.03.2021. 20:09 ] @
Glasam za PostgreSQL
[ Branimir Maksimovic @ 16.03.2021. 21:38 ] @
ravni:"Glasam za PostgreSQL "

Preko ODBC-a potpuno je sve jedno koja baza. Naravno ako se ne koriste specificni upiti za odredjenu bazu.
Mislim da uz MySQL Postgre dodje kao dobra alternativa.
[ dule_ns @ 17.03.2021. 07:00 ] @
Za sada cu sqlite, to mi je najjednostavnije za instalaciju, a cenim da ce biti dovoljno. Hvala svima.
[ ravni @ 17.03.2021. 07:57 ] @
Citat:
Mislim da uz MySQL Postgre dodje kao dobra alternativa.
Malo je reci :))
[ darko.ostojic @ 17.03.2021. 08:33 ] @
Ja bih ipak SQL Express znas kako to ide...samo na jednom racunaru a posle jao moze i drugi da se spajaju preko mreze :) sve zavisi kakva je aplikacija i o cemu se radi...
[ S A J A @ 17.03.2021. 09:28 ] @
Za desktop progame, SQLite je najbolja opcija. Mali, jednostavan, brz. To kako ne može više korisnika nije tačno. Vlada pogrešna percepcija o tome. Možeš da staviš celu firmu od 50 računara na 1 SQLite bazu i sve će raditi odlično. Naravno, podrazumeva se neka normalna upotreba.

Čak i ako pretpostavimo da upis u bazu traje 100ms (a traje manje), i da 10 korisnika u istom trenutku hoće nešto da upišu, najduže vreme čekanja će biti 1 sekunda.
[ Branimir Maksimovic @ 17.03.2021. 09:32 ] @
SAJA:"Možeš da staviš celu firmu od 50 računara na 1 SQLite bazu i sve će raditi odlično"

How yes no. Pogotovo kad pocnu da pucaju fajlovi. Mislim ono moze ako nemas mnogo drndanja,
ali po meni sqlite za smestanje vise od konfiguracionih podataka ne vrsi posao.
Mislim ono lik je radio event syncer i optimisticki prva verzija je bila sqlite, brzo je zakljucio
da to ne pije vodu.
[ Predrag Supurovic @ 17.03.2021. 09:54 ] @
Ako treba više korisnika istovremeno da pristupa bazi, pa svakao nije preporučljivo da se povezuju direktno na bazu. Tu bi već trebao neki web servis.
[ Branimir Maksimovic @ 17.03.2021. 10:17 ] @
Predrag:"Ako treba više korisnika istovremeno da pristupa bazi, pa svakao nije preporučljivo da se povezuju direktno na bazu."

Zasto da pravis middleware samo zbog toga ako nema potrebe? Koristis pravu bazu i to je to.
[ Shadowed @ 17.03.2021. 10:48 ] @
Napomenuto je da ne ide preko mreze i da je mala aplikacija tako da je Sqlite odlicno resenje za tako nesto jer je in-process i ne moras nista dodatno instlairati.
Ako koristi EF, vrlo lako ce migrirati na drugu bazu ako BAS bude potrebe. Stavise, i sa DataAdapterima moze, ako valjano uradi, lako da migrira.
[ mjanjic @ 17.03.2021. 14:55 ] @
Meni je zanimljivo kako je na Azure rešeno ono "MySQL-in-App", kad bi moglo da se simulira nešto tako sa desktop aplikacijom, tj. da se ne instalira nikakav poseban DB server, već da se u aplikaciju doda kao modul.

Nego, sad mi pade na pamet, ako su neki važni podaci, nije baš uputno držati u jednom fajlu na disku koji može da odapne. Ako se radi o maloj količini podataka (pomenuto je 10-ak tabela sa po najviše par hiljada vrsta, ali ne znamo koliko kolona, pretpostavljamo da nije 500), može da se koristi i Azure MS SQL, koji je besplatan za jednu bazu do 32MB, ali je potreban nalog na Azure, plus stalna internet veza kada se koristi aplikacija. Time se rešava eventualna migracija aplikacije na drugi računar, nema brige o zezanju sa migracijom baze i instalacijom DB servera na drugom računaru.


Sa druge strane, i ako se koristi lokalni DB (npr. MySQL), migracija baze je relativno lagana, ali nije za one koji nisu nikad radili sa bazama.
Alternativa može biti JSON, ali nije za podatke koji su smešteni u više tabela između kojih postoje relacije.


Jedno od "lightweight" rešenja je H2 Database Engine, instalacija za Windows je samo 5MB, ali ako pokretač teme ima iskustva sa MySQL, onda je bolje da se drži toga nego da budži rešenje sa nečim što niko u okruženju ne zna, pa sutra niko neće znati ni da popravi nešto ako se pojavi problem.
[ mmix @ 17.03.2021. 16:23 ] @
Meni je za single user scenarija SQLite go to, jer je deployment minimalan. A i radi na Linuxu Narocito sad kad je MS sahranio SqlCE pokusavajuci da svima saspe SqlExpress niz grlo. LocalDB (kao packaged flavor SQLExpress-a) namerno izbegavam jer MS opet fura svoje EEE fazone pa ga nema na Linuxu (a sql server ima, go figure).

Multiuser aplikacije naravno neka eksterna baza, SQLite jeste atomic, ali su lockovi malo (malo vise) spori, tako da situacija brzo eskalira sa brojem korisnika.


Fora sa RDBMSovima je sto su sad vec visedecenijski mature proizvodi za 99% primena koje prosecna poslovna primena ima. Jos meni bukvalno sada sve radi na Linuxu isto Generalno ako morate nesto da instalirate a ne pricamo o enterprise level fazonima i hiljadama paralelnih korisnika, bukvalno je svejedno. Razlike i ako postoje su minorne.

[Ovu poruku je menjao mmix dana 17.03.2021. u 17:46 GMT+1]
[ Branimir Maksimovic @ 18.03.2021. 06:23 ] @
mmix:"Multiuser aplikacije naravno neka eksterna baza, SQLite jeste atomic, ali su lockovi malo (malo vise) spori, tako da situacija brzo eskalira sa brojem korisnika. "

mene najvise nervira sto povremeno pucaju fajlovi pa moras svako malo dump pa import.