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によるパーティション分割、またはメインのLOGテーブルからバックアップおよび削除するのに十分古いchangeDateのバックアップテーブルを作成することをお勧めします

    Should I use another database system, maybe MongoDB?
    

    すべてのデータベースには独自の長所と短所があり、任意のRDBMSで設計を使用できます。MongoDBここで見つけることができます

    お役に立てば幸いです。



    1. アソシエーションテーブルの正しい名前は何ですか(多対多の関係)

    2. php/mysql。少なくとも1つのmysql行フィールドに少なくとも2つの特定の単語が存在するかどうかを検出するmysql関数はありますか

    3. PostgreSQLとApacheSparkを使用したビッグデータ

    4. mysqlとmysqliの違い