2008-11-28 37 views
7

Tôi muốn lưu trữ dữ liệu liên tục cho ứng dụng của mình, nhưng tôi không thực sự cần một cơ sở dữ liệu quan hệ đầy đủ. Tôi thực sự có thể nhận được bằng bộ nhớ cơ bản "bộ nhớ cache" giống như bộ nhớ liên tục trong đó cấu trúc chỉ là cặp (khóa, giá trị).Lựa chọn thay thế cho MySQL

Thay cho cơ sở dữ liệu các tùy chọn tốt nhất, có thể mở rộng của tôi là gì?

+0

Các phán quyết là ở:.! SQLite :) –

+0

Không ai có thể đưa ra một câu trả lời có trách nhiệm cho câu hỏi này mà không biết nhiều hơn về những loại dữ liệu bạn đang lưu trữ trong môi trường nào và bạn muốn làm gì với môi trường đó. –

Trả lời

1

Nếu bạn muốn một cái gì đó thực sự có thể mở rộng, tôi sẽ không chọn một tệp phẳng hoặc XML. Khi dữ liệu của bạn phát triển, dữ liệu có thể giết hiệu suất của bạn.

Nếu bạn sẽ có nhiều dữ liệu ở một số giai đoạn, tôi vẫn chọn cơ sở dữ liệu - tôi sẽ xem xét một số thứ như SQLIte với lược đồ rất đơn giản để phù hợp với nhu cầu của bạn.

13

Luôn có SQLite, một cơ sở dữ liệu được lưu trữ trong tệp. SQLite đã có sẵn đồng thời, vì vậy bạn không phải lo lắng về những thứ như khóa tập tin, và nó thực sự nhanh chóng để đọc.

Nếu, tuy nhiên, bạn đang thực hiện rất nhiều thay đổi cơ sở dữ liệu, tốt nhất là nên thực hiện tất cả cùng một lúc trong một transaction. Điều này sẽ chỉ ghi các thay đổi đối với tệp một lần, trái ngược với mỗi lần truy vấn thay đổi được phát hành. Điều này làm tăng đáng kể tốc độ thực hiện nhiều thay đổi.

Khi truy vấn thay đổi được phát hành, cho dù đó là một sự lôi cuốn hay không, toàn bộ cơ sở dữ liệu bị khóa cho đến khi truy vấn đó kết thúc. Điều này có nghĩa là các giao dịch cực kỳ lớn có thể ảnh hưởng bất lợi đến hiệu suất của các quy trình khác vì chúng phải chờ giao dịch kết thúc trước khi chúng có thể truy cập cơ sở dữ liệu. Trong thực tế, tôi đã không tìm thấy điều này là đáng chú ý, nhưng nó luôn luôn là thực hành tốt để cố gắng giảm thiểu số lượng các truy vấn sửa đổi cơ sở dữ liệu mà bạn phát hành.

+0

SQLite là tuyệt vời và dễ dàng để tích hợp vào một ứng dụng. Hơn hết, không cần cài đặt phía máy khách để sử dụng nó, tất cả đều được nhúng vào ứng dụng. –

+0

Tuy nhiên, nó có vấn đề tương tranh –

1

Tôi thực sự không chắc chắn bạn nên nhưng bạn có xem xét việc lưu trữ thông tin trong tài liệu XML nếu nó thực sự là ánh sáng đó không? Và nếu nó không có bạn xem xét SQLite?

2

Nếu bạn cần khả năng mở rộng, thì RDBMS là đặt cược tốt nhất của bạn. Ở cấp độ cơ bản nhất, bạn có thể tuần tự hóa cấu trúc dữ liệu thành các tệp - tuy nhiên, sau đó bạn cần phải tính đến các vấn đề về khóa tệp sẽ giới hạn đồng thời. SQLite là một cơ sở dữ liệu dựa trên tập tin SQL, có thể chạy mà không có một daemon cơ sở dữ liệu liên tục (trong PHP ví dụ, nó chạy như một phần mở rộng), tuy nhiên nó cũng có vấn đề tương tranh (đọc câu trả lời cho this question. bạn quyết định nếu SQLite phù hợp với bạn).

Trừ khi bạn có lý do thực sự tốt để không sử dụng DRBMS thực, tôi khuyên bạn nên gắn bó với MySQL hoặc các công cụ "toàn diện" khác.

1

Nếu bạn viết chương trình java muốn có một cơ sở dữ liệu nhúng, hãy xem hsqldb vì nó được viết bằng java và hoạt động tốt hơn nhiều sau đó sqlite nếu được gọi từ các chương trình java.

1

Nếu bạn đang viết Java, thì có các triển khai cơ sở dữ liệu Java (Jared đề cập đến hsqldb, có những người khác) mà bạn có thể trực tiếp đưa vào.

SQLite là tốt để đưa vào tĩnh, tuy nhiên bạn cũng có thể bao gồm MySQL trong ứng dụng của bạn nếu bạn đang sử dụng một ngôn ngữ tương thích như C.

Tôi nghĩ rằng bạn sẽ đánh giá cao có SQL cũng có sẵn.Các tệp XML không còn cắt nó nữa, có thể là một vài năm trước khi viết phần mềm PDA, nhưng ngay cả iPhone và Android cũng bao gồm SQLite.

6

nếu bạn muốn có một 'bộ nhớ cache dai dẳng', và đã sử dụng memcached, kiểm tra memcachedb. Đó là một hashtable dai dẳng sử dụng giao thức memcached, không cần một client mới (nhưng một daemon mới)

1

Đối với các cặp khóa = Value, bạn có thể sử dụng định dạng tệp INI với tải đơn giản và lưu các thủ tục để tải nó và lưu nó vào bảng băm trong bộ nhớ.

Điều đó sau đó có thể mở rộng đến bất kỳ điều gì, chỉ bằng cách thay đổi tải và lưu các thủ tục để làm việc với db.

1

Bạn có thể thử CounchDB, đây là một cơ sở dữ liệu theo định hướng tài liệu rất linh hoạt không bắt buộc bạn phải xác định lược đồ phía trước. Nó được viết bằng Erlang và nhờ đó nó được coi là giải pháp có khả năng mở rộng. Nó có thể dễ dàng truy vấn thông qua một giao diện REST.

3

Gần đây tôi hỏi một số similar question. Dưới đây là một số lựa chọn:

+0

ESE là tuyệt vời cho khối lượng lớn dữ liệu, không nhất thiết phải là một bộ nhớ cache. Nó hoạt động tốt cho AD, Exchange, Wins, FRS và các công nghệ khác. – Simara