2

PostgreSQLで新しいデータ型と新しい演算子を作成したいと思います。ドキュメントでは、たとえばCで新しいソースファイルを組み込んだり、新しいデータ型と演算子を作成したりできることがわかりました。PostgreSQLはその方向に拡張可能です。詳細については、ドキュメントをご覧ください。

しかし、PostgreSQLにはオープンソースもあり、ソースコードを変更して新しいデータ型を追加し、新しいバージョンをコンパイルすることができます。

それでは、PostgreSQLに新しいデータ型を含める各方法の違い、長所、短所を知りたいと思います。クエリ処理のパフォーマンスが非常に心配です。ありがとうございました。

4

3 に答える 3

8

PostgreSQL を変更する場合は、コード ベース全体を維持する必要があり、マイナー バージョン間であっても、アップグレードするたびにパッチを適用する必要があります。拡張機能を作成した場合、維持する拡張機能はわずかしかありません。また、必要に応じて小さな拡張プログラムを配布する方がはるかに簡単です。

于 2012-11-22T02:51:50.463 に答える
0

There are no differences between internal operators and datatypes and custom operators and datatypes - and then it has same performance. Outer and inner implementation respects same rules and patters. So there is not reason for hacking Postgres for it.

We have patched PostgreSQL in GoodData - and we have a own extensions too - everywhere where it is possible and practical, we use a custom extensions - and where it is not possible, we use a own hacks - backports from 9.2, 9.3, some enhancing pg_dump and psql, statistics - but we have a active PostgreSQL's hackers in company. It is not usual. For users without experience with PostgreSQL hacking are creating extensions safe and good performance solution.

于 2012-11-22T07:39:04.097 に答える
0

私はJachimの答えに完全に同意します。別のことは次のとおりです。

PostgreSQL で独自の C 言語拡張機能を開発することは (どちらかというと) 十分に文書化されています。単純なプログラムは、コードの関数を 1 つだけコンパイルし、対応する関数を記述するだけで実行できます。カスタム データ型の追加はもう少し複雑ですが、実行可能です。私が開発した拡張機能は、C++ で書かれていて、PostgreSQL のプレーンな C の間にラッパーの接着剤が少し入っているだけでした。これにより、開発がはるかに柔軟になりました。

ただし、PostgreSQL コアの変更は、どのように開始し、何を行うかという点でより複雑です。そして最後に、同じものをアーカイブします。

要約すると、C 言語関数にはすべての利点があります。

  • PostgreSQL の内部データ型を利用した高性能
  • シンプルなプログラミング インターフェイス
  • 文書化され、おそらく非常に安定した関数インターフェイスを備えたほんの少しのコード

PostgreSQL のコアを変更する利点は見当たりませんが、多くの欠点があります。

  • 長いコンパイル時間
  • 独自のコード ブランチを維持し、現在のリリースにパッチを定期的に再適用する
  • バグのリスクが高くなります。

C 言語インターフェイスを使用するさまざまな方法の例が必要な場合は、PostGis ソース コードを参照してください。それらはほぼすべての関数型を使用しており、コードには多くの巧妙なトリックが含まれています。

于 2012-11-22T06:53:49.673 に答える