Google、ORMが生成するSQLが遅いときの調査を容易にする「sqlcommenter」をオープンソースで公開。Rails、Spring、Djangoなど主要なフレームワークに対応

2021年2月3日

SQL文を直接書かなくとも、自動的にSQL文を生成、実行してくれるORM(Object-Relational Mapper)は、プログラミングを容易にしてくれる技術としてRailsやHibernate、Springなどさまざまなフレームワークなどで活用されています。

一方で、ORMが生成するSQL文はときに複雑に、あるいは非効率なものとなり、データベース処理の遅さにつながることもあります。

このとき、SQL文の生成と実行を明示的にコードとして記述する必要がないというORMの特徴が、なぜデータベース処理が遅くなったのか、どのようなSQL文が生成され、そのどこに原因があるのか、といった調査を難しくている面があります。

そうした課題を解決するためにGoogleがオープンソースとして公開したのが「sqlcommenter」です(発表したブログ「Introducing Sqlcommenter: An open source ORM auto-instrumentation library」)。

fig

sqlcommenterはORMが生成するSQL文にコメントを追加することで、データベース処理が遅くなった時などの切り分けをしやすくするというもの。以下はsqlcommenterのWebサイトからの引用です。

sqlcommenter is a suite of middlewares/plugins that enable your ORMs to augment SQL statements before execution, with comments containing information about the code that caused its execution. This helps in easily correlating slow performance with source code and giving insights into backend database performance.

sqlcommenterはORMが生成する実行前のSQL文にコメントを補完するミドルウェア/プラグインです。コメントにはその実行されるSQL文生成の元になったコードに関する情報を含んでいます。これによりデータベースの性能低下となったコードの調査が容易になり、バックエンドデータベースの性能に関する洞察が得やすくなります。

sqlcommenterが対応するプログラミング言語は下記。

  • Java
  • Python
  • Node.js/JavaScript
  • Ruby

対応するフレームワークは下記。

  • Django
  • Knex.js
  • Psycopg2
  • Sequelize.js
  • SQLAlchemy
  • Hibernate
  • Express
  • Spring
  • Flask
  • Rails

対応するデータベースは下記。

  • PostgreSQL
  • MySQL
  • MariaDB
  • SQLite
  • Google Cloud SQL

sqlcommenterを設定やソースコードの一部を変更して組み込むことで、データベースのログにコメントが含まれることで遅いSQL文がどのコードから生成されたかを割り出すことや、OpenCensus/OpenTelemetryを用いてトレースする場合にもコメント情報を得ることで、問題のコードを発見することを支援することができるようになります。

Tags: Java MySQL PostgreSQL プログラミング言語 Google MariaDB Node.js Python Ruby SQL

このエントリーをはてなブックマークに追加
ツイート
follow us in feedly





タグクラウド

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本