2016-10-31 6 views
13

iOSアプリケーションの複数のバージョンを運用中にFirebaseデータモデルを変更する最も良い方法は何ですか?firebaseデータモデルを変更する(複数のアプリケーションバージョンが稼働中の場合)

真ん中に「アプリケーションサーバー」レイヤーがないため、データベースモデルの変更により、古いバージョンのアプリケーションが壊れる可能性があります。問題の

パフォーマンス関連例:私は単純に「/ポスト/」の下のポストに関連するすべてのものを保っていたバージョン1.0では

。今バージョン2.0では、Firebaseの勧告を受け取り、特定のユーザのすべての投稿をすばやく一覧表示するための '/ user-post'エンドポイントを追加したいと思います。

iOSアプリケーションのバージョン1.0を使用しているユーザーは、そのエンドポイントが存在しなかったため、 '/ user-posts'にデータを書き込んでいません。したがって、バージョン2.0を使用しているユーザーは、古いバージョンのアプリを使用しているユーザーが作成した投稿は表示されません。

理論的には、私はどこかで '/ post /'の変更を聞き、 '/ user-posts'に追加することもできます。それはあなたのアプリの異なるバージョンがたくさんある場合でも時間の経過とともに維持することは難しいようです。問題

新機能例:

は、モバイルアプリのバージョン1.0で使用すると、「/ポスト/」に新しいブログ記事を書くとしましょう。今バージョン2.0のアプリではチーム機能を導入し、すべての投稿を '/ team/team-id/posts'にする必要があります。

バージョン2.0にアップグレードしていない人は、まだ '/ posts'に書き込みます。これらの投稿は、 '/ team/team-id/posts'から読んでいるバージョン2.0を使用している人には表示されません。

私は、両方のエンドポイントを同時に(そしてチームIDに基づいてインデックス/投稿)保持することができますが、時間の経過とともにこれは維持するのが難しいようです。

従来のソリューション:

私はジャンゴまたはExpressのようなものを使用していた場合、私はデータベースの移行を行い、その後、ブログ記事を作成するためのサーバー側のエンドポイントを更新すると思います。

これは、データベースをクライアントから変更することになります。私は理論的にはFirebaseと私のアーキテクチャにアプリケーション・サーバー層を追加することができますが、それはそれはお勧めしますように見えるしていません:https://firebase.googleblog.com/2013/03/where-does-firebase-fit-in-your-app.html

+1

経由でメッセージ/アラートを示すことができない場合。将来は論理定数を適用し、Firebase Remote Configはデータ構造の変更の一部を緩和するための1つの方法かもしれません。あるいは、可能であれば、ユーザーに新しいバージョンへの移行を促すためのメカニズムを使用してください。おそらく新しい機能を利用できるようにすることによって... –

答えて

3

私はあなたがアップデートがある場合UIAlertControllerまたは異なる画面を経由してアラートを表示するためにFirebase Remote Configを使うことをお勧め利用可能です。ユーザーは強制的に現在のバージョンに更新することができます。古いコードの投稿は作成できないため、後で問題は発生しません。

は、あなたの質問に答えるために: は、私は同じFirebaseプロジェクトに追加して、このアプリは新しいデータモデルにすべての古いデータを変換してみましょう、別のアプリを開発します。したがって、新しいバージョンをリリースしてからこれを1回実行すると、古いユーザーデータが新しいデータモデルに変換され、すべてがスムーズに機能します。すべてのオブジェクトに対して databaseVersionのようなプロパティを持つこともできます。

Firebase Realtime Databaseには、app-versionという一般プロパティが存在する可能性があります。すべての投稿の前に、アプリは新しいバージョンがあるかどうかをチェックします。ユーザーが投稿を追加することができますが、新しいバージョンがあるかどうか、私は移行したり、現在のアプリケーションへの変更に対処する方法についてはコメントできませんが、あなたはUIAlertController

+0

提案をありがとう。私はアップグレードを強制することを検討しましたが、それは貧弱なUXのようです。 私はFBから直接すべての読み込みを終わらせましたが、サーバー経由で書き込みをプロキシします。スキーマの変更があると、サーバーは古い場所と新しい場所の両方に投稿を二重書きします。 –

関連する問題