C # Minimal SQL Veritabanı


12

Ben bir CSV gibi bir şey işlemek için verimsiz ve bir SQL / MySQL sunucusu çok fazla olacağını yeterli veri depolamak gerekiyor küçük bir proje (üretim değil) üzerinde çalışıyorum. .Net, tek bir dosyayı yüklemek ve işlemek yerine bir sunucuyu yönetmek ve bağlanmak zorunda kalmadan sorgulama yeteneği ile çeşitli veri girişlerini verimli bir şekilde depolamanın herhangi bir yoluna sahiptir.


Zaten bir veritabanı sunucunuz varsa ve üzerinde başka bir veritabanı yapmaya çalışıyorsanız oldukça önemsizdir. Yalnızca verileri kullanıyorsanız Access'i düşünebilirsiniz.
Brad

@Brad bu sadece kişisel bir proje ve şu anda evimde herhangi bir veritabanı sunucusu çalıştırmıyorum. Access öneriniz tam olarak aradığım şey.
David

4
Access hayranı değilim , ama bazen doğru çözüm olabilir. Nesne Serileştirmeyi düşündünüz mü ? Sadece bir nesne oluşturun ve bir dosyaya yazın. (Nesne a olabilir List<foo>)
Dan Pichelman

Bunların devam etmesini mi istiyorsunuz yoksa sadece hafızada olmaları mı gerekiyor?
Richard

1
@David: 4000 giriş - bu kadar az mı? Neden hepsini hafızada tutmuyorsun? Herhangi bir yönetim aracı olmadan bazı sorgular yapmak için bir bellek içi veritabanına ihtiyacınız varsa, gereksinimleriniz için bazı veri tablolarına (bir dosyada kalıcı) sahip bir veri kümesi yeterli olabilir.
Doc Brown

Yanıtlar:


15

Belirli bir sırayla olmayan birkaç alternatif vardır:

  1. (Ücretli?) Visual Studio'nun tüm sürümleri SQL Server Express yüklü olarak gelir . Bunu kullanabilirsiniz.
  2. (Ugh) XML dosyaları
  3. SQL Server CE (temel olarak, dosya üzerinden yerel SQL)
  4. SQLite

Burada daha fazla fikir: /programming/3639846/what-is-a-good-embedded-database-to-use-with-c


Gerçekten tamamen tek bir yürütülebilir dosya, DLL ve üçüncü taraf yazılım bulunan bir şey istiyorum. XML dışında yukarıdakilerden herhangi biri bu ihtiyaçlara cevap verebiliyor mu?
David

Belki yürütülebilir dosyaya dll gömebilirsiniz.
Sklivvz

Sanırım en önemli kısmı hiçbir üçüncü taraf * hizmeti MSSQL / MySQL gibi # 3 veya # 4 buna uygun
David

SQL CE'nin ayrı bir çalışma zamanı olup olmadığını hatırlamıyorum. SQLite bunu yapmaz, ancak bir .NET projesiyle kurmak biraz zor olabilir.
GalacticCowboy

3
LocalDB bir seçenek olduğunu eklemek istiyorum. Bu yanıta bakın: stackoverflow.com/questions/9655362/…
Andy


3

SQLite en iyi seçenek olacaktır.
Sitelerinde yazıldığı gibi:

SQLite, bağımsız, sunucusuz, sıfır yapılandırmalı, işlemsel bir SQL veritabanı motoru uygulayan bir yazılım kütüphanesidir.

Gerçekten aradığın şey gibi görünüyor!

Kendiniz indirmek ve yüklemek için çok tembelseniz bir Chocolatey paketi bile var!


3

ADO.NET XML'ye serileştirebilir ve RDBMS'nin neredeyse tüm işlevlerine sahiptir. (Neyse, ucuz olanları.)

Biliyorum "Eski" ve şimdi aşağı baktı, ama ADO.NET tam olarak ne açıklamak için çalışıyor. Taahhütsiz değişiklikleri izlemek oldukça iyi bir iş bile yapıyor.

"Eski" olabilir, ama kesinlikle "Busted" değildir. Bununla birlikte, oldukça ağır bir bellek ayak izi var, bu yüzden bunu çağırın. 4000 kayıt sorun olmayacak.


"ağır bellek ayak izi" üzerinde durur muydunuz?
David

@David - Veri kümesinin tamamını, yalnızca bir sorgudan döndürdüğünüz kayıtları değil, bellekte tutacağınız anlamına gelir. 4 milyon kayıtlık bir veritabanınız varsa, bunları bir ADO.NET veri kümesinde tutmak kaynaklar üzerinde ciddi bir çekim olurken, bir "Gerçek" RDBMS bunları bir alt kümesini sorgulayana kadar bir diskte tutacaktır. 4000 kayıt bellek kullanımında küçük bir hapşırma, bu yüzden endişe etmem.
Wesley Long

+1, bence bu en iyi seçenek, SQLlite gibi küçük bir şey bile çok çaba gibi görünüyor.
Doc Brown
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.