Tại sao cơ sở dữ liệu hướng đối tượng không được sử dụng nhiều như cơ sở dữ liệu quan hệ? [đóng cửa]


18

Tôi đã bắt gặp nhiều hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). Nhưng gần đây tôi đã sử dụng chế độ ngủ đông khiến tôi bắt đầu tự hỏi tại sao cơ sở dữ liệu hướng đối tượng không phổ biến hơn.

Nếu các ngôn ngữ hướng đối tượng như Java hoặc C # rất phổ biến, thì tại sao các hệ thống quản lý cơ sở dữ liệu hướng đối tượng (OODBMS) lại không phổ biến hơn?


1
Phương pháp "NoQuery" hiện đang cực kỳ phổ biến. RDBMS bị giới hạn và hạn chế, và may mắn thay, giờ đây họ đang mất dần vị thế của mình.
SK-logic

Bạn gọi oodb là gì? ngủ đông chỉ là một khung để giao tiếp với rdbms với giao diện oo.
Simon Bergot

2
Câu hỏi tương tự đã được hỏi năm 2009 trên SO, xem stackoverflow.com/questions/1350044/ Nhật IMHO gần như mọi câu trả lời được đưa ra vẫn còn hiệu lực cho đến ngày hôm nay.
Doc Brown

@Simon bởi oodb, ý tôi là cơ sở dữ liệu hướng đối tượng

1
@Simon: Versant là một oodb (tôi đã thấy trong sản xuất ở hai công ty khác nhau).
Giorgio

Câu trả lời:


11

Có nhiều lý do.

  1. Nhiều nhà phát triển chỉ có kinh nghiệm trong mô hình dữ liệu quan hệ. Để sử dụng cơ sở dữ liệu OO, họ sẽ cần học cách hoàn toàn khác để mô hình hóa và suy nghĩ về dữ liệu. Điều này hoặc là thực sự khó khăn hoặc khá tốn thời gian.
  2. DB quan hệ đã có nhiều thời gian để trưởng thành. Ngay cả các DB quan hệ miễn phí cũng có các kỹ thuật lập chỉ mục và tối ưu hóa tiên tiến. Ngoài ra, dữ liệu quan hệ là dễ dàng để lưu trữ và lập chỉ mục. Điều tương tự không thể nói về cơ sở dữ liệu OO.
  3. Khi các mô hình quan hệ và OO bắt đầu xuất hiện. Quan hệ có lợi thế rất lớn về mặt toán học là "chính xác" và nó có tiêu chuẩn để lưu và truy vấn dữ liệu. OO không có gì sắp xếp.
  4. [đầu cơ] Nhiều người chơi lớn đưa nhiều tài nguyên vào việc tạo các DB quan hệ của họ. Thay vào đó, sẽ rất phản tác dụng khi hỗ trợ DB OO. Vì vậy, nhiều người trong số họ đã đầu tư vào việc tích hợp các nguyên tắc OO vào mô hình quan hệ, làm cho hầu hết các DB hiện tại được gọi là quan hệ đối tượng. IMO những mô hình này tệ nhất so với OO thuần túy quan hệ hoặc thuần túy. [/ Suy đoán]
  5. [rant] Điều cuối cùng cần lưu ý là nhiều nhà phát triển không thực sự hiểu cách OO để mô hình hóa dữ liệu. Điều này thường dẫn đến các mô hình thiếu máu, thiếu máu. Vì vậy, nhiều công ty phát triển, dựa vào các nhà phát triển giá rẻ và thiếu kinh nghiệm sẽ chọn mô hình quan hệ đơn giản, được dạy trong tất cả các trường cao đẳng CS hơn là chọn aproach OO khó và chưa được chứng minh. [/ Rant]

5
Tôi đồng ý với tất cả các điểm của bạn ngoại trừ cuối cùng. Tôi nghĩ rằng cách dễ dàng hơn cho các nhà phát triển để làm rối cơ sở dữ liệu quan hệ hơn cơ sở dữ liệu đối tượng. Khóa tổng hợp và các mối quan hệ bị hỏng là rất phổ biến, nhưng đối với tôi, có vẻ như khó khăn hơn một chút để làm rối loạn hệ thống phân cấp lớp.
Tjaart

@Tjaart làm rối tung hệ thống phân cấp lớp dường như là tiêu chuẩn cho hầu hết các nhà phát triển trong OO.
Bent

10

Khi cơ sở dữ liệu xuất hiện lần đầu tiên, OOP vẫn không phải là cách để lập trình. Cơ sở dữ liệu quan hệ, mặt khác, đã đạt được rất nhiều lực kéo. Và SQL được IBM giới thiệu vào những năm 80 đã nhanh chóng trở thành ngôn ngữ chung của tất cả các cơ sở dữ liệu.

Khi OOP trở nên phổ biến, có một số nỗ lực, nhưng có một số vấn đề. Đầu tiên, thực sự là rất khó để thực hiện. Trong trường hợp cơ sở dữ liệu quan hệ, một bảng và các chỉ mục liên quan là các cấu trúc khá đơn giản (ví dụ: cây B). Một lý do khác là có rất nhiều lý thuyết đằng sau mô hình quan hệ, nó trực tiếp xuất phát từ lý thuyết tập hợp toán học. Có những cách đã biết để thiết kế chính xác cơ sở dữ liệu quan hệ (nghĩ bình thường hóa, v.v.). Và cuối cùng nhưng không kém phần quan trọng, mọi người đã quen với SQL rất nhiều.

Các giải pháp NoQuery hiện đại trong hầu hết các trường hợp không thực sự là một bước tiến tới OODBMS. Nhiều người trong số họ vẫn còn quan hệ, chỉ bị tước bỏ JOINs. Rất ít trong số chúng thực tế là các cửa hàng đối tượng nhưng không thực sự là OODBMS, vì chúng không nhận thức được mối quan hệ giữa các đối tượng.

Tuy nhiên, một lý do khác tại sao không có sự thúc đẩy mạnh mẽ như vậy đối với OODBMS là vì có giải pháp "Người nghèo của người nghèo" - ORM. Điều này đã đạt được sự phổ biến lớn, vì chúng được hỗ trợ bởi các công cụ DB nổi tiếng, ổn định và đã được thử nghiệm, nhưng chúng cung cấp ánh xạ tới các đối tượng. Tất nhiên, đây không phải là những 3BB thực sự.


"Tuy nhiên, một lý do khác tại sao không có sự thúc đẩy mạnh mẽ như vậy đối với OODBMS là vì có giải pháp" Người nghèo của người nghèo "- ORM.": Điểm rất tốt! +1.
Giorgio

Đo không phải sự thật. MUMPS được thiết kế vào năm 1966 và chỉ đến năm 1974, dự án nghiên cứu đầu tiên được IBM bắt đầu để phát triển System R, RDBMS đầu tiên trên thế giới. Oracle chỉ phát hành RDBM cấp thương mại đầu tiên trên thế giới vào năm 1979, cùng năm khi InterSystems M được đưa ra ánh sáng. Câu hỏi là những gì đã xảy ra sau đó. Câu trả lời có lẽ là ODBMS không được tối ưu hóa để báo cáo, trong khi phần lớn các trường hợp sử dụng ứng dụng LOB có sự mất cân bằng đọc-ghi nặng đối với việc đọc.
Alexey Zimarev

-2

OODBMS rất tốt trong việc lưu trữ dữ liệu phức tạp. Tuy nhiên, hầu hết thời gian, ngay cả khi sử dụng ngôn ngữ OO, dữ liệu cần thiết là tương đối đơn giản. Vì vậy, RDBMS truyền thống phù hợp hơn.


2
Dữ liệu hầu như không bao giờ đơn giản và tôi nghĩ bạn không thể giải thích được tại sao OODB không phổ biến hơn vì sau tất cả ORM đang hoạt động rất tốt.
Tjaart
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.