2011-11-29 21 views
18

Tôi cần xây dựng trong hệ thống phân tích (báo cáo, lập biểu đồ & vẽ đồ thị) vào ứng dụng Django của tôi. Trong một thế giới lý tưởng, tôi chỉ có thể truy vấn Postgres DB của mình và lấy dữ liệu tôi muốn nhưng khi lượng dữ liệu trong DB đi qua mái nhà, tôi sẽ nhấn nút thắt cổ chai và các vấn đề khác như địa ngục.Khai thác dữ liệu trong ứng dụng Django/Postgres

Tôi đang tự hỏi nếu bạn có thể chỉ cho tôi một hướng đi đúng để thực hiện điều này:

  • này một kịch bản tốt để sử dụng một DB NoSQL như (CouchDB, MongoDB, Redis) là gì và truy vấn dữ liệu từ cái đó?
  • Vì Postgres và Django không hỗ trợ OLAP/MDX nên tôi đi cùng với lược đồ sao trong một dữ liệu và truy vấn khác?

tôi đang tìm cách để tránh hai điều:

  • tôi không muốn truy vấn DB thực tế của tôi cho phân tích vì nó có thể mất một buổi biểu diễn thành công lớn.
  • Tôi muốn giữ phân tích của mình cập nhật nhất có thể, tức là tôi muốn cập nhật dần kho dữ liệu của mình để có dữ liệu mới nhất. Mỗi lần, có một hoạt động CRUD trên DB giao dịch của tôi, tôi muốn cập nhật kho dữ liệu.

Đây là một tình huống khác mà tôi chưa từng làm việc và đang cố gắng hiểu cách nhanh nhất và tốt nhất để thực hiện.

Tôi hy vọng tôi đã đủ dài dòng. Nếu không, I'dd vui vẻ giải thích thêm.

Cảm ơn tất cả mọi người


Sau khi đào bới khắp nơi trên web và sử dụng những kiến ​​thức tôi có, tôi đã đến giải pháp này:

Sử dụng Postgres để lưu trữ các dữ liệu quan hệ. Trên mọi hoạt động CRUD, hãy gọi mã phân tích để thực hiện các phép tính trên dữ liệu và lưu trữ dữ liệu trong một NoSQL DB như Redis/CouchDB.

Nhìn vào sự so sánh tốt này của NoSQL DB (http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis), tôi nghĩ Redis hoặc CouchDB phù hợp chỉ trong tốt. Được nhắm mục tiêu cho phân tích.

Tôi có thể lưu trữ Analytics được tính toán trong Redis/CouchDB và cập nhật chúng từng bước khi dữ liệu nguồn của tôi thay đổi.

Đây có phải là giải pháp tốt không?

+0

hi Mridang, tôi rất quan tâm đến chủ đề này. Tôi làm theo câu hỏi của bạn từ nó đã được đăng. Có lẽ cơ sở dữ liệu palo olap là một giải pháp, nhưng tôi chưa thử nghiệm nó. Tôi đã đăng tin tức về dự án của bạn. Có cách nào để gửi e-mail của tôi cho bạn ở chế độ riêng tư không? – danihp

Trả lời

10

Bạn có thể muốn xem xét Cube. Nó không phải là một ứng dụng Django, nhưng nó có rất nhiều tính năng tốt đẹp nướng trong, và Django có thể giao tiếp với nó một cách dễ dàng. Ngoài ra, nó là đáng yêu.

Cube screenshot

Bạn có thể có bạn ứng dụng Django chỉ nổ ra sự kiện vào MongoDB khi xảy ra. Việc tách các hệ thống này sẽ ngăn chặn bất kỳ sự căng thẳng nào trên ứng dụng Django của bạn.

+0

+1 Rất tốt! Tôi thích vấp phải những thứ như thế này trên SO. –

2

Xin lỗi Mridang Agarwalla, đôi khi câu hỏi của bạn trở lại trong đầu ...

Tôi nghĩ cách để tiếp tục đồng bộ hóa cả hai cơ sở dữ liệu, OLAP và OLTP, cập nhật với tác động thấp trong OLTP.

Năm 2002, tôi đã sử dụng thành công kỹ thuật này cho một vấn đề tương tự. Nó hoạt động như sau:

  1. Bạn viết trình kích hoạt cho mỗi bảng thực tế. Khi dữ liệu thực tế được kích hoạt, kích hoạt chèn một hàng trong một bảng phản ánh sự kiện này (idEvent + update | delete | insert + khóa ngoại vào bảng thực tế).
  2. Một daemon ưu tiên thấp làm một vòng lặp vô hạn, cho mỗi vòng lặp lặp lại bạn 'pop' 10 sự kiện từ bảng và cập nhật cơ sở dữ liệu OLAP với thông tin mới này.

Bạn có thể tối ưu hóa hành vi daemon, ví dụ, nếu bảng không có sự kiện mới, daemon có thể ngủ trong 15 giây.

Trong bảng thực tế chỉ có escenario của tôi đã kích hoạt. Nếu thực tế bảng tham khảo dữ liệu mà không có trong cơ sở dữ liệu OLAP tôi tạo ra dữ liệu tại thời điểm này (OLTP và OLAP có lược đồ khác nhau).

Nếu bạn analize cơ sở dữ liệu của bạn, bạn có thể tìm thấy hàng trăm bảng nhưng chỉ có vài bảng thực sự là bảng thực tế.

Vâng, tôi biết đây chỉ là câu trả lời một phần câu trả lời của bạn. Phần thứ hai của câu hỏi của bạn nói về một công cụ điện để phân tích dữ liệu. Tôi không thể gợi ý cho bạn bất kỳ sản phẩm nguồn mở nào (vì tôi chưa có kinh nghiệm với các công cụ phân tích nguồn mở). Tôi đã làm việc với Microsoft Analysis Services + Tableau phần mềm trong lối vào. Đây là một giải pháp rất hay nhưng tôi không biết nếu nó phù hợp với filosofy của bạn. Đối với việc khai thác dữ liệu, bạn có KNIME (Trình thông tin Konstanz) là nền tảng tích hợp, xử lý, phân tích và thăm dò dữ liệu nguồn mở thân thiện và toàn diện (nhưng bạn cần một nhiệm vụ ETL chiếm ưu thế).

Vui lòng gửi cho tôi tin tức về dự án của bạn, tôi rất quan tâm. Tôi có một giải pháp tham dự sinh viên django và tôi muốn thêm chức năng phân tích.

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