Một lựa chọn tốt của cơ sở dữ liệu cho một ứng dụng .NET nhỏ là gì? [đóng cửa]


180

Tôi đang phát triển một ứng dụng nhỏ với C # trong .NET và tôi muốn có một cơ sở dữ liệu trọng lượng nhẹ không sử dụng nhiều tài nguyên.

Bạn có thể vui lòng liệt kê một số phần mềm cơ sở dữ liệu trọng lượng nhẹ nổi tiếng nhất .


Câu trả lời:


192

14/06/2016 Yep ... vẫn nhận được upvotes: - /


17/03/2014 Tôi vẫn đang nhận được sự ủng hộ cho việc này, hãy chú ý đến ngày này đã được trả lời. Mặc dù ba mục chính được liệt kê vẫn hoàn toàn khả thi, danh sách sẽ có xu hướng trở nên cũ kỹ. Có nhiều công nghệ cơ sở dữ liệu có sẵn mà không được liệt kê.


Bạn có một vài lựa chọn miễn phí và dễ nhận biết ngay lập tức:

Tải xuống SQL Server Compact đi kèm với nhà cung cấp ADO.NET mà bạn sẽ cần tham khảo bằng mã. Tải xuống SQLite có thể không có nó vì vậy đây là một liên kết:

http://sqlite.phxsoftware.com/

Cả ba đều sử dụng SQL, mặc dù có khả năng với một vài hạn chế / quirks. Management Studio hoạt động với Compact và LocalDB, trong khi với SQLite, bạn sẽ cần một công cụ UI khác như SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

Có các lựa chọn thay thế NoQuery, chẳng hạn như:

Cá nhân tôi sẽ tránh sử dụng MS Access khi đối mặt với các tùy chọn miễn phí khác. Bạn không thể sai với LocalDB, Compact hoặc SQLite. Chúng đều là những cơ sở dữ liệu nhỏ đáng yêu chạy tương đối nhanh trong ít RAM - sở thích cá nhân về khía cạnh tôn giáo về việc thích một sản phẩm của Microsoft mà tôi cho là :-)

Tôi sử dụng lập trình Sterling cho Windows Phone vì nó được xây dựng để sử dụng Bộ lưu trữ biệt lập. Tôi mới chỉ thấy các bài viết trên RavenDb, nhưng tôi có thể nói với bạn rằng đó là một khung lưu trữ tài liệu dựa trên JSON.

Không nhầm lẫn tình huống (đi với SQLite, SQL Server Express LocalDB hoặc SQL Server Compact Edition), nhưng có các cơ sở dữ liệu nhúng / cục bộ khác ngoài đó, một số khác có quan hệ hướng đối tượng:

Không phải tất cả trong số này là miễn phí. Hỗ trợ SQL / LINQ / in-Proc khác nhau trên tất cả chúng. Danh sách này chỉ dành cho sự tò mò.

Hiện tại cũng có Karvonite , tuy nhiên liên kết bộ sưu tập mã bị hỏng. Khi nó hoạt động trở lại, tôi sẽ xem xét cái này để phát triển WP7.


11
+1 Đối với SQL Server CE. Thay vì cài đặt máy chủ SQL cùng với ứng dụng của bạn, bạn chỉ có thể sử dụng các dll SQL Server CE và có tệp cơ sở dữ liệu trong thư mục làm việc của ứng dụng. Đơn giản.
Phil

2
RavenDB thực sự là một cơ sở dữ liệu tài liệu nhưng API của nó mạnh mẽ hơn nhiều so với các cặp tên và giá trị đơn giản. Vấn đề là nó không miễn phí cho các dự án thương mại trong trường hợp bạn đang tìm kiếm các lựa chọn thay thế miễn phí.
JCallico

@JCallico Tôi sẽ thừa nhận rằng tôi đã khái quát một chút với bản tóm tắt, nhưng tôi nghi ngờ bất cứ ai sẽ lấy những gì tôi đã nói như là tin lành.
Adam Houldsworth

@Brendan Lâu, không có triển khai SQL ngoài đó mà bạn có thể nói tiêu chuẩn 100% của nó.
Pop Catalin

1
Thay vì để lại thông điệp nhỏ khó đọc ở đầu câu trả lời của bạn giải thích rằng thông tin đã lỗi thời. Có thể dễ dàng hơn chỉ cần cập nhật và / hoặc thêm vào câu trả lời của bạn và bao gồm một số ví dụ về các tùy chọn có sẵn ngày hôm nay.
James Shaw

58

Tôi muốn giới thiệu SQLite . Chúng tôi đang sử dụng nó cho hầu hết các ứng dụng chúng tôi phát triển nơi tôi làm việc.

Nó nhỏ và gọn. Nó không yêu cầu DLL phải có trong thư mục ứng dụng, nhưng bạn không cần phải cài đặt phần mềm khác như Access hoặc SQL Server. Ngoài ra, như tuyên bố của danielkza bên dưới, "SQLite là miền công cộng, vì vậy bạn không phải lo lắng gì về việc cấp phép." Điều đó thực sự có thể tạo ra một sự khác biệt lớn.

Bạn có thể sử dụng System.Data.SQLite hoặc csharp-sqlite để truy cập nó trong ứng dụng C # bằng các phương thức tương tự như của SQL hoặc OleDB.

Bạn cũng sẽ cần một ứng dụng để chỉnh sửa / quản lý cơ sở dữ liệu. Theo tôi thì tốt nhất là SQLite Studio . Dưới đây là một vài thông tin khác:
SQLite Admin
SQLite 2009 Pro (cuối trang)
Cập nhật - 25/11/11 - Thêm ứng dụng SQLite (câu hỏi tại đây trên SO)

Dưới đây là nhiều hơn về SQLite:
SQLite trên Wikipedia
Các công ty sử dụng SQLite

Hàm tùy chỉnh: Ngoài ra, nếu bạn đang tìm kiếm trong Hàm SQLite Core và không thấy hàm nào bạn thích, bạn có thể tạo các hàm tùy chỉnh của riêng mình. Dưới đây là một vài ví dụ:
Từ ví dụ SO
Anoter


8
Một bổ sung: SQLite là miền công cộng, vì vậy bạn hoàn toàn không phải lo lắng về việc cấp phép.
danielkza

@MikeWebb Sqlite có hoạt động với các ứng dụng ClickOnce mà không cần cài đặt bất kỳ dịch vụ bổ sung nào không? Nó có hoạt động không nếu nó nằm trên một mạng chia sẻ cho nhiều người dùng đồng thời?
Prokurors

1
@Prokurors - Tất cả các SQLite cần chạy là tệp DLL tương ứng với ngôn ngữ bạn đang sử dụng trong chương trình của bạn (C ++, C #, v.v.). Không có dịch vụ hoặc chương trình khác cần thiết. Ngoài ra, nó nên hoạt động trên một mạng với người dùng đồng thời. Chúng tôi có một bản sao và chạy trên một máy chủ nơi tôi làm việc và nó hoạt động rất tốt. Bạn có thể xem thêm về đồng thời tại đây: sqlite.org/lockingv3.html
Mike Webb

10

Firebird nhúng có thể là một lựa chọn tốt

Phiên bản nhúng là một biến thể tuyệt vời của máy chủ. Nó là một máy chủ Firebird đầy đủ tính năng được đóng gói chỉ trong một vài tệp. Nó rất dễ triển khai, vì không cần phải cài đặt máy chủ.

Có một số trình điều khiển mạng chấm rất tốt


8

SQL Server Compact nếu bạn muốn sử dụng giải pháp microsoft chính thức. Điều này có lợi thế là có thể sử dụng sao chép với máy chủ SQL nếu bạn cần loại điều đó.

SQLite nếu bạn muốn một cái gì đó rất đơn giản và nhỏ. Đây là những gì Android sử dụng cho cơ sở dữ liệu nội bộ của nó vì vậy nó được hỗ trợ rất tốt và có sẵn các ràng buộc .NET rất tốt.

Một lợi thế khác biệt của SQLite là nó đa nền tảng. Vì vậy, nếu bạn muốn chuyển ứng dụng của mình sang Mono.NET thì bạn sẽ không có bất kỳ sửa đổi nào để thực hiện cơ sở dữ liệu.

Tôi không thích MS Access cho giải pháp này nhưng rất nhiều người đã đưa nó vào câu trả lời của họ. Nó bị hạn chế do định dạng độc quyền và sự phụ thuộc vào nền tảng. Nó có lợi thế của nó mặc dù. Bạn có thể thao tác dữ liệu dễ dàng nếu bạn có một bản sao của MS Access, bạn có thể xây dựng các truy vấn bằng đồ họa và tạo các macro. Bạn có thể dễ dàng tích hợp nó với phần còn lại của MS Office.

Trong số tất cả các SQLite này sẽ là đề xuất của tôi do nó rất nhỏ gọn, được tài liệu tốt và được hỗ trợ bởi một đội ngũ phát triển đồng nghiệp đang phát triển bất kể nền tảng.

BIÊN TẬP

Tôi nhận ra rằng có một lựa chọn khác mà mọi người ở đây quên đề cập đến

Miễn là bạn không cần các bảng quan hệ, bạn có thể sử dụng tệp CSV được đọc dưới dạng tập dữ liệu qua ADO.NET. (Nhiều đề xuất lulz hơn bất cứ điều gì khác nhưng sẽ phù hợp trong một số trường hợp và không yêu cầu thêm thư viện để triển khai MS.


8

Nếu bạn đang xây dựng một dự án với .NET 4.0.2 trở lên và muốn hỗ trợ cơ sở dữ liệu nhúng, hãy xem xét SQL Server Express LocalDB .

Đây là một bổ sung tương đối mới cho họ Express có tính năng cài đặt nhỏ hơn và giảm chi phí quản lý (khi so sánh với các phiên bản khác của Express), nhưng nó vẫn duy trì các khía cạnh lập trình của SQL Server. Đó là, không giống như Phiên bản nhỏ gọn, LocalDB không yêu cầu cài đặt một nhà cung cấp ADO.NET riêng để giao tiếp với SQL.

Xem phần sau để biết thêm chi tiết:

SQL Express v LocalDB v SQL Phiên bản thu gọn (Blog MSDN)
SQL LocalDB vs SQL Server CE (Tràn ngăn xếp)


7

Thế còn http://en.wikipedia.org/wiki/NoQuery_(RDBMS) thì sao?

cụ thể là MongoDB cho .Net

http://www.mongodb.org/display/DOCS/Home


1
Hoặc cụ thể cho .NET, bạn có thể muốn xem RavenDB
marc_s

Mongo, trong khi đáng yêu, không chạy nhúng - bạn phải bắt đầu một quy trình máy chủ riêng biệt, có thể hơi nặng nề cho các mục đích của OP.
Mike Woodhouse

Mongodb không hỗ trợ sql. người hỏi muốn "nơi tôi có thể lưu và truy xuất các bản ghi bằng các truy vấn Sql". Và những gì nhiều hơn, mongodb là bộ nhớ đói. Tôi không đề nghị nó cho trường hợp sử dụng này.
Peter Long

4

Bạn có thể sử dụng Sql Server Express Editionmiễn phí và mạnh mẽ như nhau cho đến khi và trừ khi bạn muốn chức năng như mirroringv.v. Hãy xem cái này .


8
Câu hỏi nêu rõ "Tôi không cần bất cứ thứ gì mạnh mẽ". SQL Server Express KHÔNG phải là phiên bản nhẹ của SQL Server. Đây là phiên bản giới hạn kích thước cơ sở dữ liệu và có tác động lớn đến việc khởi động PC của người dùng khi các dịch vụ bắt đầu. Đó là quá mức cho câu hỏi này. SQL Server Compact phù hợp hơn.
Moog

2

Tôi đã sử dụng db4o thành công.
Dựa trên tập tin, cộng đồng lớn, sử dụng đơn giản.

http://www.db4o.com/

Chi tiết cấp phép

Theo mặc định, Giấy phép công cộng miễn phí db4o được cấp phép theo GPL.

Giấy phép GPL là lý tưởng nếu bạn dự định sử dụng db4o tại nhà hoặc bạn có kế hoạch phát triển và phân phối công việc phái sinh của riêng bạn dưới dạng phần mềm miễn phí theo GPL.

Giấy phép thương mại Cần có giấy phép thương mại nếu bạn muốn nhúng db4o vào sản phẩm không phải GPL thương mại. Người được cấp phép thương mại có quyền truy cập vào các dịch vụ và hỗ trợ cao cấp.


Tôi đã sử dụng db4o trong 6 tháng vào năm 2012. Nếu có một số cách để tránh các vấn đề về việc không thể truy cập dữ liệu cũ sau khi mô hình đối tượng thay đổi, tôi sẽ đưa ra câu trả lời này. Theo tôi biết, thật khó để tránh mất dữ liệu cũ nếu bạn thay đổi đối tượng của mình. Dòng dưới cùng luôn giữ một bản sao lưu dữ liệu của bạn ở nơi khác ở định dạng khác, không phải là db4o (dù sao đây cũng là một quy tắc khá chung chung).
Contango

2

Một giải pháp thay thế chưa được đề cập nếu bạn không yêu cầu nó phải là cơ sở dữ liệu miễn phí là VistaDB. Đó là tất cả mã được quản lý, cung cấp hàng tấn tính năng cho cơ sở dữ liệu nhúng và cung cấp hiệu suất khá tốt. Một cầu nối khá tốt giữa SQL CE và SQL Server Express vì phần lớn các thủ tục được lưu trữ VistaDB của bạn sẽ chạy mà không cần sửa đổi trong SQL Server Express. Tôi cũng khá hài lòng với dịch vụ khách hàng vào thời điểm này. Tôi đã sử dụng nó tại nơi làm việc. Không có dịch vụ để bắt đầu. Một DB trống là khoảng 1 MB và DLL cũng khá nhẹ. Có nhà cung cấp ADO.NET và những thứ như vậy. Tôi thích nó một chút tốt.

VistaDB


Chào! Nó hoạt động trong kịch bản nhiều người dùng? Ví dụ: tôi có thể lưu trữ VistaDB này trên mạng chia sẻ và truy cập đồng thời từ nhiều người dùng không?
Prokurors 27/11/13

1
Nó làm một số khả năng hạn chế trong khía cạnh này. Rõ ràng là nó không thể thay thế một cơ sở dữ liệu thực sự đang chạy bằng một công cụ db cục bộ trên hộp đó nhưng nó cung cấp một vài tùy chọn giao dịch. Chúng tôi đã lên kế hoạch sử dụng nó trong kịch bản đó vì dường như nó sẽ xử lý nó tốt hơn bất kỳ tùy chọn miễn phí nào chúng tôi gặp phải và khách hàng của chúng tôi sẽ không có chuyên môn để thiết lập máy chủ sql hoặc bất cứ điều gì. Nó cung cấp nhiều tính năng hơn sqlce nhưng không nhiều như máy chủ sql đầy đủ. Đây là một phần chất lượng thực sự của phần mềm.
Giàn khoan

Cảm ơn bạn đã thông tin! Và phiên bản 5 dự kiến ​​mới của họ nghe có vẻ rất hứa hẹn. Bạn đã thử Entity Framework với VistaDB chưa? Thậm chí có thể tạo tệp VistaDB với Mã EF trước?
Prokurors

1
Tôi đã làm nhưng điều này là khoảng 3-4 năm trước. Tại thời điểm đó tôi thấy nó hoạt động tốt và đó là trải nghiệm đầu tiên của tôi. Tôi cho rằng nó tốt hơn bây giờ. Điều duy nhất thiếu nó vào thời điểm đó là các phân đoạn nhất định của tài liệu còn thưa thớt nhưng đó là trong quá trình chuyển đổi sau khi được chủ sở hữu hiện tại của họ mua.
Giàn khoan

1
PS: Ít nhất tại thời điểm tôi sử dụng, họ sẵn sàng cung cấp giấy phép demo để sử dụng. Tôi thực sự khuyên bạn nên thử nó trước khi cam kết chi phí giấy phép.
Giàn khoan

1

Máy chủ SQL Phiên bản nhỏ gọn tốt nhất vì nó miễn phí, Kích thước nhẹ và tích hợp tốt


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.