2016-04-28 11 views
1

私はいつもiOS(swiftおよびobjectiveC)アプリケーションでCoredataを使用してきました。データモデルの構造が頻繁に変更される:最善の方法

私の新しいプロジェクトでは、この状況があります。データモデルは頻繁に変更されます。例えば、以前にStringであった属性がRelationになり、StringがNSNumberになり、Relationが消えてEntityが他のテーブルから分離したままになりました。

Coredataは最良の解決策のままですか? マイグレーションの問題を解決するために、常にマイグレーションスクリプトを書く必要がありますか?

答えて

0

私の見解よりコアデータは、あなたのハードウェアの移行を行う必要がある場合でも最高のソリューションです。

  1. エンティティの種類を変更する(エンティティの種類を変更する、またはエンティティなどから属性を削除するなど)単純な変更ではない(難しい)移行。この種類の の移行では、 migration processと呼ばれる追加のスクリプトを記述する必要があります。
  2. Lightweight migration as simple エンティティに新しい属性を追加するなど、モデルに変更が加えられ、コアデータによって自動データ移行が実行されます。

私の考えです。他の人がここに投稿するものを見てみましょう。

Core Data and Swift: Migration

2

Core Dataは何に比べて最高ですか!どんな測定の軸で?データモデルの移行を容易に管理できますか?クエリの速度?オブジェクト< - >ストレージのやりとりですか?

多くの軸で比較できます。

まず、フィールド内のデバイスのデータを移行することが問題です。どのデータベースも移行に時間がかかるでしょう。アプリが応答しない時間。ユーザーは、移行中にアプリが死んでいると思って死ぬことがあります。したがって、スキーマをどのくらい頻繁に変更するか注意してください。あなたは起動時にすべての応答しないアプリケーションの顧客を失うでしょう。あなたの同僚は、気まぐれな顧客がどのようになるかも理解できないかもしれません。ユーザーは、おそらく長時間の移行に苦しむほどのアプリについては気にしません。

私の経験では、Core Dataはほとんどの環境よりも優れた移行を処理します。 SQLiteを使用する他の環境では、パフォーマンスはそれほど高くありません。別のデータベースを使用しますか?次に、あなたのアプリのすべてのオブジェクトを書き換えていますか?うわー!あなたはそれ以上の移行問題を抱えています。

あなたの質問からは、あなたがスキーマの乱れを経験しているように聞こえます。それはあなたの開発プロセスについての良い兆候ではありません。私はデータベースを変更することを検討する前に、そのチャーンに取り組んでいます。

オプションがある場合は、常に軽量移行を使用してください。ハード・マイグレーションのマッピング・モデルが必要になる前に、非常に注意深く考えてください。軽量移行は、現場ではかなり効率的です。それは維持するための非常にインポート特性です。ハードマイグレーションは、あなたのスキーマのかなり根本的な突然変異です。私は長い移行を避けるために非常に努力しています。

関連する問題