私のアプリはまずオフラインであり、レルムはデータの永続化とアクセスに優れています。大好きです。しかし、私はまた、クラウドにユーザーデータを保存したい(バックアップのために、しかし私が後でウェブサポートを追加する場合に備えて)。 Realm Object Serverがそうであることは分かりますが、私はDynamoDBを次のような理由で使用したいと考えています。Amazon DynamoDBでレルムを使用する
1)私は既にDynamoDBとAmazonの認証(Cognito)に投資しました。
2)クライアントから複雑なクエリを実行する必要があるため、Realmは事実上リレーショナルデータベースです。しかし、バックエンドでは、ほとんどすべてのデータを簡単にアクセスし、必要に応じてラムダ関数を使って操作できる方法でデータをバックアップしたいだけです)。私はこのためにNoSQLソリューションを使用しても問題ありませんが、DynamoDBは費用効果の高いデータベースで、水平スケーリングが可能で、魅力的です。 Realm Object Serverでこのような方法でデータにアクセスしたいと思ったら、少なくとも1500ドルのコストがかかります。
3)Realmチームには嫌な思いはしませんが、Parseがシャットダウンしてしまったので、私が信頼できるものをバックエンドとして5年以上使用したいと考えています。とにかく
は、道のうちそれと、ここで私は現在、この作品を作ってるんだ方法は次のとおりです。
1)私が作成またはレルムのオブジェクトを編集するたびに、私は私のDynamoDBのスキーマにその変更をマッピングしますロジックを持っています(これはRealmよりはるかに少ないテーブルで構成されています)。
2)私はこれらの更新をと呼びます。必要に応じてそれらをキューに入れてマージします(たとえば、同じプロパティを複数回変更した場合など)。
3)私は待ち行列を通り、UpdateTasks
のチャンクを私が書き込んだラムダ関数に渡します。この関数は、更新を繰り返し、DynamoDBに必要なputまたはupdateコマンドを実行します。
4)私はあなたがオフラインまたは要求が
5を失敗した場合には所定の位置に再試行ロジックを持っている)すべてはあなたが新しい携帯電話を持って、サインインした場合、私は別のラムダ関数を持って適切に同期されると仮定すると、以前と同じようにユーザーのすべてのデータを取得し、レルムファイルに移入します。
私が言ったように、これはすべて現在作業中ですが、壊れやすいと感じています。私はこれを間違った方法でやっているように感じることはできません。さらに、ソーシャルフィーチャを追加したい場合は、双方向同期やリアルタイム通信をサポートしていません。
これは、RealmとDynamoDBを同期させるための合理的なアプローチであるか、頑丈な方法?また、Realm Object ServerまたはDynamoDBの代わりに何かを再考する必要がある場合、私はなぜそれを聞くことに興味があるでしょう。
私にとっては大きな決断ですので、私が得ることができるすべての助けに感謝します!ありがとうございました
私はDynamoDB(または他のDB)があなたに求めている柔軟性を提供すると思います。そう、はい、カスタムビルドAPIを使用して、デバイス間のデータを管理します。リアルタイムの同期やコミュニケーション、特にチャットやその他のものに関しては、sync APIのアプローチは理想的ではありませんでした。リアルタイムsocket.ioに焦点を当てる方が良い考えです。 – Orlando
「Realmチームには嫌なことはしませんが、Parseに嫌われました」---しかし、ROSはホスト・イット・ユアーの解決策であることに注意してください。ドードーの道を行く人でもそれをあなたから奪うことができます:)。 – teotwaki