📄
2022/10/1「社内LT会」Prisma ORM
この記事は2022/10/1に作成しました。
※この資料は2022年10月に社内で行ったLT会の資料をqiita slide化したものです
※記事の内容は間違いがあり得ますので、ご了承いただけると幸いです。内容の間違い、認識の違い、違う意見などありましたら、コメント大歓迎です!
今日、持ち帰って欲しいのは
ORMに少しでもポジテイブな興味を持っていただければ!
ORMご存じですか?
ご経験はありますでしょうか?
ORM?
- Object-relational mapping
- データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法
ORM?
ORM on Nodejs
Prisma ORM 👈こちら使ってみました
※その他 : TypeORM, Sequelize, Mongoose, ...
本題
- なぜ Prismaだったのか?
- なぜ ORMだったのか?(with prisma)
- Demonstration
- 実際使ってみると課題もある!
- <まとめ>それでもORMは積極的に採用する価値がある
- REFERENCE LINK
なぜ Prismaだったのか?
①Openbaseにいい感じにGithub Startsがついていた
なぜ Prismaだったのか?
②ドキュメントが着実な印象
なぜ Prismaだったのか?
③参考資料が多くあった
大事なのは…
なぜORMだったのか?(with PrismaORM)
なぜ ORMだったのか?(with prisma)
①DB SchemaをMigration管理したい
なぜ ORMだったのか?(with prisma)
- ②DB定義をcode-base document化したい。
- ③Data Modelを自動生成しTyped Object化したい
なぜ ORMだったのか?(with prisma)
- ④動的にQueryを書かなくていい
- 一元化されたDatabase Operation Interface with Prisma Model(like Repository)
- => ③④が繋がり、維持補修、テストがしやすい!
https://www.prisma.io/docs/concepts/components/prisma-client/crud
Demonstration
- Prisma Schema 作成
- Prisma Model生成 + ERD 自動生成
- Prisma Migrate 実行
- Postgresql 確認
※デモにおいては以下の資料をご参考ください。
Start from scratch with relational databases (15 min) - Prisma
実際使ってみると課題もある!
- 複雑なQuery要件には要注意!(複雑な要件、性能最適化課題)
- ORM Libraryで提供する操作interfaceだけでは逆に複雑化されることも多い
- Query OptimizeもORMに任せるので、必ずしも性能がいいQuery動作をするとは保証できない
- 例: 集計要件、多数のテーブル更新や他のテーブルデータ参照更新など
- データモデリングスキルが重要!(学習コスト・運用コスト)
- 1テーブルに席にが集約せず、また不要に分けない、絶妙なラインの設計が求められる
- DDDアーキテクチャーと相性がいいのでおすすめ
まとめ
それでも、ORMは積極的に採用する価値がある
REFERENCE LINK
- Prisma ORM officlal
- Docs
- Youtube recommend
REFERENCE LINK
- Blog
- 次世代の Node.js ORM 、Prisma を試す
- How to Get Started with Prisma ORM for Node.js and PostgreSQL
- Prisma: Node.js & TypeScript向けの完璧なORM
- Prismaチュートリアル > Chapter 05 トランザクション (他のChapterも良い)
- Node.js(Express.js)環境でPrisma ORMを使いこなすための基礎
- Prismaでtruncateする (RawQuery使い方)
- PrismaでのInner Joinのやりかた
- PrismaPromise とは何か
- Prisma チートシート
- prismaのER図をmermaid形式で吐くには
Discussion