私はCoreDataを学んでいて、以前はプロジェクトの1つでSQLiteを使用していました。私の質問は、Core Data vesusSQLiteをどのシナリオで使用する必要があるかということです。コアデータの利点のいくつかを読みました。データ構造を視覚的に設計する方法を提供し、データにアクセスする抽象的なレベルとSQLiteをマルチプラットフォームで使用できますが、データサイズに関連するものはありますか?データサイズがCoreDataを使用する必要があるよりも大きい場合、またはその逆の場合はどうでしょうか。
4 に答える
コアデータ:
主な機能はグラフ管理です(ただし、ディスクの読み取りと書き込みは重要なサポート機能です)
メモリに保存されているオブジェクトを操作します(ただし、ディスクから遅延ロードすることはできます)
多くの動作を自己管理し、さらに動作するようにサブクラス化およびカスタマイズできる本格的なオブジェクトで動作します
非トランザクション、シングルスレッド、シングルユーザー(これらを提供するCore Dataの周りに完全な抽象化を作成しない限り)
メモリ内でのみ動作します
保存プロセスが必要です
何百万もの新しいオブジェクトをメモリ内に非常に迅速に作成できます(ただし、これらのオブジェクトの保存には時間がかかります)
プログラムのビジネスロジック側にデータ制約を残します
データベースまたはSQLite:
主な機能はデータの保存とフェッチです
ディスクに保存された(または最小限および段階的にロードされた)データを操作します
「ダム」データを保存します
トランザクション、スレッドセーフ、マルチユーザーにすることができます
メモリにロードせずにテーブルをドロップしてデータを編集できます
永続的にディスクに保存されます(多くの場合、クラッシュに対する耐性があります)
数百万の新しい行を作成するのに時間がかかる場合があります
「一意」キーなどのデータ制約を提供します
以下のリンクから参照 http://cocoawithlove.com/2010/02/differences-between-core-data-and.html
Core Dataのデータ量に制限はありません。実際、SQLiteをストアとして使用するため、データサイズに煩わされることはありません。
Core Dataは本当に優れたソリューションなので、プロジェクトで使用することをお勧めします。
この場合、エンティティ間に「多対多」または「1対多」の関係がある大規模なデータ(100000レコードを超える)の場合、SQLiteを使用できます。それ以外の場合は、問題なくコアデータを取得できます。
また、もう1つの提案として、決定を下す前にデータベースを正規化してください。
SQLiteを使用して大きなデータを処理するには、非常に優れたチュートリアルがあります 。SQLiteの1秒あたりのINSERTのパフォーマンスを向上させますか?
私の経験では、データサイズは決して問題ではありませんでしたが、SQLiteの方が堅牢であると聞いています。SQLiteを使用したのは、ユーザーのデータをアプリに事前入力する必要があったためです。CoreDataを使用すると、名簿のようにデータを入力する1人のユーザーを対象としています。