Upgrade to Pro — share decks privately, control downloads, hide ads and more …

技術負債とデータ構造

naQamura
January 25, 2024

 技術負債とデータ構造

naQamura

January 25, 2024
Tweet

More Decks by naQamura

Other Decks in Programming

Transcript

  1. ID name address 1 中村 熊本市西区… 2 … ... ID

    name quantity 1 チョコレート 22 2 … … ID user_id item_id orders 1 1 1 1 2 … … … Users Items Orders Data structure ユーザー、商品などのマスタデータ 注文データなどのトランザクションデータ ID でリレーションを貼る ようなものが構成として思いつくのではないでしょうか
  2. ID name address 1 中村 つくば市春日… 2 … ... ID

    name quantity 1 チョコレート 22 2 … … ID user_id item_id orders 1 1 1 1 2 … … … Users Items Orders Update Records 例えばえばこいう場合 ユーザーが引っ越した 商品がリニューアルした
  3. ID name address 1 中村 つくば市春日… 2 … ... ID

    name quantity 1 チョコレート 22 2 … … ID user_id item_id orders ship_to quantity 1 1 1 1 熊本市西区… 24 2 … … … … … Users Items Orders 1. Snapshot データの更新に追従しないデータをそのまま保 存する。データの量・性質によってはusers, items テーブルを丸々コピーしても良いかも。
  4. ID name address 1 中村 熊本市西区… 2 … ... ID

    name quantity 1 チョコレート 24 2 チョコレート 22 Users Items Orders 2. Domain Logic 変更不可なデータを更新させず、データを追加 する。バリデーションで防いでもいいし、デー タ更新UI を提供しないことで対応するなど(ル ールの永続性に問題はあるが) ID user_id item_id orders 1 1 2 1 2 … … …
  5. ID name 1 中村 Users Orders 3. Immutable Datamodel データ構造でデータの不変性を担保する。データ取得

    する際に必要な時点のデータを取得します。 今回の場合: WHRER orders.created > addressed.created ORDER BY addresses.created DESC LIMIT 1 ID user_id item_id orders created 1 1 2 1 2015/01/01 2 … … … ID user_id address created 1 1 熊本市西区… 2010/01/01 2 1 つくば市春日… 2020/01/01 Addresses