8 ポイント 投稿者 GN⁺ 2024-07-08 | 1件のコメント | WhatsAppで共有
  • PongoはJSONBサポートを活用して、PostgreSQLをドキュメントデータベースとして扱う
    • JSONBはJSONデータをバイナリ形式で保存し、性能と保存効率を向上させる
  • PostgreSQL JSONBのバイナリ形式は、データが事前にパースされることで高速な読み書きを可能にする
    • JSONBはGINやGiSTインデックスのような高度なインデックスオプションをサポートし、検索速度を向上させる
    • JSONBは半構造化データを保存しながら、PostgreSQLの強力なクエリ機能を利用できる
  • PongoはORMか?
    • いいえ。ドキュメントデータの特性を効果的に処理することに重点を置いている
    • Node.jsのORMでもJSONBを扱えるが、高度なクエリではJSONPathまたはJSONB関数を使う必要がある
    • Pongoがそれを代わりに処理してくれる
  • プロダクション投入の準備はできているか?
    • 現時点でも安全に利用できるが、MongoDBと100%互換ではない
    • Pongoは新しいプロジェクトであり、一部の機能が不足している可能性がある
    • コミュニティプロジェクトのため、問題を見つけた場合はGH IssueやPull Requestを通じてサポート拡張やテストカバレッジの追加を推奨

GN⁺の要約

  • PongoはPostgreSQLをドキュメントデータベースとして使い、MongoDB APIをPostgreSQLクエリに変換するツール
  • JSONBの利点を活用して、性能と保存効率を向上
  • 高度なクエリとインデックスをサポートし、柔軟性と一貫性を提供
  • PongoはORMではなく、ドキュメントデータの特性を効果的に処理することに重点を置いている
  • 新しいプロジェクトのため一部機能が不足している可能性はあるが、コミュニティの貢献によって拡張できる

1件のコメント

 
GN⁺ 2024-07-08
Hacker Newsの意見
  • PongoをNoSQLセクションに追加した
  • ハイブリッドモデルが最適な選択だ。コアとなるフィールドは通常のカラムにし、動的なデータ構造はJSONBで維持する
  • 技術的にはすばらしいが、READMEには「なぜ」のセクションが必要だ。Mongo APIを使いたいのか、それとも既存プロジェクトのコードをコピーしたいのかが気になる
    • 他のプロジェクトのクエリを再利用するということなら、AIがかなりうまくやってくれる
  • MongoからPostgresへプロジェクトを移行するときに、似たようなアプローチを使った。パフォーマンスは大幅に向上した
    • 将来のプロジェクトでは、Mongoとの類似性をすべて取り除くつもりだ
  • PongoがMongooseと互換性があるのか気になる。Mongoユーザーの大半はMongooseを使っているので、これをサポートすればより多くのユーザーを獲得できるだろう
  • 2023年11月にPongoについてのジョークツイートをしていた。面白い偶然だが、自分は未来を予測できると思うことにする
  • JSONBカラムを多用している。特定のアプリケーションには適しているが、クエリの複雑さを増し、リレーショナルなアプローチで得られるクエリ性能向上の手段を失うことになる
    • JSONBは便利だが、リレーショナルデータベースの利点を手放すべきではない
  • FerretDBと比べてどうなのか気になる
  • MongoDBはPostgresのserializable isolationと同等の機能を数年前からサポートしている。「強力な一貫性の利点」が何を意味するのかわからない
  • Oracleデータベースは数年前からMongoDB互換APIを提供している