LoginSignup
8
8

More than 5 years have passed since last update.

Realm Tech Talk with JP Simard #2

Last updated at Posted at 2015-02-23

上記イベントのJP Simardさんのプレゼンのメモです。
また、Realmの使い方の詳細はこちらです。
http://qiita.com/okitsutakatomo/items/9134c5fa8bd4384a2acf

Realm概要

  • クライアントサイド向けデータストア。SQLiteに置き換わる可能性のあるプロダクト
  • 8ヶ月前ぐらいに公開。iOS/Androidバインディングのみ公開。Coreは非公開
  • サーバサイドのDBイノベーションはここ数年かなり活発なのに対し、クライアントはSQLiteがリリースされて以降、全くイノベーションが起こっていない
  • JPさんは、SQLiteのコミッターとしてしばらく活動してきたが、SQLiteよりもいいものが作れる気がしたのでRealmを作りはじめた。開発期間:4年
  • 発音は「レルム」

CoreData

  • 10年以上前のもの
  • 遅い
  • 学習コストかかる
  • アップルしかつかえない

SQLite

  • CoreDataより早い
  • iOSに最適化されている
  • クロスプラットフォーム
  • 14年以上の開発期間
  • 悪いユーザ体験
  • 手動のデータマッピングとクエリ

Other Options

  • FMDB
  • YapDatabase
  • CouchbaseLite
  • LevelDB

パフォーマンス

  • Insert
    • 生SQLite > Realm > FMDB > CoreData > YapDatabase
    • Realm は、生SQLiteよりも遅いが、コードのメンテナンス性や書き易さの面を考慮して作っている -Count, Query
    • Realmダントツ
    • デーブルからRowデータを引っ張るのではなく、ディスクから直接データを引っ張っているので早い

モデルオブジェクト

  • クラスがそのままテーブルになる。モダン

Thread

  • 別スレッドでも書き方は同じ。ただし、オブジェクトがThreadを超えることはできない。

Notification

  • Fine-grain Notifications Coming Soon!!

Work In Progress

  • MultiProcess (appとwatch appでとか)
  • Fine-grain Notification
  • Async Queries
  • Cascading deletes
  • Nullable types
    • null入れられないからいられるようにしたい
  • Sync
  • Open source Code - データベース自体のCoreのオープン化

Where is Realm used?

  • Groupon
  • Coinbase
  • Buzzfeed
  • Macaroni(made in Japan)
  • Aplos(made in Japan)

Q&A

  • FetchedResultsControllerみたいなものを用意する予定はあるか?

    • sectionとrowを便利に使える部分は、Realmでもすでにsampleがある。
    • 更新オブジェクトの通知部分は、Fine-grain Notificationで対応される予定。
  • Realmはディスクに書き込むから早いと何度か言っていたが、感覚的にはメモリのほうが早いイメージ。どういうこと?

    • 大きな理由は、早くなるから。
    • SQLiteは、一回メモリに展開している。Realmではそのあたり省いて直接ディスクに書いている。
  • もし、SQLiteとか似たようなライブラリよりも遅くなるケースはあるか?

    • 一般的な仕様はベンチマークの通り
    • クエリ文の組み立てはRealmが早い
    • SQL次第でパフォーマンスが逆転する可能性もある。
    • Realmは、 IN句は遅い 。日々改善している。
  • AutoIncrementはないか?

    • 現状ではサポートする予定はない。
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8