Cơ sở dữ liệu SQL tối thiểu C #


12

Tôi đang làm việc trong một dự án nhỏ (không sản xuất) trong đó tôi cần lưu trữ đủ dữ liệu mà một cái gì đó như CSV sẽ không hiệu quả để xử lý và máy chủ SQL / MySQL sẽ quá nhiều. .Net có cách nào để lưu trữ hiệu quả một số mục nhập dữ liệu với khả năng truy vấn mà không phải quản lý và kết nối với máy chủ thay vì tải và xử lý một tệp duy nhất.


Nếu bạn đã có một máy chủ cơ sở dữ liệu và chạy, làm cho một cơ sở dữ liệu khác trên đó là khá nhỏ. Nếu bạn chỉ sử dụng dữ liệu, có thể bạn có thể xem xét Truy cập.
Brad

@Brad đây chỉ là một dự án cá nhân và tôi hiện không chạy bất kỳ máy chủ cơ sở dữ liệu nào tại nhà của tôi. Đề xuất của bạn về Access có thể chính xác là những gì tôi đang tìm kiếm.
David

4
Tôi không phải là người hâm mộ của Access , nhưng đôi khi tôi sẽ cấp cho nó giải pháp phù hợp. Bạn đã xem xét tuần tự hóa đối tượng ? Chỉ cần tạo một đối tượng và ghi nó vào một tập tin. (Đối tượng có thể là a List<foo>)
Dan Pichelman

Bạn có muốn những thứ này tồn tại hay chúng chỉ cần trong bộ nhớ?
Richard

1
@David: 4000 mục - rất ít? Tại sao không giữ tất cả chúng trong bộ nhớ? Nếu bạn chỉ cần một cơ sở dữ liệu trong bộ nhớ để thực hiện một số truy vấn, mà không cần bất kỳ công cụ quản trị nào, một bộ dữ liệu với một số dữ liệu (được lưu vào một tệp) có thể đủ cho nhu cầu của bạn.
Doc Brown

Câu trả lời:


15

Có một vài lựa chọn thay thế, không theo thứ tự cụ thể:

  1. Tất cả các phiên bản của studio trực quan (phải trả tiền?) Được cài đặt SQL Server Express . Bạn có thể sử dụng nó.
  2. (Ugh) Tệp XML
  3. SQL Server CE (về cơ bản, SQL cục bộ qua tệp)
  4. SQLite

Thêm ý tưởng tại đây: /programming/3639846/what-is-a-good-embedded-database-to-use-with-c


Tôi thực sự muốn một cái gì đó hoàn toàn khép kín trong một tệp thực thi duy nhất, không có DLL và không có phần mềm bên thứ ba. Có bất kỳ điều nào ở trên, ngoại trừ XML, có thể phù hợp với những nhu cầu này không?
David

Bạn có thể nhúng các dll trong thực thi của bạn có thể.
Sklivvz

Chà tôi đoán phần quan trọng nhất là không có dịch vụ của bên thứ ba * như MSSQL / MySQL sẽ # 3 hoặc # 4 phù hợp với điều đó
David

Tôi không nhớ nếu SQL CE có thời gian chạy riêng hay không. SQLite thì không, nhưng có thể hơi khó để thiết lập với dự án .NET.
GalacticCowboy

3
Tôi sẽ thêm rằng LocalDB là một tùy chọn. Xem câu trả lời này: stackoverflow.com/questions/9655362/ Kẻ
Andy

4

Ngoài các tùy chọn mà Sklivvz đưa ra , đừng ngại mạo hiểm bên ngoài vương quốc SQL và sử dụng một công cụ cơ sở dữ liệu hướng đối tượng nhúng, chẳng hạn như Sterling hoặc DB4O .

Chúng cung cấp các lợi thế của việc nhỏ và dựa trên tệp, có thể nhúng vào ứng dụng của bạn, nhưng cũng rất nhanh và dễ lập trình.


3

SQLite sẽ là lựa chọn tốt nhất của bạn.
Như được viết trên trang web của họ:

SQLite là một thư viện phần mềm thực hiện một công cụ cơ sở dữ liệu SQL giao dịch độc lập, không có cấu hình, không cấu hình.

Có vẻ như những gì bạn đang tìm kiếm!

Thậm chí còn có gói Chocolatey nếu bạn quá lười để tải xuống và tự cài đặt!


2

ADO.NET có thể tuần tự hóa thành XML và có hầu hết tất cả các chức năng của RDBMS. (Chà, dù sao thì những cái rẻ tiền.)

Bây giờ tôi biết nó "Cũ" và nhìn xuống, nhưng ADO.NET hoạt động thực sự tốt cho chính xác những gì bạn mô tả. Nó thậm chí còn làm một công việc khá tốt để theo dõi các thay đổi không cam kết.

Nó có thể là "Cũ", nhưng chắc chắn không phải là "Busty". Tuy nhiên, nó có một bộ nhớ khá nặng, vì vậy, cuộc gọi của bạn về điều đó. 4000 hồ sơ sẽ không là một vấn đề.


bạn có thể giải thích về "dấu chân nặng ký ức" không?
David

@David - Điều đó có nghĩa là toàn bộ tập dữ liệu sẽ được lưu trong bộ nhớ và không chỉ các bản ghi bạn trả về từ một truy vấn. Nếu bạn có cơ sở dữ liệu gồm 4 triệu bản ghi, việc lưu giữ tất cả trong bộ dữ liệu ADO.NET sẽ là một sự thu hút nghiêm trọng về tài nguyên, trong khi RDBMS "thực" sẽ giữ nó trên đĩa cho đến khi bạn truy vấn một tập hợp con của chúng. 4000 hồ sơ là một hắt hơi nhỏ trong việc sử dụng bộ nhớ, vì vậy tôi sẽ không lo lắng về nó.
Wesley Long

+1, tôi nghĩ rằng đây là tùy chọn tốt nhất, cho các yêu cầu này ngay cả một cái gì đó nhỏ như SQLlite dường như là rất nhiều nỗ lực.
Doc Brown
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.