Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Brief, Incomplete, & Mostly Wrong History of Databases on iOS

JP Simard
September 19, 2014

A Brief, Incomplete, & Mostly Wrong History of Databases on iOS

According to the lore, Core Data is just 10 years old, but its genesis dates way back to NeXT's Enterprise Objects of 1994. In this talk, we'll embark on a wild ride exploring the exhilarating and action-packed history of databases on iOS. But seriously, it's just databases, so contain your excitement.

This talk was given at NSSpain 2014: http://nsspain.com
Source here: https://github.com/jpsim/talks

JP Simard

September 19, 2014
Tweet

More Decks by JP Simard

Other Decks in Programming

Transcript

  1. » NSKeyedArchiver/plists/files » SQLite/FMDB* » FCModel* » Core Data* »

    YapDatabase* » CouchbaseLite* » LevelDB/MongoDB & other backend ports » Realm * Built on SQLite
  2. SQLite » Main author: Richard Hipp » Released v1 in

    2000 » Released v3 in 2004 » Currently v3.8.6 » v4 was announced in 2012, but was never publicly updated » Led by consortium of Adobe, Bloomberg, mozilla & Oracle
  3. SQLite » Designed for guided missile destroyers for the US

    Navy » Bedrock of iOS persistence » Relational, embedded, ACID, SQL-like » Public domain » sqlite.org
  4. FMDB » Popular Objective-C SQLite wrapper » Written by Gus

    Mueller of Flying Meat Software » Gus built this for accessing SQLite in his apps (VoodooPad & Acorn) » Adds 10%-20% performance overhead over raw SQLite » github.com/ccgus/fmdb
  5. FCModel » Recent (2013) SQLite ORM in Objective-C » An

    alternative to Core Data for people who like having direct SQL access » Written by Marco Arment of Instapaper and Overcast » Uses FMDB under the hood » Models defined directly as classes and properties » github.com/marcoarment/FCModel
  6. Core Data » By far most popular persistence choice on

    iOS » Released in 2005 for OSX 10.4 Tiger & 2009 for iOS SDK 3.0 » Evolved from Enterprise Objects Framework (EOF)
  7. Enterprise Objects Framework » ORM for Microsoft SQL Server &

    Oracle in early 90's (92-94) » Built by team at NeXT in Objective-C for OpenStep » Starting point for Core Data » Worked on by Craig Federighi, a.k.a. Hair Force One
  8. YapDatabase » Key-Value Store built on SQLite » Built by

    Robbie Hanson of Yap Studios » github.com/yapstudios/YapDatabase
  9. Couchbase Lite » Evolved from TouchDB » Apache CouchDB compatible

    » Now at Couchbase » NoSQL-like, built on SQLite » Lightweight, embedded, syncable, NoSQL- like
  10. Realm Genesis » Alexander Stigsen at Nokia early 2000's »

    Need to fit data on very limited devices. Low storage, memory & processing power » Compression not an option » Solution: Intelligent bit-packing, ARM vectorization, efficient table layout » YCombinator S11, Launched on iOS 2014
  11. Realm » Fast, embedded database (zero-copy, not an ORM) »

    True NoSQL (not just interface) » Full ACID transactions » Well defined threading model (GCD) » Cross-platform C++ core with many language bindings (only Objective-C & Swift released)
  12. Resources » This talk: github.com/jpsim/talks » SQLite: The Definitive Guide

    to SQLite & SQLite 4 Design » Core Data: History and Genesis » Enterprise Objects Framework (EOF): EOF History » Realm: realm.io » Michael Bay Gifs: r/michaelbaygifs