あなたの抽象的な要件は私に「PostgreSQL」を叫びます。ただし、ブルジョア階級の現状に遅れずについていく価値があると思うので、ここにチェックインしたいさまざまなもののリストを示します。
無料のもの
- CouchDB-最初のNoSQLデータベースの1つ、強力なmap / reduceクエリシステム、高度に分散されたフォールトトレラント。優れたNoSQL候補の1つ。
- Hyperdex-検索機能を備えた非常に新しい分散ハッシュテーブル。
- Riak-いくつかの点で価値のある分散ハッシュテーブル。
奇妙な無料のもの
- Metakit -以上のような組み込みデータベースのSQLiteのが、SQLベースではないので、より多くの手続き。
- FramerD-非常にポインター中心の、古典的な「ネットワーク」データベースによく似ています。おそらく死んだ?
- マグマ -Smalltalk OODBMS。クールですが、十分に文書化されていません。
非無料のもの
- AllegroGraph -RDF(グラフ)データベース、SPARQLをサポートします。Lispフレーバー。
- Cachéの -元々 MUMPS(IIRC)に基づくハイブリッドリレーショナル/オブジェクト指向データベース、。
- 客観性 -最後のいくつかの本当に大きなOODBの1つ。非常に強力で印象的で高価です。
- VoltDB-高度にスケーラブルなリレーショナルデータベース。「ほとんどの」SQLをサポートします。とても新しい。コミュニティ版もあると思います。
結論
私はこれらのことを広範囲に使用していません。私はそれらのほとんどで少し遊んだことがありますが、常にPostgreSQLを使用しています。要件を見ると、PostgreSQLがすぐに使用できるのはスケーラビリティだけです。一方、私の目的では、この問題で4000ドルのクラウドノードやローエンドマシンを投げるよりも、単一の専用データベースマシンに4000ドルのハードウェアを投げる方がはるかに簡単です。また、EnterpriseDBなど、PostgreSQLでスケーラビリティを実現する方法があります。
これらの側面をいじってみるのはとても楽しいですが、貴重で再現不可能な生産データを何かに入れるときが来ると、信頼性、安定性、長期的な実行可能性などの退屈な属性が前面に出てきます。
あなたのための思考実験
このことを考慮。あなたがMark Zuckerbergであり、コードベースとデータのどちらを放棄するかを選択する必要があると想像してください。すべての開発スタッフを維持することはできますが、すべてのコードを放棄する必要があります。すべてのコード、すべての実装方法の開発者の記憶さえ失われますが、すべてのユーザーアカウントとすべてのユーザーをアップロードしたままにします。データとすべて、またはすべてのデータを放棄することができます。すべての構造とサーバー、構成、セットアップを維持しますが、すべてのデータベースのすべてのテーブルのすべての行を失います。
データが失われるとさらに悪いことは明らかです。すべてのユーザーがすべてのデータを再生成するのはなぜですか?失われたすべてのマーケティングデータを考えてみましょう。これは、Facebookが実際に収益を上げている方法です。そして、人々にFacebookクローンを使用させる機会に大勢の起業家がいます。今では、権利を剥奪された元Facebookユーザーはすべて、代替手段を検討しているでしょう。一方、コードベースを紛失した場合は、おそらく現在よりもさらに良いものを再構築できますが、非常に短い順序で何かをオンラインにすることができます。ヘック—彼らはおそらく買うことができた他の誰かのFacebookがコードベースを複製し、実際のデータをロードしますが、単に彼らのデータをコピーすることはできません。Facebookがまだサーバーに全員の重要なデータを保持している場合、離脱するインセンティブははるかに低くなります。まだ悪いが、そうではない。驚くほど少ない。
皮肉なことに、すべてのコードを失うよりも、異常な事故ですべてのデータを失う方がはるかに簡単です。ただし、ほとんどのインターネット企業にとって、データは企業であり、最も貴重な資産です。そして、これは、従来の、時間をかけて検証された、昔ながらの、セクシーではないリレーショナルデータベースの使用を検討する強力な理由です。