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?
Trả lời
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?
- Đừng làm điều đó.
- (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.
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
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.
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
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.
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.
- 1. Khi nào nên sử dụng hệ thống() và khi nào nên sử dụng execv *()?
- 2. Hệ thống cơ sở dữ liệu không quan hệ
- 3. Khi nào bạn nên sử dụng JCR và khi nào bạn nên sử dụng JPA/RDBMS?
- 4. Mối quan hệ kho dữ liệu cốt lõi với các thuộc tính được tìm nạp
- 5. Khi nào tôi nên sử dụng Hashtable so với HashMap
- 6. Cơ sở dữ liệu dựa trên tài liệu nào có lợi thế hơn một cơ sở dữ liệu quan hệ?
- 7. Khi nào bạn nên sử dụng Page.DataBind() so với Control.DataBind()?
- 8. Khi nào tôi nên sử dụng kiểu trừu tượng trong các hệ thống nhúng
- 9. Cơ sở dữ liệu quan hệ so với chiều, sự khác biệt là gì?
- 10. Với Cloud Computing ngày càng trở nên phổ biến, các DB quan hệ có bị tử vong không?
- 11. Khi nào nên sử dụng Apache so với Apache + Tomcat?
- 12. Thiết kế Mongo DB, nhúng với các mối quan hệ
- 13. Quan hệ với cơ sở dữ liệu NoSQL
- 14. postgresql chính hstore/giá trị so với hiệu suất SQL truyền thống
- 15. Đọc dữ liệu từ Oracle DB bằng .Net nhanh hơn 10 lần so với sử dụng Java
- 16. Lưu trữ một lượng lớn dữ liệu: DB hoặc Hệ thống Tệp?
- 17. Sử dụng cơ sở dữ liệu quan hệ cho dữ liệu Schemaless - Thực tiễn tốt nhất
- 18. Lưu trữ dữ liệu không quan hệ (nosql) nhúng
- 19. Di chuyển hệ thống xấu vào hệ thống hiện tại của chúng tôi với rất nhiều dữ liệu
- 20. Sao chép dữ liệu bảng quan hệ
- 21. Sử dụng kho dữ liệu của jQuery so với các thuộc tính expando
- 22. Chia sẻ hệ thống dữ liệu rộng
- 23. Làm thế nào để sử dụng hiệu quả hệ thống tự ghi dữ liệu của Emacs?
- 24. So sánh hiệu suất lưu trữ RDF với cơ sở dữ liệu truyền thống
- 25. NewSQL so với tối ưu hóa/sharding truyền thống
- 26. Mối quan hệ dữ liệu lõi iPhone
- 27. Dữ liệu blob được xuất khác với dữ liệu DB
- 28. Sử dụng Amazon S3 làm Hệ thống Tệp cho MongoDB
- 29. Khối chương trình SystemVerilog so với testbench truyền thống
- 30. neo4j - đồ thị cơ sở dữ liệu cùng với một cơ sở dữ liệu quan hệ?
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. –