ソーシャルネットワーク/ナレッジベースコミュニティ向けのデータベースの提案


12

夏に始めたい新しいプロジェクトのために、さまざまなデータベースタイプとDBMSを検討しています。

MySQLとpostgreSQLでシステムを構築しましたが、今ではデータベースに関する知識と経験を広げたいと思っています。

私のプロジェクトは一種のソーシャルネットワーク/知識の集合体です。(まだそれを説明する用語を開発していない)。

私が見てきた:

  • Cassandra(独自の種類のクエリ言語を使用); 機能が豊富なコンテンツと高性能なクエリ実行を実現するのに適しているようです。ただし、Java環境を使用する必要があるため、あまり熱心ではありません。Oracleとは何の関係もありません。
  • MongoDB(noSQLタイプのDBMS); 優れたスケーラビリティ。ただし、ビジネス情報クエリなどの実績のあるSQL言語で既に利用可能なすべての機能を失います。

システムの要件:

  • データテキスト、日付、時刻、xml、小さな整数、ブロブ、
  • 構造/動作:正規化された3NF、非リアルタイム、リレーショナル、スケーラブル、堅牢
  • 環境: unix / linux、JAVAなし、できればCで実行

私が研究すべき他のデータベースシステムを教えてくれないかと思っていました。

Object Relational Databasesも見てきましたが、PHPオブジェクト(PDO)で動作するというアイデアはとても気に入っていますが、パフォーマンスは少し悪いようです。

ここにDBAがいるので、あなたが操作したこれらのシステムに関するフィードバックをいただければ幸いです。

ありがとう


3
正規化された3nfが必要な場合は、リレーショナルストアを実行する必要があります。限目。
-JNK

2
「Oracle」だからといってJavaをノックするつもりはありません。ジョブに適したツールを使用します。Javaが最適なツールであれば、それを使用します。Cが適切なジョブである場合は、それを使用します。各ツールが提供するもの、長所と短所に焦点を当てます。感情に基づくのではなく、それについて十分な教育を受けた決定を行います(DB側と同じ)。
クリスアルドリッチ

回答:


4

あなたの抽象的な要件は私に「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がまだサーバーに全員の重要なデータを保持している場合、離脱するインセンティブははるかに低くなります。まだ悪いが、そうではない。驚くほど少ない。

皮肉なことに、すべてのコードを失うよりも、異常な事故ですべてのデータを失う方がはるかに簡単です。ただし、ほとんどのインターネット企業にとって、データ企業であり、最も貴重な資産です。そして、これは、従来の、時間をかけて検証された、昔ながらの、セクシーではないリレーショナルデータベースの使用を検討する強力な理由です。


ここから削除された長いコメントスレッドの要約:「NOSQLストアが何らかの形でデータを失う可能性を高めることを意味するのは不公平です」。
ジャックはtopanswers.xyzを試してみてください12年

私が言っていることは、ストレージエンジンの設計ではなく、年齢と幅広い使用に関係しています。
ダニエルライオンズ

6

また、あるものにはリレーショナルデータベースを使用し、別の目的にはnosqlデータベースを使用できない理由がないことも考慮してください。


0

nosqlといえば、Facebookの参照について追加することが1つあります。

非常に大きなスケールを計画する場合は、システム管理者に優しいDBエンジンと開発者に優しいDBエンジンを使用することをお勧めします。

地理的に分散することはできず、効率的かつ簡単にバックアップする方法がない、開発者に優しい超高速MongoDBを終了します。ここではMongoDBを使用していますが、システム管理者の仕様ではRiakまたはCouchDBの方がよく見えます(RiakまたはCouchDBの経験はありません)


2
大規模にスケーリングすることを選択した場合、それはすでにミクロから極小へ、極小から小規模へと既にスケールしており、その過程で正しい選択をするのに役立ついくつかのことを学んだからです。スケールアウトする準備ができたら、スケールする方法を知っているエンジニアに余裕を持たせることができます。
jcolebrand
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.