Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхраняване на промени в обекти:MySQL правилното решение ли е?

Ако бях изправен пред проблема, който споменахте, щях да проектирам LOG таблица, както следва:

  1. EntityName :(низ) Обект, който се манипулира.(задължително)
  2. ObjectId :Обект, който се манипулира, първичен ключ.
  3. FieldName :(Низ) Име на полето на обекта.
  4. OldValue :(Низ) Стара стойност на полето за обект.
  5. NewValue :(Низ) Нова стойност на полето за обект.
  6. UserCode :Уникален идентификатор на потребителя на приложението. (задължително)
  7. TransactionCode :Всяка операция, променяща обектите, ще трябва да има уникален код на транзакция (като GUID) (задължително),
    В случай на актуализация на обект, променящ множество полета, тази колона ще бъде ключова точка за проследяване на всички промени в актуализацията (транслацията)
  8. ChangeDate :Дата на транзакцията. (задължително)
  9. FieldType :изброяване или текст, показващ типа поле като TEXT или Double. (задължително)

При този подход
Всеки обект (таблица) може да бъде проследен
Докладите ще бъдат четими
Ще се регистрират само промените.
Кодът на транзакцията ще бъде ключовата точка за откриване на промени от един единствен действие.

BTW

Store the changes in the entitychange table and then store the value 
according to its datatype in entitychange_[bool|timestamp|double|string]

Няма да е необходимо, в единичната таблица ще имате промени и типове данни

Use partitioning by HASH(entity_id)

Ще предпочета разделяне по ChangeDate или създаване на архивни таблици за changeDate, които са достатъчно стари, за да бъдат архивирани и премахнати от основната таблица LOG

Should I use another database system, maybe MongoDB?

Всяка база данни се предлага със собствени проблеми и недостатъци, можете да използвате дизайна на всяка RDBMS. Полезно сравнение на бази данни, базирани на документи, като MongoDB може да се намери тук

надявам се да съм полезен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мога ли да извърша транзакция в две MySQL бази данни?

  2. PHP MySQL - За всеки 6 реда вмъкнете div?

  3. MySQL Уникален ключ за UTF8, нечувствителен към главни букви, но чувствителен на акцент

  4. PHP и MYSQL връзка с база данни и създаване на таблица само веднъж

  5. Не може да се свърже с хост MySQL база данни на приложение, разгърнато в CloudBees