2011-01-10 28 views
28

Tôi tò mò về những gì các bạn nghĩ về DataMapper và những lợi ích gì mà nó mang lại cho ActiveRecord mới và cải tiến trong Rails 3.DataMapper vs ActiveRecord trong Rails 3

Tôi đánh giá cao ý kiến ​​của bạn.

Trả lời

2

Tôi đã sử dụng Bản ghi hiện hoạt trong Rails 2 và DataMapper trong Merb và Rails 3 — Tôi hiện sử dụng DM/Rails 3 hàng ngày. Tôi đã đọc trên AR3 nhưng chỉ sử dụng nó trong một dự án nhỏ (một ứng dụng trong nhà.)

Tôi đã tìm thấy sự khác biệt duy nhất tôi thực sự quan tâm là DM strategic eager loading. Nó hiếm khi làm những gì người ta sẽ hy vọng và những gì nó làm, đúng và sai, nó với FM.

Với rõ ràng eager loading in AR, không có câu hỏi gì sẽ xảy ra: nó nói những gì nó làm và (thường) làm những gì nó nói.

Trong khi "tự động" bốc háo hức âm thanh tốt, tôi thấy nó có hai kết quả tiêu cực đối với tôi:

  1. một lượng không đáng kể thời gian dành cho tìm kiếm nguồn quá mức truy vấn
  2. đang rải rác với pseudo tải háo hức hacks nơi quan hệ được materialized và loại bỏ chỉ để thủ tướng họ và bản đồ bản sắc theo cách mà đôi khi không "dính" và không bao giờ tự tài liệu.

Nếu không, tôi thấy AR và DM là cùng một con thú với các điểm khác nhau. Không giống như nói, Sequel.

+0

Bạn có sử dụng phần tiếp theo không? Nếu không, tai sao không? – gucki

+1

@gucki Tôi đã sử dụng nó cho một dự án hơn một năm trước nhưng chuyển sang DM kể từ đó. Tôi thực sự không nhớ những vấn đề chúng tôi đã có quá tốt, tôi nghĩ * nó có thể đã được các vấn đề đối phó với các mối quan hệ trước khi sự bền bỉ, nhưng tôi không muốn thề với nó. Tôi nhớ không có gì sai với phần tiếp theo, ví dụ, lỗi, và các vấn đề là không phù hợp với thiết kế trở kháng. Nếu tôi đã bắt đầu một dự án mới ngày hôm nay, tôi chắc chắn sẽ xem xét lại phần tiếp theo vì tôi rất bệnh của ORM nằm trong những ngày này. –

11

Tôi thích DM đến AR. Tôi cảm thấy DM thực sự là một ORM trong khi AR chỉ là một trình bao bọc xung quanh SQL. DM làm cho rất dễ dàng để chuyển đổi giữa các cửa hàng dữ liệu. Cú pháp truy vấn của DM là nhiều hơn nữa đồng nhất vv SEL (tải mong muốn chiến lược) cũng làm cho DM trông giống như một cửa hàng đối tượng hơn AR.

Hơn nữa, các lớp DM xác định các thuộc tính ở phía trước và làm cho mã dễ đọc hơn nhiều. Tôi chưa bao giờ bỏ lỡ di cư sau khi đến thế giới DM. (mặc dù bạn có thể có chúng nếu bạn thực sự muốn). Với đường ray 3, tôi gần như hoàn toàn sử dụng DM.

+0

Các bạn không thấy chi phí triển khai DM quá cao. Trong điều kiện của tất cả những viên đá quý bạn có thể muốn sử dụng, nhưng họ giả sử bạn có AR và sau đó bạn cần phải hack đá quý và như vậy. Ví dụ Devise là một gem người dùng tốt, nhưng nó muốn AR và mặc dù đã có bên thứ ba devise-dm gem nó là một bên thứ ba và ai biết khi nào họ sẽ ngừng hỗ trợ nó hoặc khi Devise sẽ được cập nhật mà không có wrapper đang được cập nhật . Đây chỉ là tình huống ví dụ. –

+3

devise-dm hoạt động tốt. DM cũng có khá nhiều đá quý bên thứ ba. Với thời gian, khi DM trưởng thành, những vấn đề này sẽ biến mất. – piyush

+0

tôi vẫn chưa thấy một activerecord có thể xử lý Class Table Inheritance, trong khi datamappers dường như. bất cứ ai có thể xác nhận điều này? cám ơn –

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