Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu trữ hiệu quả 7.300.000.000 hàng

"Bây giờ - bạn sẽ giải quyết vấn đề được mô tả như thế nào?"

Với các tệp phẳng đơn giản.

Đây là lý do tại sao

Bạn có 2.000.000 thực thể. Phân vùng dựa trên số thực thể:

level1= entity/10000
level2= (entity/100)%100
level3= entity%100

Mỗi tệp dữ liệu là level1/level2/level3/batch_of_data

Sau đó, bạn có thể đọc tất cả các tệp trong một phần nhất định của thư mục để trả về các mẫu để xử lý.

Nếu ai đó muốn có một cơ sở dữ liệu quan hệ, thì hãy tải các tệp cho một entity_id đã cho vào một cơ sở dữ liệu để họ sử dụng.

Chỉnh sửa Vào số ngày.

  1. date_id / entity_id quy tắc tính duy nhất là không một cái gì đó phải được xử lý. Nó (a) áp đặt một cách nhẹ nhàng đối với tên tệp và (b) không thích hợp cho việc truy vấn.

  2. date_id "rollover" không có nghĩa gì cả - không có truy vấn, vì vậy không cần phải đổi tên bất cứ thứ gì. date_id chỉ nên phát triển mà không bị ràng buộc từ ngày kỷ nguyên. Nếu bạn muốn xóa dữ liệu cũ, hãy xóa các tệp cũ.

Vì không có truy vấn nào dựa vào date_id , không bao giờ cần phải làm gì với nó. Nó có thể là tên tệp cho tất cả những gì nó quan trọng.

Để bao gồm date_id trong tập kết quả, hãy ghi nó vào tệp với bốn thuộc tính khác nằm trong mỗi hàng của tệp.

Chỉnh sửa khi mở / đóng

Để viết, bạn phải để (các) tệp đang mở. Bạn thực hiện xả định kỳ (hoặc đóng / mở lại) để đảm bảo rằng nội dung thực sự sẽ vào đĩa.

Bạn có hai lựa chọn cho kiến ​​trúc của người viết.

  1. Có một quy trình "người viết" duy nhất để hợp nhất dữ liệu từ (các) nguồn khác nhau. Điều này rất hữu ích nếu các truy vấn tương đối thường xuyên. Bạn trả tiền cho việc hợp nhất dữ liệu tại thời điểm ghi.

  2. Mở một số tệp đồng thời để ghi. Khi truy vấn, hãy hợp nhất các tệp này thành một kết quả duy nhất. Điều này rất hữu ích vì các truy vấn tương đối hiếm. Bạn trả tiền cho việc hợp nhất dữ liệu tại thời điểm truy vấn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đổi tên hai bảng trong một hoạt động nguyên tử trong MySQL

  2. Cách lấy row_number trong MySQL

  3. Java:Chèn nhiều hàng vào MySQL với PreparedStatement

  4. MySQL C ++ Connector:tham chiếu không xác định tới `get_driver_instance '

  5. phân tích kết quả trong MySQL qua REGEX