📄

2022/10/1「社内LT会」Prisma ORM

2024/05/24に公開

この記事は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


REFERENCE LINK

Discussion