モデル データ - React Native SDK
項目一覧
すべての Realm オブジェクトは特定のオブジェクトタイプに準拠します。 オブジェクトタイプは、事前定義されたスキーマを使用して、そのタイプのオブジェクトのプロパティと関係を含む、ユーザーが定義するクラスです。
Realm は、Realm 内のすべてのオブジェクトがオブジェクトタイプのスキーマに準拠していることを保証し、オブジェクトが作成、変更、または削除されるたびにオブジェクトを検証します。
Realm オブジェクトは基本的に一般的な JavaScript オブジェクトと似ていますが、スキーマ検証やライブ クエリなどの追加機能もいくつか備えています。
React Native SDKメモリはRealmオブジェクトをネイティブJavaScriptオブジェクトに直接マッピングするため、 ORM などの特別なデータアクセスライブラリを使用する必要はありません。 。代わりに、 Realmオブジェクトを他のオブジェクトと同様に操作できます。
Realm スキーマ
Realm スキーマは、Realm に含めることができる有効なオブジェクト スキーマのリストです。 すべての Realm オブジェクトは、Realm のスキーマに含まれるオブジェクトタイプに準拠する必要があります。
Realm を開くときにすでにデータが含まれている場合、Realm は各オブジェクトを検証して、そのタイプにオブジェクト スキーマが提供されていること、およびスキーマで指定された制約をすべて満たしていることを確認します。
@realm/react
を使用して、個々のオブジェクト スキーマをRealmProvider
またはcreateRealmContext()
に渡すことで、Realm スキーマを定義します。
import Profile from './Models/Profile'; import {createRealmContext} from '@realm/react'; export const SyncedRealmContext = createRealmContext({ // Pass all of your models into the schema value. schema: [Profile], });
関係
Realm 内のオブジェクト間の関係を定義できます。 Realm は、Realm 内の特定のタイプの他のオブジェクトを指すオブジェクト プロパティとしての関係をモデル化します。 値が別のオブジェクトタイプであるタイプのスキーマでプロパティを宣言することで、タイプ レベルで関係を定義します。
関係をクエリするパフォーマンスは、通常のプロパティと同様です。 関係は他のオブジェクトへの直接参照であるため、関係データベースのように定義して使用するために結合や複雑なモデルを使用する必要はありません。 代わりに、関係プロパティを直接読み書きすることで、関連オブジェクトにアクセスできます。
オブジェクト間の関係には、次の 3 つのプライマリ タイプがあります。
注意
Realm と他のデータベース
オブジェクトには、多くの場合、他のオブジェクトへの直接参照が含まれています。 オブジェクトと参照を操作するときは、通常、データベース ストレージからアプリケーション メモリにデータをコピーします。 この状況では、開発者はメモリにコピーする内容を選択できます。
参照されたすべてのオブジェクトを事前にメモリにコピーできます。 つまり、参照されたすべてのデータは常にすぐに利用できますが、多くのリソースを使用する可能性があります。 システムのメモリが限られている場合、これは実行できない可能性があります。
各オブジェクトの外部キー値のみをコピーできます。 後で、必要になった場合に キーを使用してオブジェクト全体を検索できます。 これらの「遅延」検索は、参照されるすべてのオブジェクトを事前にコピーするよりもメモリ効率が高くなります。 ただし、より多くのクエリ コードを維持し、アプリが遅くなる可能性のある ランタイム検索を 使用する必要があります。
Realm のクエリ アーキテクチャは、メモリ使用量と計算オーバーヘッドの間のトレードオフを回避します。 代わりに、Realm クエリはディスク上の関連オブジェクトとそのプロパティを直接参照できます。