Hiện tại tôi có một ứng dụng được lưu trữ trên Nền tảng đám mây của Google cung cấp phân tích web và cung cấp hoạt động phiên (nhấp chuột, tải xuống v.v.) và liên kết hoạt động web đó với đăng ký web.Chuyển từ Cơ sở dữ liệu Quan hệ sang Dữ liệu Lớn
Hiện tại, chúng tôi lưu trữ tất cả dữ liệu hồ sơ nhấp chuột và phiên trong MySQL và sử dụng truy vấn SQL để tạo cả báo cáo tổng hợp và mỗi người dùng, tuy nhiên, khi lượng dữ liệu phát triển, chúng tôi thấy chậm thực sự trong các câu trả lời truy vấn, điều này sẽ làm chậm thời gian tải trang. Khi điều tra cách chúng tôi có thể giải quyết vấn đề này, chúng tôi đã xem xét các công cụ có sẵn trên Google Cloud Platform như Dataproc và Dataflow cũng như các giải pháp NoSQL, tuy nhiên, tôi đang gặp khó khăn trong việc tìm hiểu cách chúng tôi có thể áp dụng giải pháp hiện tại của chúng tôi bất kỳ giải pháp nào trong số này.
Hiện nay, một ý tưởng sơ bộ sơ đồ dữ liệu của chúng tôi là như sau:
User table
- id
- name
- email
Profile table (web browser/device)
- id
- user id
- user agent string
Session table
- id
- profile id
- session string
Action table
- id
- session id
- action type
- action details
- timestamp
Dựa trên nghiên cứu của tôi, hiểu biết của tôi về những gì sẽ là giải pháp tốt nhất là nên lưu trữ dữ liệu hành động trong một giải pháp cơ sở dữ liệu NoSQL như BigTable cung cấp dữ liệu vào một giải pháp như DataProc hoặc DataFlow tạo báo cáo. Tuy nhiên, vì lược đồ hiện tại của chúng tôi là một cấu trúc quan hệ cao, dường như loại bỏ tùy chọn chuyển sang giải pháp NoSQL vì tất cả các nghiên cứu của tôi chỉ ra rằng bạn không nên di chuyển dữ liệu quan hệ đến giải pháp NoSQL.
Câu hỏi của tôi là, sự hiểu biết của tôi về cách áp dụng các công cụ này có đúng không? Hoặc có giải pháp tốt hơn? Có cần thiết phải cân nhắc chuyển từ MySQL? Và nếu không, loại giải pháp nào có sẵn cho phép chúng tôi có thể xử lý trước/tạo dữ liệu báo cáo trong nền?
Giá trị bảng phiên và hành động có được cập nhật không? Tôi có nghĩa là những người chỉ chèn hoặc có bản cập nhật là tốt? –
Bảng phiên được cập nhật thông qua một cronjob tổng hợp một số dữ liệu như số hành động trên mỗi phiên vào bảng phiên, tuy nhiên, các hành động chỉ được chèn. –
Bạn có thể giữ bảng phiên tạm thời trong MySQL và sau khi phiên kết thúc hoặc vào cuối ngày, hãy đổ tất cả vào BigQuery. –