2009-09-30 26 views
30

Khi nào người ta chọn kho lưu trữ dữ liệu khóa-giá trị trên một DB quan hệ? Những cân nhắc nào đi vào quyết định cái này hay cái kia? Khi nào kết hợp cả hai tuyến đường tốt nhất? Vui lòng cung cấp các ví dụ nếu bạn có thể.Khi nào nên sử dụng kho dữ liệu khóa-giá trị so với DB quan hệ truyền thống hơn?

+18

Tôi không thích nhận xét ở trên. Nó giống như bạn đang đề xuất không ai ngoại trừ Google/Yahoo/Twitter nên sử dụng NOSQL. Điều đó thật lố bịch. –

Trả lời

1

Theo kinh nghiệm của tôi, nếu bạn thậm chí còn đặt câu hỏi liệu có nên sử dụng các thực tiễn truyền thống hay bí truyền, sau đó đi truyền thống hay không. Trong khi thực hành bí truyền là sexy, đầy thử thách và thú vị, 99.999% ứng dụng gọi cho một phương pháp truyền thống.

Liên quan đến quan hệ vs KV, câu hỏi bạn nên được hỏi là:

Tại sao tôi khôngmuốn sử dụng một mô hình quan hệ cho kịch bản này: ...

Vì bạn chưa mô tả kịch bản, nên không ai có thể cho bạn biết lý do bạn không nên sử dụng nó. Lý do "bắt tất cả" đối với KV là khả năng mở rộng, hiện không phải là vấn đề. Bạn có biết quy tắc tối ưu hóa không?

  1. Đừng làm điều đó.
  2. (chỉ dành cho chuyên gia) Không làm ngay bây giờ.

KV là cao giải pháp tối ưu cho khả năng mở rộng rất có thể hoàn toàn không cần thiết cho ứng dụng của bạn.

+27

Nhận xét này không trả lời được câu hỏi. Khi nào và tại sao một người nào đó chọn sử dụng một cửa hàng KV trên một db quan hệ? – aridlehoover

0

Cơ sở dữ liệu quan hệ truyền thống có vấn đề mở rộng vượt quá một điểm. Nơi mà điểm đó phụ thuộc một chút vào những gì bạn đang cố gắng làm.

Tất cả (hầu hết?) Của các nhà cung cấp điện toán đám mây đều cung cấp các kho dữ liệu giá trị khóa.

Tuy nhiên, nếu bạn có ứng dụng có kích thước hợp lý với cấu trúc dữ liệu phức tạp thì hỗ trợ bạn nhận được từ việc sử dụng cơ sở dữ liệu quan hệ có thể giảm chi phí phát triển của bạn.

+0

Tôi sẽ chỉ ra rằng điểm rất lớn, tôi biết một số cơ sở dữ liệu đa terrabyte chạy rất tốt (chúng phải được thiết kế và quản lý đúng cách và có phần cứng chính xác để mở rộng). – HLGEM

14

Các hệ thống cơ sở dữ liệu giá trị, sơ đồ, sơ đồ, giảm hoặc đồ thị gần giống với chiến lược triển khai hơn, chúng gắn liền với sự thể hiện vật lý. Lý do chính để chọn một trong số đó là nếu có một đối số hiệu suất hấp dẫn và nó phù hợp với chiến lược xử lý dữ liệu của bạn rất chặt chẽ. Hãy coi chừng, các truy vấn đặc biệt thường không thực tế đối với các hệ thống này và bạn nên quyết định truy vấn của mình trước thời hạn.

Hệ thống cơ sở dữ liệu quan hệ cố gắng tách mô hình logic, hướng kinh doanh khỏi các chiến lược xử lý và biểu diễn vật lý cơ bản. Sự phân tách này là không hoàn hảo, nhưng vẫn còn khá tốt. Các hệ thống quan hệ là rất tốt để xử lý sự kiện và trích xuất thông tin đáng tin cậy từ các bộ sưu tập các sự kiện. Các hệ thống quan hệ cũng rất tốt trong các truy vấn đặc biệt, mà các hệ thống khác nổi tiếng là xấu. Đó là một sự phù hợp tuyệt vời trong thế giới kinh doanh và nhiều nơi khác. Đó là lý do tại sao các hệ thống quan hệ rất phổ biến.

Nếu đó là ứng dụng doanh nghiệp, hệ thống quan hệ hầu như luôn là câu trả lời. Đối với các hệ thống khác, đó có thể là câu trả lời. Nếu bạn có nhiều vấn đề về xử lý dữ liệu hơn, như một số thứ cần phải xảy ra và bạn có một lượng lớn dữ liệu và bạn biết tất cả truy vấn của mình ở phía trước, một hệ thống khác có thể phù hợp với bạn.

4

Nếu dữ liệu của bạn chỉ đơn giản là danh sách mọi thứ và bạn có thể lấy được số nhận dạng duy nhất cho từng mục, thì KVS là một kết quả phù hợp. Chúng được triển khai gần gũi với các cấu trúc dữ liệu đơn giản mà chúng tôi đã học trong khoa học máy tính mới nhất và không cho phép các mối quan hệ phức tạp.

Thử nghiệm đơn giản: bạn có thể trình bày dữ liệu của mình và tất cả các mối quan hệ của nó dưới dạng danh sách được liên kết hoặc bảng băm không? Nếu có, KVS có thể hoạt động. Nếu không, bạn cần một RDB.

Bạn vẫn cần tìm một KVS sẽ hoạt động trong môi trường của bạn. Hỗ trợ cho KVSes, thậm chí là những cái chính, không ở đâu gần với nó, như PostgreSQL và MySQL/MariaDB.

Các vấn đề liên quan