2017-06-13 5 views
1

私はモバイルアプリ(最初はiOS/Android、その後のウェブサイト)のバックエンドで作業を開始しようとしており、Realmがすべてのニーズを満たすことができるかどうかを考えています。地域間で特定のデータを共有

基本的な考え方は、ユーザーとサービスプロバイダーの2種類があります。顧客は、しばらくの間、サーバーに要求を送信し、将来、この要求に関連して発生する可能性のあるイベントに対してサブスクライブ(リアルタイム)します。各サービスプロバイダは、すべての顧客からの特定の要求をリッスンし、それぞれの要求に対してさまざまなイベント(データ送信)をトリガーするものです。

Realm docsからは、リアルタイムのデータ同期が問題になることはないことは明らかです。私が心配しているのは、レルムの世界でシナリオ(顧客/サービスプロバイダ)をモデル化する方法です。私が読んだことに基づいて、ユーザーあたり1つのレルムを持つことが望ましいです。したがって、私はユーザーが登録し、領域を与えられると思います。そして、彼がリクエストをするたびに、彼は彼の領域に格納されます。今問題は、サービスプロバイダをモデル化する方法です。さまざまな種類のリクエストに対して、それぞれ応答するさまざまなサービスプロバイダ(リクエスト後1時間までのさまざまな種類のイベントをトリガする予定)が存在します。

Realmは、この問題の部分的な解決策である可能性のある異なる領域間のデータ共有をサポートしていることについて少しは読んだが、私はできなかったこの「共有」が特定の要求だけを共有できるかどうかを確認します。 (各サービスプロバイダは、彼のためのリクエストのみを受け取ることを意味します)。

私の質問は、このシナリオがレルムを使用して実行可能かどうかです。

答えて

3

これは、Realmのサーバ側event-handlingに最適です。簡単に言えば、RealmはNode SDKを介して、サーバー上のRealms全体の変更をリッスンする機能を提供します。

したがって、各モバイルユーザーがそれぞれのレルムを持つ場所では、このURLは/~/myRealmであり、ティルダはレルムユーザーIDを表します。 Node SDKイベント処理APIを使用すると、レルムURLのRegexパターンによって表される変更に応答して実行されるJS関数を登録できます。この場合、^/([0-9a-f]+)/myRealmを使用すると、ユーザーのmyRealmが更新されるたびに、サーバーは何らかのロジックを実行できます。

このように、Node SDK経由のサーバーは、実際にはあなたが記述しているように「スーパーユーザー」またはサービスプロバイダーです。イベントが発生すると、実行されるJS関数に、更新されたレルムと、レルム内の挿入、削除、または変更されたオブジェクトに関するインデックスのリストが提供されます。その後、変更されたデータを使用して別のAPIを呼び出したり、問題のレルムを開いたり、その他の変更を書き込んだり、それぞれのクライアントにプッシュバックしたりするなど、JSのロジックを実行できます。

サーバー側のイベント処理はすべてRealm Professional Editionの一部ですが、最近これと対話する別の方法がリリースされました(Realm Functions)。これにより、サーバーのダッシュボードを介して、レルム間の変更に対応して実行される同じJS関数を作成することができます。開発者用エディションは3つの機能をサポートしているので、すぐに試用できます!

+0

私が正しく理解していれば、すべての領域にわたる変更を確認し、どのサービスプロバイダがこのイベントを受信して​​それを領域に挿入するかを調べるため、領域 'エンジン'は接続されたすべてのクライアントにこの領域(領域時間内)。私の唯一の関心事は、レコードが2つのレルムに同時に格納されるため、データの重複ですが、私はこれを回避できないと考えています。(レルム間でデータを共有する手段として、データは実際に複製されます。) – user3559787

+0

今すぐデータをRealm'sに複製する必要がありますが、将来は、単一のRealmからクライアントへのデータのサブセットの同期をサポートする予定であるため、リンクを追加したり、サブセットは特定のクライアントグループに送信されます。 –

関連する問題