2012-05-03 33 views
7

Làm việc trên một dự án Django đòi hỏi một cửa hàng NoSQL và tôi tin rằng tôi đã định cư trên Mongo. Tôi đã nhìn thấy rất nhiều chủ đề nói về Mongo và Django, nhưng không có đề cập đến Django-nonrel, và tôi không thể thấy lý do tại sao nó có thể đã bị loại, nhưng tôi không có kinh nghiệm với bất kỳ người trong số họ.Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native

Lý tưởng nhất, tôi muốn bảo quản cửa hàng SQL cho những thứ đơn giản, xác thực người dùng, nhóm, v.v ... và sử dụng Mongo cho dữ liệu lớn hơn.

Tôi cũng muốn có các đối tượng được lưu trữ Mongo của tôi dưới dạng các lớp, theo kiểu Django-ORM, để tôi có thể có 'cảm giác' tương tự, nhưng điều đó không quan trọng.

Cuối cùng, làm bất kỳ điều nào ở trên cho phép tôi sử dụng hỗ trợ đa cơ sở dữ liệu của Django cho bất kỳ điều gì, hoặc tất cả các truy vấn mongo của tôi có hiệu quả 'ngoài băng' từ ORM Django?

Nếu có bất kỳ yếu tố nào khác mà tôi bỏ lỡ có thể quan trọng, hãy tự đầu tư cho tôi. Tôi biết rất ít trong lĩnh vực này.

+3

Có, có thể làm việc với Django và MongoDB, tôi đã tự làm một vài năm trước. Tôi đã không cố gắng Django-nonrel nhưng nếu bạn muốn sử dụng SQL cho những điều đơn giản, bạn nên dính vào Django ban đầu. Bạn nên biết bây giờ mà Django không có một phụ trợ Mongo nhưng nếu bạn muốn giữ Django ORM cảm thấy bạn thực sự nên thử [mongoengine] (http://mongoengine.org/). –

+1

Tôi thứ hai là khuyến nghị cho mongoengine. – Justin

Trả lời

5

Django-nonrel là con đường để đi cho Django trên MongoDB. Có django-mongodb.org, nhưng đó chỉ là xây dựng trên đầu trang của Django-nonrel. Có khá nhiều hoạt động mongodb đang diễn ra trong danh sách gửi thư django-nonrel.

Lưu trữ các lớp mongo của bạn vì các đối tượng ORM Django hoạt động tốt, đó là toàn bộ vấn đề.

Tôi chưa thử sử dụng hỗ trợ đa cơ sở dữ liệu cùng với SQL. Tôi đã không thấy nhiều người sử dụng nó như thế, và tôi nghi ngờ nó rất có thể không hoạt động. Có một số công việc trên di chuyển django-nonrel được chính thức là một phần của Django 1.4, tôi nghi ngờ nó sẽ làm việc sau khi đó là hoàn tất.

Sử dụng django-nonrel cho công việc auth ok. Vấn đề chính là quan hệ nhiều-nhiều. Mô-đun auth sử dụng mô-đun đó cho mỗi quyền đối tượng của người dùng - điều này không hoạt động. Nếu bạn không cần điều đó, bạn có thể có thể lấy đi mà không cần sử dụng SQL chút nào.

+0

Tôi không thể có được Django-nonrel để làm việc mặc dù sau một loạt các nguồn tài liệu cho lá thư. Đó là 'chủ yếu' có, trong đó tôi có một dự án Django, và tôi gần như thậm chí có thể nhận được syncdb để làm việc, nhưng tốt nhất tôi đã nhận được cho nó để bắt đầu trước khi nó không ... crap, một số lỗi đối phó với ObjectID . Tóm lại, tôi đã sử dụng mongoengine, cho phép tôi chỉ định kết nối trong cài đặt cũng như xác định các đối tượng lớp "Django giống như" mà tôi có thể tham chiếu đến. Câu trả lời của bạn không 'hoạt động', nhưng vì bạn đã dành thời gian ra ít nhất là thử, tôi thấy điều đó đáng giá, vì vậy nó được chấp nhận. – bmelton

0

Thêm vào câu trả lời dragonx. Vấn đề với django-nonrel là mô-đun auth không hoạt động.

Bạn có thể thực hiện các kết nối nhiều người tham gia bằng cách sử dụng toán tử tra cứu $. djongo tự động thực hiện cho bạn. Nó dịch cú pháp SQL thành các truy vấn tập hợp mongodb và điền vào mô hình đối tượng, giống như các trình điều khiển SQL khác.

Mô-đun auth hoạt động tốt trên djongo