web-dev-qa-db-ja.com

Postgres vs Firebird

私は次の開発プロジェクトでFirebirdまたはPostgresのいずれかを使用することを検討しています...主に両方がBSDのようなライセンスの下で利用可能であるためです。

私は2つのデータベースの素晴らしい比較を http://web.archive.org/web/20100305134128/http://www.amsoftwaredesign.com/pg_vs_fb で見つけました。

しかし、この比較は4年以上前のものであり、両方のデータベースはそれ以来長い道のりを歩んできました。

FirebirdとPostgresの両方の現在のバージョンに関連するように比較テーブルを更新することを気にする人はいますか...または2つのデータベース間で最近の良い比較を行うサイトへのリンクがありますか?

24
Tedi

機能のリストを比較するだけでなく、次のような質問に答える際にも、RDBMSのようなテクノロジーを選択する必要があります。

  • それはあなたのニーズに対して十分に信頼できますか?
  • それはあなたのすべてのニーズに合っていますか?
  • パースペクティブ/サポート/開発/ドキュメントとは何ですか?

私にとって、FBは良い選択ではありません。私は2つの話を指摘することができます:

  • テーブルに制約を書きました。ユーザーはいくつかの文字列をテーブルに追加します。しばらくすると、ユーザーはもう1つの文字列を追加しようとしますが、FBは制約について文句を言います。どうしましたか?この新しい文字列は確かに制約を受けています。問題は、その前に追加された最後の文字列にあります!その文字列は少し前に追加されましたが、間違っていました。これまでのところDBにあり、現在DBに間違っているデータがいくつあるかは誰にもわかりません。ひどい。 FBは間違った方法で制約を実装します。
  • ストアドプロシージャ(SP)を作成しました。 FBはそれをDBに保存し、FBはそれを実行でき、それは機能します-期待どおりにデータを選択します。誰も警告しません。その後、バックアップはエラーなしで実行されます。そして、復元時にのみFBは、SPおよび...何...現在復元可能なバックアップコピーがありません。

私はさらに2つか3つ指摘することができますが、これらは私が言うのに十分です:いいえ、FBは私の選択ではなく、RDBMSではなく、おもちゃです。

そして、彼らは悪いドキュメントを持っています。実際、各リリースで実際の参照はありません。人々がフォーラムで尋ねるとき:リリースXXの機能の完全なリストは何ですか?標準的な答えは次のとおりです。最後の公式Interbaseリリースからリストを取得し、それ以降のすべてのリリースの「リリースノート」から関数を追加(削除)します。

そして、彼らは奇妙なサポート/開発戦略を持っています。彼らは、ユーザーにとって本当に重要なことや迷惑なことではなく、彼らにとって興味深いこと、深い技術的な問題に取り組んでいます。

30
otzi

私は長い間Firebirdを使用してきましたが、決して使用しないことをお勧めします。それらには、Postgresにはない多くの根本的な問題があります。多くは言うまでもありませんが、「ビューの変更」コマンドがまだないことを言ってください。ビューを変更するには、ビューとそれに依存するすべてのビューをドロップして再作成する必要があります。これは、FBの多くの誤動作の1つです。これらのDBエンジンを比較することはまったく正しくありません。停電がなくても、通常のワークロードでFirebirdデータベースが破損するケースが多かったです。それでも決定する場合は、Firebirdを使用しないでください。すでにFBを選択している場合は、しばらくして私の言葉を覚えているでしょう:)

19
Alexey Sviridov

Firebirdについてコメントできます。最初の比較以降、以下が変更されました。

マルチスレッドアーキテクチャは利用できますか?はい(スーパーサーバー)

実際、スケーラビリティにはクラシックサーバーが推奨されるサーバータイプです。 Firebird 2.5以降、SuperClassicと呼ばれるアーキテクチャもあります。違いについて小さな投稿を書きました: SuperServer、ClassicServer、またはSuperClassic?

トランザクション情報をデータと同じファイルに保存しますか?はい(赤)

これが赤で書かれるのにどのように問題になるのかわかりません。 Firebirdは注意深い書き込みを使用して、データベース構造が常に一貫していることを確認します。

一時テーブル?番号

Firebird2.1で利用できます。 リリースノート

豊富な組み込み関数?番号

Firebird2.1もこれを改善しました。 リリースノート

複数の認証方法(つまりLDAP)いいえ

LDAPサポートはありませんが、Firebird2.1ではWindows認証が可能です。 リリースノート

ユーザー定義タイプを作成しますか?番号

著者がここで何を意味するのかはわかりませんが、Firebirdには永遠にドメインがあります。

圧縮するためにバックアップ/復元が必要ですか?はい(赤)

議論の余地がある。データベーススペースは再利用されます。本番環境でデータベースを縮小する必要性を想像するのは難しいと思います。

クエリでPOSIX正規表現を使用しますか?番号

Firebird2.5は正規表現をサポートしています。 リリースノート

データベースの監視?番号

はい、Firebird2.1はシステムテーブルを介したデータベース監視をサポートしています。 Firebird 2.5は、トレース機能のサポートを追加します。
私は少なくとも1つの優れた Firebird用のデータベース監視ツール を知っています。 ;)

ローカルまたはリモートの他のサーバー上のデータベースにクエリを実行する機能。番号

Firebird 2.5は、リモートデータベースにクエリを実行できます。 リリースノート

11
Douglas Tosi

引用したページのPostgres列の各NoはまだNoですが、データベース内のすべてのテーブルに選択権限のみを付与することで、読み取り専用データベースを効果的に使用できます。ただし、8.2以降には多くの新機能があります。いくつか 8.4から

  1. 窓関数
  2. 一般的なテーブル式と再帰クエリ
  3. 関数のデフォルトおよび可変個引数パラメーター
  4. 並列復元
  5. 列のアクセス許可
  6. データベースごとのロケール設定

...そして 8.3からのいくつか

  1. 全文検索はコアデータベースシステムに統合されています
  2. 新しい演算子とXMLデータ型を含むSQL/XML標準のサポート
  3. 列挙型データ型(ENUM)
  4. 複合型の配列
  5. ユニバーサル一意識別子(UUID)データ型
  6. NULLを最初にソートするか最後にソートするかを制御する機能を追加します
  7. 更新可能なカーソル
  8. サーバー構成パラメーターを機能ごとに設定できるようになりました
  9. ユーザー定義型に型修飾子を含めることができるようになりました

...ファイヤーバードがこれらを持っているかどうか、私は知りません。

3
Kev
3

Firebirdを使用している場合は、 Firebird 2.1リリースノート を読んで、Linuxで実行されている古いFirebirdバージョンでのデータベース破損の問題を理解することをお勧めします。

要するに、それはLinuxのバグと関係があります。古いFirebirdの場合、回避策は、影響を受けるファイルシステムをsyncオプションでマウントすることです。この問題はFB2.1で修正されています。

1
user267808

ファイルシステムベースのバックアップが可能
はい(ポストマスターを停止する必要があります)

真実ではない。 8.1以降(私が正しく覚えている場合)、WALアーカイブをアクティブにしてから、何もシャットダウンせずにファイルシステムベースのバックアップを作成することが可能です。詳細については、ドキュメントでPITR(point-in-time-recovery)を探してください

1
pfote

重要なことの1つは、展開です。

  • FirebirdはLinux上のext3ではうまく機能しません。XFSまたは同様のものを使用する必要があります。
  • 私の知る限り、PostgreSQLはまだWindowsサーバーでは実行されません。
1
Lars D