Xamarin開発者で、以前はモバイルデータベースとしてSqliteを使用していましたが、
最近Realmが登場しました。
パフォーマンスと使いやすさなどの違いについての考えはありますか?
どちらを使用するのがベストプラクティスですか?
RealmとSqliteは、多くの面でまったく異なります。
主な違いを把握するために通過できる2つの記事を次に示します。
システムプロパティの比較レルムとSQLite
CoreData/SQLiteよりもレルムを選択する5つの理由
Slaviaのコメントで示唆されているように、Realmを含むいくつかのORMの比較については、 この記事 もご覧ください。
私はRealmのXamarinチームの開発者なので、Xamarin製品がどのように機能するかについてもう少しお話しできます。
レルムには、すべての製品に共通のC++コアがあります。だからこそ、言語ごとではなくplatformごとにリリースするのです。ネイティブコアを含める必要があります。コードのPCLビルドをサポートしていますが、PCLライブラリはありません-ビルド時に、PCLコードは一致するIOSまたは= Androidライブラリ。
すべてのRealm製品は、特定のプログラミング言語に慣用的なインターフェイスを提供するために個別に開発されており、コードとデータの間に可能な限りスリムなレイヤーがあります。
つまり、たとえば、C#製品はクエリ用のLINQを提供し、データモデルを定義する手段としてC#オブジェクトを使用します。ビルド時に、Fodyコードジェネレーターを実行してプロパティセッターとゲッターを追加し、C#オブジェクトがコアC++データと直接やり取りするようにします。典型的なORM製品とは異なり、データベースからバッファにデータをコピーしてからオブジェクトにコピーすることはありません。
レルムデータはメモリマップされるため、コードからストレージに直接移動します。自動プロパティのゲッターとセッターを置き換えるアクセサーメソッドを生成します。
これを説明するためにzero-copyという用語を使用します。対照的に、他のほとんどのシステムには、プロパティをサポートするフィールドを持つC#オブジェクトがあります。これらのオブジェクトは、多くの場合、diskストレージから読み取られたSQLiteバッファーからコピーすることによって取り込まれます。それはコピーの2つのレベルです。