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

Làm thế nào để xử lý việc lưu trữ khổng lồ các bản ghi trong cơ sở dữ liệu cho mục đích ủy quyền người dùng?

Thực tế của vấn đề là nếu bạn muốn quyền cấp bài viết cho mỗi người dùng thì bạn cần một cách để liên quan đến User s đến Article s họ có thể truy cập. Điều này yêu cầu một tối thiểu bạn cần N * A (trong đó A là số lượng bài báo được cấp phép duy nhất).

Cách tiếp cận 3NF cho điều này, như bạn đã đề xuất, sẽ có UsersArticles đặt ... đó sẽ là một bảng rất lớn (như bạn đã lưu ý).

Hãy xem xét rằng bảng này sẽ được truy cập rất nhiều ... Điều này đối với tôi có vẻ như là một trong những tình huống mà cách tiếp cận không chuẩn hóa một chút (hoặc thậm chí là noSQL) là thích hợp hơn.

Hãy xem xét mô hình mà Twitter sử dụng cho bảng người theo dõi người dùng của họ:

Jeff Atwood về chủ đề này

Và Blog về khả năng mở rộng cao

Một ví dụ từ những phần đó là một bài học kinh nghiệm tại Twitter rằng việc truy vấn những người theo dõi từ một bảng chuẩn hóa gây căng thẳng lớn cho User bàn. Giải pháp của họ là không chuẩn hóa những người theo dõi để những người theo dõi của người dùng được lưu trữ trên cài đặt người dùng cá nhân của họ.

Tôi tưởng tượng một cách tiếp cận tương tự có thể được sử dụng để cung cấp quyền đối với bài viết và tránh UsersArticles cực kỳ căng thẳng bảng đơ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. Lỗi MYSQL:1045 (28000):Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost'

  2. Chỉ mục MySQL 5.0 - Duy nhất so với Không duy nhất

  3. MySQL Lược bỏ kết quả khi sử dụng Group_Concat và Concat

  4. Tính tổng các giá trị của mảng nhiều chiều theo khóa không có vòng lặp

  5. Mysql MySQL hoặc PHP Tự động chuyển đổi hàng thành hai cột