sql >> Database >  >> RDS >> Mysql

Wijzigingen op entiteiten opslaan:is MySQL de juiste oplossing?

Als ik geconfronteerd zou worden met het probleem dat u noemde, zou ik de LOG-tabel als hieronder ontwerpen:

  1. EntityName :(String) Entiteit die wordt gemanipuleerd.(verplicht)
  2. ObjectId :Entiteit die wordt gemanipuleerd, primaire sleutel.
  3. FieldName :(String) Entiteitsveldnaam.
  4. OldValue :(String) Entiteitsveld oude waarde.
  5. NewValue :(String) Entiteitsveld nieuwe waarde.
  6. UserCode :unieke id van toepassingsgebruiker. (verplicht)
  7. TransactionCode :Elke bewerking die de entiteiten wijzigt, moet een unieke transactiecode hebben (zoals GUID) (verplicht),
    In het geval van een update over een entiteit die meerdere velden wijzigt, is deze kolom het belangrijkste punt om alle wijzigingen in te traceren de update(transcatie)
  8. ChangeDate :Transactie datum. (verplicht)
  9. FieldType :opsomming of tekst die het veldtype toont, zoals TEKST of Dubbel. (verplicht)

Met deze aanpak
Elke entiteit (tabel) kan worden getraceerd
Rapporten zijn leesbaar
Alleen wijzigingen worden vastgelegd.
Transactiecode is het belangrijkste punt om wijzigingen door een enkele actie.

BTW

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

Is niet nodig, in de enkele tabel heb je wijzigingen en gegevenstypen

Use partitioning by HASH(entity_id)

Ik geef de voorkeur aan partitionering op ChangeDate of het maken van back-uptabellen voor changeDate die oud genoeg zijn om een ​​back-up te maken en te verwijderen uit de hoofdlogtabel

Should I use another database system, maybe MongoDB?

Elke database heeft zijn eigen voor- en nadelen, u kunt het ontwerp op elk RDBMS gebruiken. Een nuttige vergelijking van op documenten gebaseerde databases zoals MongoDB kan hier gevonden worden

hoop behulpzaam te zijn.



  1. mysql, transponeer/draai rij naar kolom, variabele selecties

  2. Single is gelijk aan in MYSQL

  3. Mysql-telfrequentie

  4. Hoe parallelle plannen opstarten - Deel 3