C # Database SQL Minimal

12

Saya sedang mengerjakan proyek kecil (bukan produksi) di mana saya perlu menyimpan cukup data sehingga sesuatu seperti CSV tidak efisien untuk diproses dan server SQL / MySQL akan terlalu banyak. Apakah .Net memiliki cara apa pun untuk secara efisien menyimpan beberapa entri data dengan kemampuan query tanpa harus mengelola dan terhubung ke server, bukan memuat dan memproses satu file.

David
sumber
Jika Anda sudah memiliki server database dan menjalankan membuat database lain di sana cukup sepele. Jika Anda hanya menggunakan data, mungkin Anda bisa mempertimbangkan Access.
Brad
@Brad, ini hanya proyek pribadi dan saat ini saya tidak menjalankan server basis data di rumah saya. Saran Anda tentang Access mungkin persis apa yang saya cari.
David
4
Saya bukan penggemar Access , tapi saya akan memberikannya semoga solusi yang tepat kadang-kadang. Sudahkah Anda mempertimbangkan serialisasi objek ? Cukup buat objek & tulis ke file. ( List<foo>
Obyeknya
Apakah Anda ingin ini bertahan atau hanya perlu diingat?
Richard
1
@ David: 4000 entri - sangat sedikit? Mengapa tidak menyimpan semuanya di dalam memori? Jika Anda hanya membutuhkan basis data dalam-memori untuk membuat beberapa permintaan, tanpa alat administratif, set data dengan beberapa data (tetap pada file) mungkin cukup untuk kebutuhan Anda.
Doc Brown

Jawaban:

15

Ada beberapa alternatif, tanpa urutan tertentu:

  1. Semua versi studio visual (berbayar?) Datang dengan SQL Server Express diinstal . Anda bisa menggunakannya.
  2. (Ugh) file XML
  3. SQL Server CE (pada dasarnya, SQL lokal melalui file)
  4. SQLite

Gagasan lain di sini: /programming/3639846/what-is-a-good-embedded-database-to-use-with-c

Sklivvz
sumber
Saya benar-benar menginginkan sesuatu yang benar-benar mandiri dalam satu executable, tanpa DLL dan tidak ada perangkat lunak pihak ketiga. Apakah ada di atas, kecuali XML, yang dapat memenuhi kebutuhan ini?
David
Anda dapat menanamkan dll di executable Anda mungkin.
Sklivvz
Yah saya kira bagian terpenting adalah tidak ada layanan pihak ketiga * seperti MSSQL / MySQL akan cocok dengan # 3 atau # 4
David
Saya tidak ingat apakah SQL CE memiliki runtime yang terpisah atau tidak. SQLite tidak, tetapi bisa sedikit sulit untuk diatur dengan proyek .NET.
GalacticCowboy
3
Saya akan menambahkan bahwa LocalDB adalah opsi. Lihat jawaban ini: stackoverflow.com/questions/9655362/…
Andy
4

Selain opsi yang ditawarkan Sklivvz , jangan takut untuk menjelajah di luar ranah SQL dan menggunakan mesin basis data berorientasi objek, seperti Sterling atau DB4O .

Mereka menawarkan keuntungan menjadi kecil dan berbasis file, dapat disematkan ke dalam aplikasi Anda, tetapi juga sangat cepat dan mudah diprogram.

Eric King
sumber
3

SQLite akan menjadi pilihan terbaik Anda.
Seperti yang tertulis di situs mereka:

SQLite adalah pustaka perangkat lunak yang mengimplementasikan mesin database SQL transaksional mandiri, tanpa server, nol konfigurasi.

Tampak benar-benar apa yang Anda cari!

Bahkan ada paket Chocolatey jika Anda terlalu malas untuk mengunduh dan menginstalnya sendiri!

MaxSC
sumber
2

ADO.NET dapat membuat serial ke XML dan memiliki hampir semua fungsi RDBMS. (Yah, yang murah, sih.)

Saya tahu ini "Lama" dan memandang rendah, sekarang, tetapi ADO.NET bekerja sangat baik untuk apa yang Anda gambarkan. Bahkan melakukan pekerjaan yang cukup baik untuk melacak perubahan yang tidak dilakukan.

Itu mungkin "Tua," tapi jelas bukan "Busted." Ini punya jejak memori yang cukup berat, jadi panggilan Anda untuk itu. 4000 rekaman tidak akan menjadi masalah.

Wesley Long
sumber
Bisakah Anda menguraikan "jejak memori yang berat"?
David
@ David - Ini berarti bahwa keseluruhan dataset akan disimpan dalam memori, dan bukan hanya catatan yang Anda kembalikan dari kueri. Jika Anda memiliki database 4 juta catatan, menyimpannya dalam dataset ADO.NET akan menjadi sumber daya yang serius, sedangkan RDBMS "Nyata" akan menyimpannya di disk sampai Anda menanyakan subset dari mereka. 4000 catatan adalah bersin kecil dalam penggunaan memori, jadi saya tidak akan khawatir tentang hal itu.
Wesley Long
1, saya pikir ini adalah pilihan terbaik, untuk persyaratan ini bahkan sesuatu yang kecil seperti SQLlite tampaknya banyak usaha.
Doc Brown