6. • Es una base de datos para móviles: un reemplazo para
CoreData y SQLite. El core está construido en C++
(TightDB)
• NO es un ORM, NO está basado en SQLite
• Es una base de datos relacional, no es NoSQL, no es un Key-
Value store: columnas, filas, queries, índices.
7. • El desarrollo empezó en 2011, (en producción desde 2012),
es público desde 2012
• Disponible para Objective-C, Java (Android) y Swift.
Próximamente para .Net y JS
• El core hecho en C++ todavía no es opensource pero lo
será
13. En 1 año
• #1 -apps, Enterprise apps (Rite Aid, SAP, …), Bancos.. -
Corriendo en centenas de millones de dispositivos (la 2a
base de datos con más instalaciones en el mundo)
16. Relaciones Swift
class Person: Object {
dynamic var name = ""
dynamic var picture = NSData()
let dogs = List<Dog>()
}
realm.write {
let person = Person()
person.name = "Tim"
person.dogs.append(mydog)
}
17. Migraciones Swift
setSchemaVersion(1, Realm.defaultPath, { migration, oldSchemaVersion in
if oldSchemaVersion < 1 {
// Nothing to do!
// Realm will automatically detect new properties and removed properties
// And will update the schema on disk automatically
}
})
18. Models Objective-C
@interface Dog : RLMObject
@property NSString *name;
@property NSInteger age;
@end
Dog *mydog = [[Dog alloc] init];
mydog.name = @"Rex";
NSLog(@"Name of dog: %@", mydog.name);
19. Queries Objective-C
RLMResults *r = [Dog objectsWhere:@"age > 8"];
// Queries are chainable
r = [r objectsWhere:@"name contains 'rex'"];
21. Cifrado Swift
/ Generate a random encryption key
let key = NSMutableData(length: 64)!
SecRandomCopyBytes(kSecRandomDefault, UInt(key.length),
UnsafeMutablePointer<UInt8>(key.mutableBytes))
// Open the encrypted Realm file
var error: NSError?
let realm = Realm(path: Realm.defaultPath,
readOnly: false, encryptionKey: key, readOnly: false, error: &error)
27. • SQLite es uno de los proyectos open source más probados
en el mundo
• CoreData tiene un gran soporte en Xcode
• Soporte a valores nulos (se está trabajando en ello)
• Pasar objetos entre threads (se está trabajando en ello)
• Key-Value Observing, soporte a RXSwift y ReactiveCocoa (se
está trabajando en ello)
• Datos poco estructurados, un schema-less store es mejor
(Couchbase, NanoStore, Firebase)