2010-03-05 10 views
40

Viết một ứng dụng bằng Python và đang chơi với nhiều thiết lập ORM khác nhau và SQL thẳng. Tất cả đều xấu xí như tội lỗi.ZODB Trong cuộc sống thực

Tôi đã xem ZODB như một cửa hàng đối tượng và có vẻ là một sự thay thế đầy hứa hẹn ... bạn có nên giới thiệu nó không? Kinh nghiệm, vấn đề và phê bình của bạn là gì, đặc biệt là quan điểm của nhà phát triển, khả năng mở rộng, tính toàn vẹn, bảo trì dài hạn và các lựa chọn thay thế? Bất cứ ai bắt đầu một dự án với nó và mương nó? Tại sao?

Trong khi ý tưởng đằng sau ZODB, Pypersyst và những người khác là thú vị, có vẻ là một thiếu nhiệt tình xung quanh cho họ :(

+0

-1: Giá trị phán đoán: "bắt đầu ghét RDBMS/Đối tượng không khớp" Bạn có thể loại bỏ phán đoán giá trị khỏi câu hỏi không? Có cách nào để tập trung vào các sự kiện và giảm sự nhấn mạnh vào ghét cá nhân của bạn? –

+16

@ S.Lott - Một chỉnh sửa miễn cưỡng. Không phải vì bạn không chính xác, nhưng bởi vì -1 đến nội tuyến với một yêu cầu mà chỉ là thô lỗ. Đây không phải là tấm thảm bayeux. –

Trả lời

25

Tôi đã sử dụng ZODB trong hơn mười năm nay, ở Zope và bên ngoài. Thật tuyệt vời nếu dữ liệu của bạn có thứ bậc. Kho lưu trữ dữ liệu lớn nhất mà khách hàng hoạt động có thể .. Tôi không biết ... 100GB trong đó? Một cái gì đó về thứ tự độ lớn đó.

Đây là a performance comparison against Postgres.

Nếu bạn đang viết một ứng dụng WSGI web, những gói có thể hữu ích:

+1

Đã chấp nhận. Không chỉ vì câu trả lời, nhưng tôi tiếp tục xem qua các bài viết/bài viết/bài thuyết trình của bạn khi googling công cụ ZODB mà tôi cần. Tôi biết ai để hướng dẫn thêm câu hỏi tại! ;) –

+0

http://docs.zope.org/zope3/Code/BTrees/index.html này cũng hữu ích – amirouche

+0

Liên kết thực sự thú vị về hiệu suất ở đó. Đáng đọc! – fatuhoku

2

ZODB đã được sử dụng cho nhiều cơ sở dữ liệu lớn

sử dụng

Hầu hết ZODB là/có lẽ người dùng Zope người di cư đi nếu họ di chuyển ra khỏi Zope

hiệu suất không phải là quá tốt như cơ sở dữ liệu relatonal + ORM đặc biệt là nếu bạn có rất nhiều ghi.

bảo trì dài hạn không phải là quá ba d, bạn muốn đóng gói cơ sở dữ liệu theo thời gian, nhưng điều đó có thể được thực hiện trực tiếp.

Bạn phải sử dụng ZEO nếu bạn đang sử dụng nhiều hơn một quá trình với ZODB của bạn mà là chậm hơn khá nhiều so với sử dụng ZODB trực tiếp

Tôi không có ý tưởng như thế nào ZODB thực hiện trên đĩa flash.

+0

Cảm ơn bạn đã trả lời! Tôi tự hỏi nếu ZODB sẽ phù hợp với vị trí của MySQL bằng cách sử dụng ZEO trong một thiết lập webfarm. Bộ nhớ đệm nghiêm trọng sẽ hy vọng phủ nhận hiệu suất chậm của cửa hàng. –

+3

ZODB thường hút các cơ sở dữ liệu quan hệ cho các truy vấn lặp lại khi dữ liệu không thay đổi, ngay cả với ZEO trong hỗn hợp, bởi vì đã có một cache phía máy khách. –

0

Với tẩy, bạn có thể sử dụng bất kỳ cơ sở dữ liệu key value nào theo cách tương tự.

+3

Trừ khi bạn chọn cả 'a' và 'b' mà mỗi tham chiếu 'c' chắc chắn? –

+0

@Aiden, zodb xử lý trường hợp đó như thế nào? – mikerobi

+8

ZODB xử lý nó một cách minh bạch. Xem http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0 –

14

So với "bất kỳ khóa giá trị khóa" nào, các tính năng chính của ZODB sẽ tự động tích hợp các thay đổi thuộc tính với giao dịch ACID thực và tham chiếu "tùy ý" rõ ràng cho các đối tượng liên tục khác.

Các ZODB lớn hơn chỉ là FileStorage được sử dụng bởi mặc định trong Zope:

  • Các RelStorage backend cho phép bạn đưa dữ liệu của bạn trong một RDBMS có thể được sao lưu, sao chép, vv sử dụng các công cụ tiêu chuẩn.
  • ZEO cho phép dễ dàng nhân rộng các máy chủ ứng dụng và công việc ngoại tuyến.
  • Hỗ trợ cam kết hai pha cho phép phối hợp các giao dịch giữa nhiều cơ sở dữ liệu, bao gồm RDBMSes (giả sử rằng chúng cung cấp một lớp TPC-aware).
  • Phân cấp dễ dàng dựa trên thuộc tính hoặc ngăn chứa đối tượng: bạn không cần viết tự tham gia đệ quy để mô phỏng nó.
  • Hỗ trợ BLOB dựa trên hệ thống tệp giúp phân phát các tệp lớn tầm thường để triển khai.

Nhìn chung, tôi rất vui khi sử dụng ZODB cho hầu hết mọi vấn đề mà hình dạng của dữ liệu không rõ ràng là "hình vuông".

+0

+1 - đọc thú vị –

4

Tôi muốn giới thiệu nó.

Tôi thực sự không có bất kỳ lời chỉ trích nào. Nếu đó là một đối tượng lưu trữ tìm kiếm của bạn, đây là một trong những để sử dụng. Tôi đã lưu trữ 2,5 triệu đối tượng trong nó trước đây và không cảm thấy một chút.