質問
私たちはデータベースの黄金時代に生きており、高品質の商用データベースや無料データベースが多数存在します。これは素晴らしいことですが、欠点は、次のプロジェクトでデータベースが必要な人にとって、単純明白な選択肢がないことです。
- データベースを選択する際に使用する制約/基準は何ですか?
- あなたが使用したさまざまなデータベースは、これらの制約/基準をどの程度満たしていますか?
- データベースにはどのような特別な機能がありますか?
- 他の人に安心して勧められるデータベースはどれですか?
等...
解決
私はまず、データ アクセス、データ セキュリティ、スケーラビリティ、パフォーマンス、切断されたシナリオ、データ変換、データ サイズ設定に関するシステム要件を考えます。
一方で、開発者、オペレーター、プラットフォーム管理者の経験と背景も考慮してください。
また、プログラミング言語、オペレーティング システム、メモリ使用量、ネットワーク帯域幅、ハードウェアに関してどのような制約があるのかについても考慮する必要があります。
最後に、ライセンス、サポート、運用の予算などのビジネス上の問題についても考慮する必要があります。
これらすべてを考慮した結果、最終的には選択肢が 2 つだけになり、選択がより簡単になるはずです。
言い換えれば、組織やプロジェクトの制約やニーズに最も適したテクノロジーを選択してください。
確かに、多数の選択肢があることを考えると、それが明白な選択ではないという指摘は正しいと思いますが、これがプロジェクトにとって本当に実現可能な選択肢に絞り込むことができる唯一の方法だと思います。
他のヒント
私の選択基準 (主にプログラミング中心):
- メンテナンス:アップデート/ホットフィックスはどのようにインストールされますか?
- トランザクション制御:実装方法
- ストアド プロシージャはサポートされていますか?
- ストアド プロシージャで例外処理を使用できますか?
- コスト
- 利点として:ストアド プロシージャで再帰を使用できますか?(例えば。SQL Server 2000 では、IIRC を 32 回パスすると再帰が停止します)
企業環境にいるほとんどの人にとって、選択は「私たちが持っているもの」に帰着します。
幸運にも選択肢があるようですので、質問をざっと見て、最後にさらにいくつか質問させていただきます。
最大の基準はコストかもしれません。DBMS プラットフォームの料金を支払いたいですか?/支払う用意がありますか?そうでない場合は、Oracle、MS SQL Server、Sybase などはおそらく除外されますが、商用アプリを構築していない場合は、多少の調整の余地があるかもしれません。また、プラットフォーム - ハードウェア上でソフトウェアを実行できますか?
考慮すべき他の側面としては、予想される同時接続数、トランザクション対主読み取り、サイズ、可用性、その他多数が挙げられると思います。
「特別な機能」は基本的に避けるべきものです。私のシニカルな世界観では、それらはユーザーをプラットフォームに閉じ込めることを目的としています。したがって、Oracle の PL/SQL のような機能は、強力ではありますが (ライセンス コストが高くなるほど追加の CPU パワーが必要になる可能性があります)、移植性がありません。非常に大量のボリュームが予想される場合は、パーティション分割が役立つ可能性があると思います。
私は、思いつく限り、Oracle、MS SQL Server、MySQL、PostreSQL、SQLite、Sybase を使用してきました。私は Sybase 以外のすべてを喜んでお勧めします。Sybase については最近いくつか懸念を抱いています (私が間違っている可能性は十分にありますが、個人的にはお金を他のところに使ったほうがよいと考えています) が、すべてが同じアプリケーションにあるわけではありません。
理想的には、簡単に移植できるので、どの DB プラットフォームを使用しているかはあまり関係ないという温かい気持ちを持つことが好きです。データとビジネス ロジックの間に優れた抽象化レイヤーがあれば、たとえば優れた SQLite に対してローカルで開発し、たとえば Postgres 上で苦労せずに実装できるはずです。Rails の ActiveRecord のようなものと、予約語の違いなどを少し意識することで、ほぼ完全にコストがかかりません。
確かに、最も魅力的な要素は、あなたまたはあなたのチームの専門知識、または将来雇用する可能性のあるリソースプールです。私はほとんどの場合、LAMP チームでは MySQL を使用し、MS チームでは SQL Server を使用する傾向があります。これらの製品はいずれも、高負荷環境でも必要なすべてを実行できるためです。
他のデータベースの利点は、それを上手に使用する方法を学ぶ苦労に比べればわずかなものになるでしょう。私の意見では、これに対する唯一の例外は、次のような需要の高い環境です。
a.明白な選択が試みられ失敗している
b.スケーリングの利点は、予想外のものを使用するコストに見合った程度まで限界利益を倍増します。
新しいデータベースに長期的に精通し、少なくとも 2 人、できれば 3 人の優秀な DBA を雇用する必要があると思います。
そしてまず、失敗しているテクノロジーに関して彼らを雇おうとします。なぜなら、問題の原因はテクノロジー自体よりもその使用方法にある可能性が高いからです。
既存の答えは素晴らしいです。Oracle には現在、無料で利用できる 10g データベースの XE バージョンがあり、優れた Web ベースの開発環境である Application Express が付属していることを覚えておく価値があります。
4 GB HD、1 GB Ram という制限があり、CPU は 1 つだけ使用されます。ただし、小規模なシステムを実行するにはこれで十分であり、必要に応じて後で簡単にアップグレードできます。オラクルは学ぶのが最も難しいものの 1 つですが、履歴書に載せるのに最適な職の 1 つでもあります :-)
Microsoft の SQLServer にも「スターター」タイプのデータベースがあると思います。商用製品を軽視しないでください。データベース テクノロジに会社を賭けるのであれば、個人的には Oracle または Microsoft の製品を使用するほうがよいでしょう。オープンソースに何か問題があると言っているわけではありません。
しばらく時間をかけて評価してください :-)
- Linux、Web ホスト - MySQL (おそらく PostreSQL)
- 主流の中小企業 - MS SQL
- Big Iron (銀行など) - Oracle
これら 3 つ以外のことを考えるのはマスターベーションです。他のデータベースは、おそらくまだ遭遇していない特定の問題を解決するためのニッチな製品についての議論になります。上記 3 つ以外を選択した場合は、次のようになります。
- プロジェクトに取り組む人やデータベースを維持する人を見つけるのに苦労する
- 学術的な議論をせずに決断を動機づけるのに苦労する
- 数年後、誰かがあなた、あなたの先祖、そしてあなたの血統を呪い、そしていずれにしてもあなたの選択を置き換えるでしょう。
アーキテクチャの進歩が見られるのはニッチなデータベースではありません。優れた製品を見つけるために、四肢を絞って探す余裕がある (そしてそうすべきである) のは、ミドルウェア、メッセージング、クラウド サービスなどのテクノロジーです。