# 2021-03-25 メンターセッション ## 質問 ### テーブルにおいて一意になるIDはどのように設定すればよいのか - アプリ側でUUID割り振る - DDDでエンティティ作っているから - オートインクリメントでは、DBに永続化されるまでIDが確定しない - エンティティに対してIDを外から設定可能なSetterを作る必要がある ### ER図を作成するおすすめツール - PlantUML … たくさんいるチームで共有したい - miro … ざっくり書くとき - 概念だけ書く → ドメインモデルに落とす、みたいなプロセスで作りやすい [Miro: the collaborative whiteboard platform for distributed teams](https://miro.com/signup/) ### ER図の記法について - リクルート時代はIE記法で書いていた - 覚える量が少ない方を選びたいという理由 ### 楽観ロックについて - `AND Version = ...`の書き忘れ → 防げないかも - いつ使うのか? - コンフリクトが発生する頻度が高ければ悲観ロック、低ければ楽観ロックで良い - 悲観ロックはオーバーヘッドでかい - 楽観ロックを自分で実装したことはない - ORマッパーが解決してくれるなら…と検討したことはある - prisma - ロックキーはDBで用意したい - RDBじゃなくてファイルに保存しようみたいな話になったら… - アプリケーション側で用意するとなったら、責務の範囲がおかしくなってないか? **楽観ロックは実装コストが高いので、可能なら避けたい** ### ロック解除漏れについて - ロックには行レベルとテーブルレベルの2種類がある - InnoDBは自動でデットロックを解除する仕組みが用意されている - デフォルトで50秒経過してロックを取得できなければ諦める(InnoDBの仕組み、行レベル) - テーブルレベルのロックだと、デフォルトでは1年間頑張るらしい ### データベース関連のドキュメントについて - PrAhaはドキュメントを作らない会社なので、特に伝えられることがない - 集約とか、雑な線とかだけの関係図 - 多対多とかそういう関係とかは書いてない - PKとかFKとかも - ドキュメントなくても、ドメイン層とデータベースのスキーマ見てもらったらわかってもらえるかな、でやっている - ドキュメントは陳腐化するので、ソースコード見てもらったほうがいいと思っている - prismaなどのORMを使えば、マイグレーションの履歴と最新のスキーマ情報を確認できるので、そこからDBの定義は確認できる - rails → ridgepole ###### Tags: `Team-2`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up