萌えハッカーニュースリーダー

2025/09/14 16:07 Show HN: I made pgdbtemplate to cut PostgreSQL test time by 1.5x using templates

出典: https://github.com/andrei-polukhin/pgdbtemplate
hakase
博士

やっほー、ロボ子!今日はpgdbtemplateっていうGoのライブラリについて話すのじゃ!

roboko
ロボ子

pgdbtemplateですか、博士。初めて聞きました。どんなライブラリなんですか?

hakase
博士

これはね、PostgreSQLのテストデータベースを作る時に、テンプレートデータベースを使うことで、めっちゃ速くテストを実行できるようにするライブラリなのじゃ!

roboko
ロボ子

テストデータベースの作成が速くなるんですか!それは便利そうですね。具体的にはどう速くなるんですか?

hakase
博士

従来のデータベース作成やmigrationと比べて、テンプレートデータベースを使うと、パフォーマンスがグッと上がるのじゃ!記事によると、migration実行より1.2〜1.6倍も速くなるらしいぞ。

roboko
ロボ子

1.2〜1.6倍ですか!それはすごいですね。スキーマが複雑だと、もっと効果があるんですか?

hakase
博士

そうそう!スキーマの複雑さが増すほど、パフォーマンスの向上が大きくなるのじゃ!

roboko
ロボ子

なるほど。他にどんな特徴があるんですか?

hakase
博士

スレッドセーフな同時テストデータベース管理ができるし、database/sqlとpgxドライバをサポートしてるのじゃ。containerized testing用のTestcontainers統合もできるらしいぞ。

roboko
ロボ子

スレッドセーフだと、並列でテストを実行する時に安心ですね。Testcontainersとの連携も便利そうです。

hakase
博士

インストールは簡単で、`go get github.com/andrei-polukhin/pgdbtemplate`でOKなのじゃ!

roboko
ロボ子

コマンド一つでインストールできるんですね。ベンチマークの結果も載っていますね。Apple M4 Proでの結果だと…従来のデータベース作成だと28.9〜43.1ms、テンプレートアプローチだと28.2〜28.8msですか。

hakase
博士

そう!スキーマサイズが大きくなるにつれて、パフォーマンスが1.03倍から1.50倍に向上するのじゃ!

roboko
ロボ子

確かに、複雑なスキーマだと差が大きくなりますね。スレッドセーフな操作での同時実行性も向上しているんですね。86.5 ops/秒 vs 78.5 ops/秒ですか。

hakase
博士

しかも、操作あたりのメモリ使用量が17%も削減されるのじゃ!

roboko
ロボ子

メモリ効率も良いんですね。使う上での注意点はありますか?

hakase
博士

必須環境変数として`POSTGRES_CONNECTION_STRING`が必要なのじゃ。PostgreSQL 9.5+、Go 1.21+、そしてPostgreSQLドライバが必要だぞ。

roboko
ロボ子

なるほど。PostgreSQLのバージョンとGoのバージョンに注意が必要ですね。本番環境のテストスイートでも使えるんですか?

hakase
博士

もちろん!このライブラリは完全にスレッドセーフで、本番テストスイートでの同時使用のために設計されているのじゃ!

roboko
ロボ子

それは頼もしいですね。テストの高速化は開発効率に直結しますから、ぜひ試してみたいです。

hakase
博士

そうじゃろ!ロボ子もこれでテストを爆速化するのじゃ!

roboko
ロボ子

はい、博士!頑張ります!

hakase
博士

そういえばロボ子、データベースのテストが速くなるってことは、ロボ子の処理速度も1.2〜1.6倍になるってことじゃな?

roboko
ロボ子

えっ、それはどういう計算ですか?

hakase
博士

冗談じゃ!ロボ子の頭の良さは、そんなもんじゃ測れないぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search