Tôi thấy hai khả năng: sqlite và BerkeleyDB. Vì trường hợp sử dụng của tôi là rõ ràng không quan hệ, tôi bị cám dỗ để đi với BerkeleyDB, tuy nhiên tôi không thực sự biết cách sử dụng nó để lưu trữ hồ sơ của mình vì nó chỉ lưu trữ các cặp khóa/giá trị .
Điều bạn mô tả chính xác là những gì quan hệ, kể cả khi bạn chỉ cần một bảng. SQLite có thể sẽ làm việc này rất dễ dàng.
CHỈNH SỬA: Mô hình quan hệ không liên quan gì đến mối quan hệ giữa các bảng. Quan hệ là tập hợp con của sản phẩm Descartes của các bộ khác. Ví dụ, sản phẩm Descartes của các số thực, số thực, và số thực (Có, tất cả ba giống nhau) tạo ra không gian tọa độ 3d, và bạn có thể xác định mối quan hệ trên không gian đó với công thức, nói x*y = z
. mỗi tập hợp tọa độ có thể có (x0,y0,z0)
hoặc là trong mối quan hệ nếu chúng thỏa mãn công thức đã cho, nếu không thì không.
Cơ sở dữ liệu quan hệ sử dụng khái niệm này với một vài yêu cầu bổ sung. Thứ nhất, và quan trọng nhất, kích thước của mối quan hệ phải là hữu hạn. Mối quan hệ sản phẩm được đưa ra ở trên không đáp ứng yêu cầu đó, bởi vì có vô số 3-tuple thỏa mãn công thức.Có một số cân nhắc khác có liên quan nhiều hơn đến những gì thực tế hoặc hữu ích trên các máy tính thực sự giải quyết các vấn đề thực tế.
Cách suy nghĩ tốt hơn về vấn đề là suy nghĩ về nơi mà mỗi loại cơ chế kiên trì cụ thể hoạt động tốt hơn cơ chế khác. Bạn đã nhận ra rằng một giải pháp quan hệ có ý nghĩa khi bạn có nhiều bộ dữ liệu riêng biệt (bảng) phải hỗ trợ các mối quan hệ giữa chúng (ràng buộc khóa ngoài), hầu như không thể thực thi với một kho khóa-giá trị. Một lợi thế thực sự khác cho quan hệ là cách nó làm cho các truy vấn phong phú, đặc biệt có thể với việc sử dụng các chỉ mục thích hợp. Đây là kết quả của lớp cơ sở dữ liệu thực sự hiểu dữ liệu mà nó đại diện.
Cửa hàng khóa-giá trị có bộ lợi thế riêng. Một trong những điều quan trọng hơn là cách mà các cửa hàng khóa-giá trị mở rộng. Không phải hệ quả là memcached, couchdb, hadoop tất cả sử dụng bộ nhớ khóa-giá trị, vì dễ dàng phân phối tra cứu khóa-giá trị trên nhiều máy chủ. Một khu vực khác lưu trữ khóa-giá trị hoạt động tốt là khi khóa hoặc giá trị bị mờ, chẳng hạn như khi mục được lưu trữ được mã hóa, chỉ để chủ sở hữu có thể đọc được.
Để lái xe về nhà thời điểm này, rằng một cơ sở dữ liệu quan hệ hoạt động tốt ngay cả khi bạn chỉ không cần nhiều hơn một bảng, hãy xem xét những điều sau đây (không phải gốc)
SELECT t1.actor1
FROM workswith AS t1,
workswith AS t2,
workswith AS t3,
workswith AS t4,
workswith AS t5,
workswith AS t6
WHERE t1.actor2 = t2.actor1 AND
t2.actor2 = t3.actor1 AND
t3.actor2 = t4.actor1 AND
t4.actor2 = t5.actor1 AND
t5.actor2 = t6.actor1 AND
t6.actor2 = "Kevin Bacon";
nào, rõ ràng sử dụng một bảng duy nhất: workswith
để tính toán mọi diễn viên có số thịt xông khói là 6
Cảm ơn tất cả các bạn vì những câu trả lời rất hữu ích của bạn! Lựa chọn một trong những tốt nhất là thực sự khó khăn: -/ –