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

Cập nhật bảng cơ sở dữ liệu không chuẩn hóa

Có một số cách để xử lý tình huống này:

  1. Bạn có thể sử dụng trình kích hoạt cơ sở dữ liệu. Đây không phải là một tùy chọn bất khả tri đối với cơ sở dữ liệu và hỗ trợ RoR của nó không tồn tại theo như tôi biết. Nếu tình huống của bạn yêu cầu hoàn toàn không có sự mâu thuẫn dữ liệu Đây có lẽ sẽ là cách hiệu quả nhất để đạt được mục tiêu của bạn, nhưng tôi không một chuyên gia DB.
  2. Bạn có thể sử dụng thao tác hàng loạt để đồng bộ hóa hai bảng theo định kỳ. Phương pháp này cho phép hai bảng của bạn tách rời nhau và sau đó đồng bộ hóa lại dữ liệu thường xuyên. Nếu tình huống của bạn cho phép sự thay đổi này xảy ra, thì đây có thể là một lựa chọn tốt vì nó cho phép cập nhật DB trong giờ nghỉ. Nếu bạn cần thực hiện đồng bộ hóa 5 phút một lần, bạn có thể sẽ muốn xem xét các tùy chọn khác. Điều này có thể được xử lý bằng mã ruby ​​của bạn, nhưng sẽ yêu cầu một trình chạy công việc nền thuộc một số loại (cron, delay_job, redis, v.v.)
  3. Bạn có thể sử dụng một lệnh gọi lại từ bên trong mô hình Rails của mình. Bạn có thể sử dụng "after_update :sync_denormalized_data" . Lệnh gọi lại này sẽ được bao bọc trong một giao dịch cấp cơ sở dữ liệu (giả sử cơ sở dữ liệu của bạn hỗ trợ các giao dịch). Bạn sẽ có mã cấp Rails, dữ liệu nhất quán và không cần quy trình nền với chi phí thực hiện hai lần ghi mỗi lần.
  4. Một số cơ chế mà tôi chưa nghĩ ra ....

Những loại vấn đề này rất ứng dụng cụ thể. Ngay cả trong cùng một ứng dụng, bạn có thể sử dụng nhiều hơn một trong các phương pháp tùy thuộc vào tính linh hoạt và các yêu cầu về hiệu suất có liên quan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xuất Cơ sở dữ liệu MySQL sang Cơ sở dữ liệu SQLite

  2. Người theo dõi / cấu trúc cơ sở dữ liệu sau

  3. Sự khác biệt giữa FIELD () và FIND_IN_SET () trong MySQL

  4. Chuyển từ MySQL 5.7 sang MySQL 8.0 - Những điều bạn nên biết

  5. Tên cơ sở dữ liệu MySQL mặc định