Google、ORMが生成するSQLが遅いときの調査を容易にする「sqlcommenter」をオープンソースで公開。Rails、Spring、Djangoなど主要なフレームワークに対応
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」)。
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を用いてトレースする場合にもコメント情報を得ることで、問題のコードを発見することを支援することができるようになります。
あわせて読みたい
Apple M1版Mac miniをベアメタルサーバで提供、VNCのリモートデスクトップやSSHで利用可能。仏クラウドベンダScalewayが1時間約12.5円で
≪前の記事
銀行APIからGoogleスプレッドシートへ入出金の転記など無料で利用可能に。会計自動化を促進するクラウドサービス「ActRecipe」が「Freeプラン」を発表[PR]