Cơ sở dữ liệu để xây dựng hệ thống phân tích thời gian thực


7

Tôi muốn xây dựng một hệ thống tương tự Google Analytics (chỉ được sử dụng cho sử dụng nội bộ, ít lưu lượng truy cập và ít tính năng hơn) và chủ yếu tập trung vào

  1. Đếm thời gian thực của lượt truy cập / PV URI duy nhất theo các kích thước khác nhau của thông tin nhân khẩu học, ví dụ: Tác nhân người dùng, HĐH, Quốc gia, v.v.

  2. Tính toán thời gian thực của thời lượng phiên người dùng trung bình (nếu khác nhau giữa hai yêu cầu từ cùng một IP nhỏ hơn 1 phút)

Có bất kỳ cửa hàng cơ sở dữ liệu tốt cho phép loại truy vấn này trong thời gian thực?

ps Tôi hiện đang thử nghiệm InfiDB.


InfiDB -> InfiniDB?
qerub

Câu trả lời:


14

Có một mẹo để xây dựng các phân tích thời gian thực nhanh, bất kể nền tảng. Tôi đã thực hiện điều này với Dịch vụ Phân tích của Microsoft, nhưng bạn cũng có thể sử dụng các kỹ thuật tương tự với các nền tảng khác.

Mẹo nhỏ là có một phân vùng hàng đầu có thể được điền với dữ liệu gần thời gian thực và phân vùng lịch sử (hoặc phân vùng) được tối ưu hóa cho các truy vấn nhanh. Nếu bạn giữ phân vùng hàng đầu đủ nhỏ, nó cũng sẽ nhanh chóng truy vấn.

Để quản lý điều này, quá trình xử lý ETL của bạn điền vào phân vùng hàng đầu và bạn xây dựng một quy trình bổ sung để chuyển đổi định kỳ các phân vùng thành định dạng tối ưu hóa truy vấn nhanh. Bản chất chính xác của quá trình này sẽ thay đổi theo nền tảng của bạn.

Trên Dịch vụ phân tích MS, phân vùng hàng đầu được thực hiện dưới dạng phân vùng ROLAP đọc trực tiếp khỏi bảng. Phân vùng lưu trữ được chuyển đổi thành MOLAP với tổng hợp. Các hệ thống OLAP khác sẽ hoạt động tương tự. Trên Oracle, bạn có thể tạo các chỉ mục bitmap và phân vùng xem cụ thể hóa trên các phân vùng theo dõi của bạn để tăng tốc truy vấn. Một số hệ thống khác cũng có loại tính năng này, mặc dù tôi không biết về việc MySQL hỗ trợ nó.

Theo phỏng đoán, tôi muốn nói rằng nền tảng chính rẻ nhất sẽ làm điều này là Dịch vụ phân tích MS, chỉ có sẵn với SQL Server và không thể mua riêng. Để phân vùng với 2008 R2, bạn sẽ cần SQL Server phiên bản doanh nghiệp, có giá khoảng 22.000 bảng cho mỗi ổ cắm CPU ở Anh và ít hơn một chút ở phía bên kia ao. Microsoft đang phát hành phiên bản SQL Server 'Business Intelligence' mới vào năm 2012. Một khi phiên bản này đạt RTM, phiên bản BI của sản phẩm hỗ trợ các khối được phân vùng và rẻ hơn đáng kể so với Phiên bản doanh nghiệp. Tùy thuộc vào ngân sách và thời gian hạn chế, bạn có thể sử dụng thay thế.

Một khía cạnh khác của vấn đề bạn sẽ phải giải quyết là thay đổi việc thu thập dữ liệu - xác định và đẩy các hàng dữ liệu mới hoặc thay đổi một cách hiệu quả vào quy trình ETL . Hầu hết các tính năng CDC của nhà cung cấp DBMS chỉ hoạt động với cơ sở dữ liệu của riêng họ, vì vậy nếu bạn muốn có giải pháp CDC, bạn có thể phải truy cập ứng dụng của bên thứ ba hoặc kích hoạt trên nguồn.

  • Các bên thứ ba khác nhau cho các ứng dụng CDC sẽ di chuyển trên các nền tảng cơ sở dữ liệu. Một danh sách các sản phẩm CDC có thể được nhìn thấy trên mục wikipedia về chủ đề này. Lưu ý rằng bạn vẫn có thể có vấn đề với tích hợp. Ví dụ, CDC Infosphere của IBM chỉ có thể kích hoạt các quy trình bên ngoài trên cơ sở mỗi hàng, thay vì mỗi lô, điều này có thể gây ra vấn đề hiệu quả trên khối lượng dữ liệu lớn.

  • Bạn có thể tạo một tập hợp các kích hoạt trên các bảng nguồn để đẩy các thay đổi vào khu vực tổ chức. Điều này sẽ yêu cầu bạn có đủ quyền truy cập vào cơ sở dữ liệu nguồn để thực hiện việc này, vì vậy nó có thể không phải là một tùy chọn trên cơ sở dữ liệu do nhà cung cấp hỗ trợ.

  • Nếu dữ liệu từ một tệp (ví dụ: nhật ký máy chủ web), bạn sẽ phải viết quy trình phía máy khách theo dõi phần đuôi của tệp để ghi các bản ghi mới.

Rất có khả năng bạn sẽ phải thực hiện một quy trình kéo để thăm dò các nguồn dữ liệu. Trong trường hợp này, bạn phải tính toán độ trễ chấp nhận được và viết quy trình của mình để nó đủ hiệu quả trong việc phát hiện các thay đổi để có thể chạy đủ nhanh. Có một câu nói cũ, đôi khi được tìm thấy trong các hệ thống nhúng, với tác dụng: 'Bạn biết rằng họ đang nghiêm túc về độ tin cậy khi họ bắt đầu bỏ phiếu '


3

Có thể xây dựng một cái gì đó phù hợp với yêu cầu cơ bản của bạn trong PostgreSQL. Bạn có thể xây dựng các chế độ xem cụ thể được cập nhật với các trình kích hoạt và sử dụng phân vùng để cắt giảm chi phí duy trì dữ liệu cũ. Nhưng đó vẫn là một quy trình rất thủ công trong cơ sở dữ liệu đó, vì vậy bạn cần mã hóa tùy chỉnh cho một số thành phần. Và hiệu suất của kết quả sẽ không được tốt so với các giải pháp thương mại được tối ưu hóa cho mục đích cụ thể này.

Có một số đổi mới phân tích trong lĩnh vực này được cung cấp bởi các nhánh thương mại của PostgreSQL nhắm vào thị trường này, chẳng hạn như các sản phẩm từ GreenplumTruviso . PostgreSQL hoàn toàn miễn phí chưa phải là một giải pháp tuyệt vời cho loại vấn đề này ở quy mô lớn hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.