Whatsappを思い出させるチャットアプリを開発したいのですが、学習プロジェクトとしてやっています。 Androidコースを行っているという理由だけで、現在Androidでそれを行っています。
要件は次のとおりです。
最初に、すべてのユーザーを保存するためにMySQLを使用し、メッセージを保存するために一部のNoSQLを使用することを考えていました-MongoDB。これは、メッセージデータが大規模に急速に増大し、RDBの使用が問題になる可能性があるためです。
このアーキテクチャを使用することが適切だと思いますか?多くの更新があるかもしれないので、MongoDBは問題になりますか?メッセージが書き込まれた後、受信者の電話がメッセージを受け入れると、更新がサーバーに示されたメッセージの受信に送信されますか?
多分私はあなたが考えることができる何かが足りないのですか?
より良いアーキテクチャがあると思われる場合は、貢献していただけるとありがたいです。
ありがとう。
いくつかの考慮事項:
データベースの選択:MysqlやPostgresなどのリレーショナルデータベースは、MongoDBなどよりもスケーリングが難しいとは限りません。多くの場合、それはまったく逆です。さまざまなストレージテクノロジーの優れた比較を次に示します。 http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
「イベント駆動型」アーキテクチャ:「これが起こったときに何かをする」に要約される多くの要件があります。このようなアーキテクチャを構築する一般的な方法は、発行されるイベントとそれらのイベントに作用するイベントリスナーを考えることです。例えば:
通常、アプリケーションの中心部分としてメッセージキューがあり、すべての種類のリスナーが接続されており、それを介して送信されるすべてのイベントが送信されます。
サードパーティソリューション:Android開発に重点を置いた学習課題としてこれを行う場合は、サードパーティソリューションの使用を検討してください。バックエンドのニーズの多くを処理できます。一例は https://www.firebase.com/ です。このようなアプリの本格的なバックエンドシステムを構築することは、深刻なスケーリングとパフォーマンス要件を伴い、Androidの学習に時間を費やすのに多大な労力を要します。
簡単な開始、繰り返し:データベースなしの非常に単純なバックエンドアプリから始め、Androidアプリ。どのデータベースを使用するかなどの大きな決定を下す前に、要件について可能な限り理解していることを確認してください。これを行う唯一の実際の方法は、プロトタイプを作成し、できるだけ迅速に反復することです。
ここで、開始点として使用できる具体的なソリューション「テンプレート」をいくつか示します。
Firebaseを利用したバックエンド
次の場合は、このルートに進みます。
Firebaseは多くのニーズに対応できます。データベースとスケーリングについて考える必要はありません。ただし、データモデルを理解する必要があります。
開始するいくつかの場所:
Node.js + Socket.io + MongoDB + Redis
次の場合は、このルートに進みます。
システムの大まかな概要:
Socket.ioは通信が得意です。低レベルのネットワークコードを記述する必要はありません。 Node.jsはそのようなものに対して優れたパフォーマンスを発揮します。
ポインタ:
Java Netty + RabbitMQ + MongoDB
次の場合は、このルートに進みます。
概要:
ポインタ: