1

私はソーシャル ネットワーク (接続とその接続、メッセージと場所) を構築していますが、バックエンド API を設計するときに、リレーショナル データベース (MySQL) を使用するか、SQL を使用しないシステム (MongoDB) を使用するかを決定するのに少し混乱しています。誰が何をいつ使用するかについて意見を持っていますか?

PS: 開発者が oAuth を使用してシステムにアクセスできるように、開発者 API を構築しています。そのため、スケーラビリティとパフォーマンスも重要な要素です。Rails 3 + Devise (おそらく)。

4

4 に答える 4

3

これは、どのテクノロジーに慣れているか、これから何を得たいかなどに大きく依存します。

質問に戻りますが、すべてのデータがリレーショナルというわけではありません。そのような状況では、NoSQL が役に立ちます。そうは言っても、NoSQLは「Not Only SQL」の略です。MySQL を打ち負かしたり、それに取って代わることを意図したものではありません。

SQL または MySQL には、いくつかの非常に大きな利点があります。

  1. MySQL は強力な数学的基盤です。
  2. 宣言構文。
  3. 構造化照会言語 (SQL) で有名な言語。
  4. 高い実績と信頼性の高い技術。MySQL は、最も古い noSQL よりもはるかに多く存在しています。成熟した技術です。Google Adsense は MySQL で動作し、Facebook の永続ストアは MySQL です。例はその信頼性を示唆しています。
  5. 成熟したテクノロジーの結果として、人々はそれを最適化してきました。
  6. noSQLテクノロジーとは対照的に、サポートと機能の提供の両方のための巨大なオンラインおよびオープンソースコミュニティ(Cassandraに何が起こったのかを見てください)

私の意見では、テクノロジーを選択するとき、上記の質問はすべて重要です。日曜日の夜のプロジェクトで、現実世界にほとんど影響を与えたくない場合は、気まぐれにやってください。しかし、もう少し深刻な場合は、これらの質問を検討してください。

SQL はなくなっていません (noSQL でも)。これをどちらか一方の引数と考えるのは誤りです。NoSQL は、適切な場合に検討する必要がある代替手段です。それだけです。

ドキュメントは、CouchDB や MySQL などの非リレーショナル データベースに保存できます (乱用に近いですが、それでもなお)。原則として、リレーショナル データベースは非常に優れた NOSQL ソリューションになる可能性があります

この陽気なビデオをチェックしてください。これにより、このトピックについて別の視点が得られます:)

ここに画像の説明を入力

于 2012-07-09T18:23:46.577 に答える
1

ない。

ネットワーク/グラフ データベースを使用してください。後悔することはありません。私の現在のお気に入りは Neo4j です。

http://neo4j.org/

注:Neo4Jとは関係ありません

SQL 互換性が必要な場合に備えて、Neo4J の最新バージョンには sql インターフェースがあると思います。それ以外の場合は、ネイティブ ライブラリを使用して crud を実行してください。とても速いです。

上司に見せるのに非常に印象的なグラフ データを視覚化する必要がある場合は、yEd パッケージを使用します。neo4J を graphml 形式にエクスポートするには、次を使用します。

Neo4j DB を XML に変換しますか?

Neo4J で関係をフロントエンドし、リレーショナル db または mongodb でバックエンドできます。これらのハイブリッド アーキテクチャも見てきました。

于 2012-07-09T18:27:10.207 に答える
1

スキーマの柔軟性とスケーラビリティ/パフォーマンスのため、「ソーシャル」アプリケーションに MongoDB を選択しました。MongoDB を使用すると、コードを大幅に変更することなくスキーマを調整でき、データの読み取り/検索が非常に簡単になります。

また、学習経験として MongoDB を選択しました。これらの「noSQL」データベースで大騒ぎした理由を知りたいと思っていました...そして今、その理由がわかりました。私の意見では、MongoDB は素晴らしく、スケーラビリティとパフォーマンスを必要とするソーシャル ネットワークを検討する価値があります。Node.js も API に最適です ;)

于 2012-07-09T18:25:05.413 に答える
0

特定のオブジェクト間の実際の関係を投影する必要がある場合は、MySql で問題ありません。他のユーザーへのメッセージを持つユーザーなど、通常固有のデータだけを持つものを保存する場合は、MongoDB などのドキュメント スタイル データベースが適しています。

リレーションシップは mongo で行うことができますが、リレーショナル データベースの方がはるかに理にかなっています。ただし、ほとんどのデータがユーザー固有のものである場合は、mongo の方が理にかなっています。

あなたの場合、スキームのドキュメントタイプは、各ユーザーが接続ユーザーのリストと独自の個人属性などを持っている場合に理にかなっています...

于 2012-07-09T18:22:13.960 に答える