Tôi là một nhà phát triển duy nhất cho một công ty viễn thông, và sau một số lời khuyên thiết kế cơ sở dữ liệu từ bất kỳ ai có chút thời gian để trả lời.Tư vấn thiết kế cơ sở dữ liệu cần
Tôi đang chèn vào một bảng ~ 2 triệu hàng mỗi ngày, các bảng này sau đó được lưu trữ và nén hàng tháng. Mỗi bảng hàng tháng chứa ~ 15.000.000 hàng. Mặc dù điều này đang tăng lên hàng tháng.
Đối với mỗi chèn tôi làm ở trên, tôi kết hợp dữ liệu từ các hàng thuộc về nhau và tạo một bảng "tương quan" khác. Bảng này hiện không được lưu trữ, vì tôi cần đảm bảo rằng tôi không bao giờ bỏ lỡ bản cập nhật cho bảng tương ứng. (Hy vọng rằng có ý nghĩa) Mặc dù nói chung thông tin này nên vẫn còn khá tĩnh sau một vài ngày xử lý.
Tất cả những điều trên đều hoạt động hoàn hảo. Tuy nhiên công ty của tôi bây giờ mong muốn thực hiện một số số liệu thống kê chống lại dữ liệu này, và các bảng này đang nhận được quá lớn để cung cấp kết quả trong những gì sẽ được coi là một thời gian hợp lý. Ngay cả với các chỉ mục thích hợp được thiết lập.
Vì vậy, tôi đoán sau khi tất cả câu hỏi trên của tôi khá đơn giản. Tôi có nên viết một tập lệnh mà nhóm dữ liệu từ bảng tương quan của tôi thành các bảng nhỏ hơn. Hoặc tôi nên lưu trữ các tập kết quả truy vấn trong một cái gì đó như memcache? Tôi đã sử dụng bộ nhớ cache mysqls, nhưng do có giới hạn kiểm soát dữ liệu được lưu trữ trong bao lâu, nó không hoạt động lý tưởng.
Những lợi thế chính tôi có thể nhìn thấy của việc sử dụng một cái gì đó giống như memcache:
- Không chặn trên bảng tương quan của tôi sau khi truy vấn đã được đổi thành tiền mặt.
- Tính linh hoạt cao hơn trong việc chia sẻ dữ liệu đã thu thập giữa bộ sưu tập phụ trợ và bộ xử lý đầu cuối. (tức là báo cáo tùy chỉnh có thể được viết trong phụ trợ và kết quả của các bộ nhớ này được lưu trữ trong bộ nhớ cache dưới khóa mà sau đó được chia sẻ với bất kỳ ai muốn xem dữ liệu của báo cáo này)
- Dự phòng và khả năng mở rộng nếu chúng tôi bắt đầu chia sẻ dữ liệu này với số lượng lớn khách hàng.
Những khó khăn chính tôi có thể nhìn thấy của việc sử dụng một cái gì đó giống như memcache:
- dữ liệu là không dai dẳng nếu máy được khởi động lại/bộ nhớ cache bị xóa.
Các ưu điểm chính của việc sử dụng MySql
- dữ liệu liên tục.
- thay đổi mã Less (mặc dù thêm cái gì đó như memcache là tầm thường nào)
Những khó khăn chính của việc sử dụng MySql
- Phải xác định bảng mẫu mỗi khi tôi muốn lưu trữ cung cấp một mới thiết lập dữ liệu được nhóm.
- Phải viết chương trình lặp lại thông qua dữ liệu tương quan và điền vào các bảng mới này.
- Có khả năng sẽ vẫn phát triển chậm hơn khi dữ liệu tiếp tục được lấp đầy.
Xin lỗi cho một câu hỏi khá dài. Nó đã giúp tôi viết ra những suy nghĩ này ở đây, và bất kỳ lời khuyên/giúp đỡ/kinh nghiệm đối phó với loại vấn đề này sẽ được đánh giá cao.
Rất cám ơn.
Alan
Chào mừng bạn đến với StackOverflow. Câu hỏi dài thường tốt, vì chúng có xu hướng hiển thị một vài điều quan trọng, 1) bạn thực sự quan tâm đến việc nhận được câu trả lời hay thay vì 'cho tôi mã' 2) chúng có xu hướng có tất cả (hoặc ít nhất là hầu hết) thông tin cần thiết để trả lời chính xác câu hỏi, sau khi tất cả rác trong == rác ra. – UnkwnTech