2008-09-14 64 views
10

Có rất nhiều thông tin trên các trình ánh xạ đối tượng và cách tốt nhất để tránh sự không phù hợp trở kháng, tất cả đều có vẻ là điểm tranh luận nếu người ta sử dụng cơ sở dữ liệu đối tượng. Câu hỏi của tôi là tại sao điều này không được sử dụng thường xuyên hơn? Có phải vì lý do hiệu suất hoặc vì cơ sở dữ liệu đối tượng khiến dữ liệu của bạn trở thành độc quyền đối với ứng dụng của bạn hay là do một thứ gì đó khác?Ưu và nhược điểm của cơ sở dữ liệu đối tượng là gì?

+0

tôi nghĩ đây phải là CW – Konstantinos

Trả lời

11
  • Quen thuộc. Các quản trị viên của cơ sở dữ liệu biết các khái niệm quan hệ; đối tượng, không quá nhiều.
  • Hiệu suất. Cơ sở dữ liệu quan hệ đã được chứng minh là có quy mô tốt hơn nhiều.
  • Kỳ hạn. SQL là một ngôn ngữ mạnh mẽ, phát triển lâu dài.
  • Hỗ trợ của nhà cung cấp. Bạn có thể chọn giữa nhiều công cụ bên thứ nhất (máy chủ SQL) và các công cụ bên thứ ba (giao diện quản trị, ánh xạ và các loại tích hợp) khác hơn là trường hợp với OODBMS.

Tự nhiên, mô hình hướng đối tượng quen thuộc hơn với nhà phát triển và, như bạn chỉ ra, sẽ dành một ORM. Nhưng cho đến nay, mô hình quan hệ đã được chứng minh là lựa chọn khả thi hơn.

Xem thêm câu hỏi gần đây, Object Orientated vs Relational Databases.

+1

Một phản hồi cho sự quen thuộc: nếu bạn kiên trì các đối tượng mà nhà phát triển đang sử dụng, bạn vẫn cần quản trị viên db?Hoặc bạn có thể thuê thêm các nhà phát triển có thể chia thời gian của họ giữa quản trị viên và phát triển không? –

+3

Một counterargument để thực hiện: berkeleydb; nó không quan hệ, và có thể mở rộng theo chiều dọc tới 256 terabyte. Memcached; nó không quan hệ và có thể mở rộng AFAIK theo chiều ngang vô thời hạn. –

+5

Một phản đối để trưởng thành: SQL không được phát triển lâu dài. Nó không được phát triển trong một thời gian dài. Một số người nói rằng C đã trưởng thành vì nó đã tồn tại trong một thời gian dài. Tôi nói C# là trưởng thành bởi vì nó là một phần kết quả của kinh nghiệm tập thể của chúng tôi với C. – Guge

1

Nhược điểm:

  • có thể không được sử dụng bởi các chương trình đó không cũng sử dụng cùng một khuôn khổ để truy cập lưu trữ dữ liệu, làm cho nó khó khăn hơn để sử dụng trên toàn doanh nghiệp .

  • Ít nguồn lực sẵn có trực tuyến với phi SQL dựa trên cơ sở dữ liệu

  • Không tương thích trên cơ sở dữ liệu loại (không thể trao đổi với một nhà cung cấp db khác nhau mà không thay đổi tất cả các mã )

  • Phiên bản có thể là một chút của một con chó . Tôi đoán việc thêm một thuộc tính mới vào một đối tượng không hoàn toàn là dễ dàng như thêm một cột mới vào một bảng .

2

Một phản đối đối với cơ sở dữ liệu đối tượng là tạo ra sự ghép nối chặt chẽ giữa dữ liệu và mã của bạn. Đối với một số ứng dụng nhất định, điều này có thể được chấp nhận, nhưng không phải cho những ứng dụng khác. Một điều tốt đẹp mà một cơ sở dữ liệu quan hệ cung cấp cho bạn là khả năng đặt nhiều lượt xem trên dữ liệu của bạn.

Ted Neward giải thích điều này và nhiều hơn nữa về OODBMSs tốt hơn rất nhiều so với điều này.

+0

Điều này thật ngớ ngẩn. Nếu bạn không có khớp nối chặt chẽ này, bạn sẽ đạt được tỷ lệ lỗi RDBMS chuẩn là 30% các bản ghi bị lỗi. –

0

Sören

Tất cả những lý do bạn đã nêu là hợp lệ, nhưng tôi thấy vấn đề với OODBMS là mô hình dữ liệu logic.Mô hình đối tượng (hay đúng hơn là mô hình mạng của những năm 70) không đơn giản như mô hình quan hệ, và do đó là kém hơn.

+0

Tính đơn giản không quên tính ưu việt theo mặc định ... –

+0

Nếu cả hai đều mạnh mẽ như nhau, và trong trường hợp này chúng là vì mô hình quan hệ có thể đại diện cho bất cứ điều gì, thì đơn giản là tốt hơn. –

10

Tôi đã sử dụng db4o mà là một OODB và nó giải quyết hầu hết các nhược điểm niêm yết:

  • Quen - Lập trình viên biết ngôn ngữ của họ tốt hơn sau đó SQL (xem truy vấn Native)
  • Performance - cái này có tính chủ quan cao nhưng bạn có thể xem PolePosition
  • Hỗ trợ và trưởng thành của nhà cung cấp - có thể thay đổi theo thời gian
  • Không thể sử dụng các chương trình không sử dụng cùng một khuôn khổ - Có tiêu chuẩn OODB và bạn có thể sử dụng different frameworks
  • Phiên bản có thể là một chút bitch - Phiên bản thực sự là easier!

Các ưu Tôi quan tâm đến là:

  • truy vấn Native - db4o cho phép bạn viết các truy vấn trong ngôn ngữ đánh tĩnh của bạn, do đó bạn không cần phải lo lắng về việc đánh nhầm một chuỗi và tìm kiếm dữ liệu bị mất khi chạy,
  • Dễ sử dụng - Xác định logic buissiness trong lớp miền, lớp kiên trì (ánh xạ) và cuối cùng cơ sở dữ liệu SQL chắc chắn vi phạm DRY. Với OODB bạn xác định tên miền của bạn nơi nó thuộc về.

Tôi đồng ý - OODB có một chặng đường dài để đi nhưng họ sẽ tham dự. Và có những vấn đề về miền được giải quyết tốt hơn bằng OODB,

0

jodonnel, i dont 'xem cách sử dụng mã cơ sở dữ liệu cặp đối tượng cho dữ liệu. Bạn vẫn có thể trừu tượng ứng dụng của bạn từ OODB thông qua việc sử dụng một mẫu Repository và thay thế bằng một cơ sở dữ liệu SQL được hỗ trợ ORM nếu bạn thiết kế mọi thứ đúng cách.

Đối với ứng dụng OO, cơ sở dữ liệu OO sẽ cung cấp sự phù hợp tự nhiên hơn cho các đối tượng bền bỉ.

Điều có thể đúng là bạn liên kết dữ liệu với mô hình miền của mình, nhưng đó là điểm mấu chốt!

Sẽ không tốt nếu bạn có một cách xem xét cả dữ liệu, quy tắc kinh doanh và quy trình sử dụng chế độ xem trung tâm miền? Vì vậy, một chuyên gia lớn là một OODB phù hợp với hầu hết các ứng dụng phần mềm hướng đối tượng cấp doanh nghiệp hiện đại được thiết kế, không có nỗ lực nào để thiết kế một lớp dữ liệu bằng cách sử dụng một thiết kế (quan hệ) khác. Rẻ hơn để xây dựng và duy trì, và trong nhiều trường hợp nói chung hiệu suất cao hơn.

Nhược điểm, chỉ thiếu chung về sự trưởng thành và nhận con nuôi ...

2

Nó không liên quan gì đến hiệu suất. Đó là để nói, về cơ bản tất cả các ứng dụng sẽ thực hiện tốt hơn với một OODB. Nhưng điều đó cũng sẽ khiến nhiều DBA mất việc/phải học một công nghệ mới. Thậm chí nhiều người hơn sẽ không thể sửa lỗi trong dữ liệu. Điều đó không thể làm cho các OODB phổ biến với các công ty được thành lập. Gavin dường như hoàn toàn không biết gì, một liên kết tốt hơn sẽ là Kirk

+0

Liên kết tới bài đăng trên blog tuyệt vời của Kirk Pepperdine đáng giá +1 –

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