2009-08-15 31 views
6

Tôi đang tiếp tục nghiên cứu về Erlang. Tôi đang nghĩ đến việc bắt đầu dự án web tiếp theo của mình bằng Erlang, và ở giai đoạn này, điều duy nhất tôi thực sự bỏ lỡ từ Ruby on Rails là ActiveRecord.ActiveRecord cho Erlang

Có công nghệ thay thế tốt nào cho Erlang không?

Cập nhật: Gần nhất tôi đã đến giải pháp là ErlyDB, một thành phần của ErlyWeb.

ErlyDB là lớp trừu tượng cơ sở dữ liệu trình tạo cho Erlang. ErlyDB kết hợp siêu dữ liệu cơ sở dữ liệu và siêu dữ liệu do người dùng cung cấp để tạo các hàm cho phép bạn thực hiện truy cập dữ liệu phổ biến hoạt động theo cách trực quan. Nó cũng cung cấp một API duy nhất để làm việc với các công cụ cơ sở dữ liệu khác nhau (mặc dù hiện tại, chỉ có MySQL là được hỗ trợ), cho phép bạn viết mã truy cập dữ liệu di động .

+0

Không phải là người dùng ruby, bạn có thể mô tả các tính năng trong ActiveRecord mà bạn muốn không? Có cái gì đó tạo ra mã từ một lược đồ SQL? – Christian

Trả lời

4

Vâng, những lợi thế chính của ActiveRecord (như tôi nhìn thấy nó) là:

  1. Bạn có thể persist các đối tượng của bạn trong một cơ sở dữ liệu quan hệ gần một cách minh bạch.
  2. Bạn có thể tìm kiếm cơ sở dữ liệu theo bất kỳ thuộc tính nào của đối tượng của bạn.
  3. Bạn có thể xác thực đối tượng khi lưu giữ chúng.
  4. Bạn có thể có cuộc gọi lại khi xóa, cập nhật hoặc chèn đối tượng.

Với Mnesia:

  1. Bạn có thể tồn tại bất kỳ dữ liệu Erlang hoàn toàn minh bạch.
  2. Sử dụng đối sánh mẫu, bạn có thể tìm kiếm cơ sở dữ liệu theo bất kỳ thuộc tính nào của dữ liệu hoặc kết hợp của chúng.
  3. QLC cung cấp cho bạn giao diện truy vấn tốt đẹp cho các trường hợp khi khớp mẫu không đủ.

Không giải pháp để phê chuẩn và trở lui, tuy nhiên ...

Vì vậy, những gì khác để bạn có trong ActiveRecord đó là thiếu Mnesia?

+2

Tôi đoán một phần của vấn đề là tôi không sẵn sàng từ bỏ RDBMS của mình. Tôi biết các công cụ, tôi biết cách tối ưu hóa và mở rộng quy mô. Có lẽ đây chỉ là nỗi sợ không biết. –

+2

Sau đó, hãy lao xuống. Sẽ tốt hơn nếu bạn chỉ biết tất cả các vấn đề khi bạn làm điều đó một cách khác nhau. Việc gọi điện tốt hơn rất nhiều khi bạn biết nhiều cách tiếp cận. Một hộp công cụ lớn hơn có thể có ích đôi khi. –

+1

Tôi tự hỏi nếu một số vấn đề là Erlang là không thực sự phù hợp cho các ứng dụng web vào lúc này. –

4

Tôi không nghĩ rằng có thực sự là tại thời điểm viết bài này. Điều đó có thể là do các loại hệ thống được viết trong erlang và kiểu người viết chúng không thực sự gọi cho Cơ sở dữ liệu quan hệ. Tôi thấy nhiều mã hơn bằng cách sử dụng mnesia, CouchDB, Tokyo Cabinet và các công nghệ cơ sở dữ liệu thay thế khác.

Điều đó không có nghĩa là ai đó có thể không muốn tạo thứ gì đó như bản ghi hoạt động. Nó chưa thực sự là một nhu cầu. Có lẽ bạn sẽ là người đầu tiên? :-)

1

Một số googling tiết lộ libs/khách hàng/giấy gói cho CouchDB mô tả "ActiveRecord như thư viện như CouchFoo", và tư vấn để chỉ đạo rõ ràng:

http://upstream-berlin.com/2009/03/31/the-case-of-activerecord-vs-couchdb/

http://debasishg.blogspot.com/2009/04/framework-inertia-couchdb-and-case-of.html#

như để xét của bạn về "không thích hợp cho các ứng dụng web ", tôi nghĩ rằng các phần có: mochiweb, couch, yaws, nitơ, erlyweb. Có một số công cụ mạnh mẽ, mô hình rất khác nhau, chắc chắn, từ đường ray, django và PHP.

+0

Đây thực sự là điều thú vị và phản ánh suy nghĩ tôi đã trải qua gần đây. Tôi muốn ActiveRecord bởi vì tôi rất gắn bó với một cách suy nghĩ và lý luận cụ thể về phần mềm. Tôi đang tìm kiếm nghiêm túc hơn nhiều ở CouchDB như là một thay thế cho MySQL. –

1

Bạn có thể quan tâm đến "BossRecords" Chicago Boss của:

http://www.chicagoboss.org/api-record.html

Họ đang khá mô hình một cách rõ ràng trên Ghi mô hình hoạt động, và sử dụng rất nhiều trình biên dịch ma thuật để thực hiện cú pháp sạch bóng. BossRecords hỗ trợ lưu/xác nhận cũng như các liên kết has_many/owned_to. Các thuộc tính trong mô hình dữ liệu của bạn được tạo sẵn thông qua các hàm được tạo (ví dụ: "Employee: first_name()").

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