SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Realm
Erick Camacho @ecamacho
NSCoderMéxico
15 julio 2015
CoreData es
demasiado
grande /
complejo
Realm es una
opción más
sencilla
1. ¿Qué es?
• 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.
• 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á
2. ¿Quién lo usa?
Groupon
>100M usuarios
Dubsmash
iOS & Android
#1 app en >40 países
>10M instalaciones en
Android
Wahoo
#1 fitness app en >120
países
En Nubleer lo
usamos desde
hace 11 meses
en producción
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)
3. ¿Cómo lo uso?
Demo Swift
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)
}
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
}
})
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);
Queries Objective-C
RLMResults *r = [Dog objectsWhere:@"age > 8"];
// Queries are chainable
r = [r objectsWhere:@"name contains 'rex'"];
Relationships Objective-C
@interface Person : RLMObject
@property NSString *name;
@property NSData *picture;
@property RLMArray<Dog> *dogs;
@end
[realm transactionWithBlock:^{
RLMPerson *person = [[RLMPerson alloc] init];
person.name = @"Tim";
[person.dogs addObject:mydog];
}];
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)
Desempeño
4. ¿Por qué no usar
Realm?
• 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)
Q&A

Contenu connexe

Similaire à Realm para iOS

Similaire à Realm para iOS (20)

Spark meetup barcelona
Spark meetup barcelonaSpark meetup barcelona
Spark meetup barcelona
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
S8-DAW-2022S1.pptx
S8-DAW-2022S1.pptxS8-DAW-2022S1.pptx
S8-DAW-2022S1.pptx
 
Taller Android seedrocket
Taller Android seedrocketTaller Android seedrocket
Taller Android seedrocket
 
Web Workers
Web WorkersWeb Workers
Web Workers
 
Android la plataforma móvil open source
Android la plataforma móvil open sourceAndroid la plataforma móvil open source
Android la plataforma móvil open source
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Curso de android
Curso de androidCurso de android
Curso de android
 
Introduccion android
Introduccion androidIntroduccion android
Introduccion android
 
Core Data en Mac OS X
Core Data en Mac OS XCore Data en Mac OS X
Core Data en Mac OS X
 
Javascript
JavascriptJavascript
Javascript
 
6.android introduccion
6.android   introduccion   6.android   introduccion
6.android introduccion
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
 
Tema 3 xml processing ap is
Tema 3   xml processing ap isTema 3   xml processing ap is
Tema 3 xml processing ap is
 
IOF Labs Weekend - Android (27082011)
IOF Labs Weekend - Android (27082011)IOF Labs Weekend - Android (27082011)
IOF Labs Weekend - Android (27082011)
 
React
ReactReact
React
 

Plus de Erick Camacho

Modelos de Concurrencia
Modelos de ConcurrenciaModelos de Concurrencia
Modelos de ConcurrenciaErick Camacho
 
Desarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con WatchkitDesarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con WatchkitErick Camacho
 
Integrando Swift y Objective-C
Integrando Swift y Objective-CIntegrando Swift y Objective-C
Integrando Swift y Objective-CErick Camacho
 
Porque debes de renunciar a tu empleo y desarrollar para iOS
Porque debes de renunciar a tu empleo y desarrollar para iOSPorque debes de renunciar a tu empleo y desarrollar para iOS
Porque debes de renunciar a tu empleo y desarrollar para iOSErick Camacho
 
CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitErick Camacho
 
Lo que no te han contado sobre el desarrollo para iPhone/iPad
Lo que no te han contado sobre el desarrollo para iPhone/iPadLo que no te han contado sobre el desarrollo para iPhone/iPad
Lo que no te han contado sobre el desarrollo para iPhone/iPadErick Camacho
 
Ecosistemas software para Flex
Ecosistemas software para FlexEcosistemas software para Flex
Ecosistemas software para FlexErick Camacho
 
Mejorando el País mediante Código
Mejorando el País mediante CódigoMejorando el País mediante Código
Mejorando el País mediante CódigoErick Camacho
 
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBErick Camacho
 
Spring BlazeDS Integration + Flex 4
Spring BlazeDS Integration + Flex 4Spring BlazeDS Integration + Flex 4
Spring BlazeDS Integration + Flex 4Erick Camacho
 

Plus de Erick Camacho (11)

Modelos de Concurrencia
Modelos de ConcurrenciaModelos de Concurrencia
Modelos de Concurrencia
 
Desarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con WatchkitDesarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con Watchkit
 
Integrando Swift y Objective-C
Integrando Swift y Objective-CIntegrando Swift y Objective-C
Integrando Swift y Objective-C
 
Porque debes de renunciar a tu empleo y desarrollar para iOS
Porque debes de renunciar a tu empleo y desarrollar para iOSPorque debes de renunciar a tu empleo y desarrollar para iOS
Porque debes de renunciar a tu empleo y desarrollar para iOS
 
CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKit
 
Lo que no te han contado sobre el desarrollo para iPhone/iPad
Lo que no te han contado sobre el desarrollo para iPhone/iPadLo que no te han contado sobre el desarrollo para iPhone/iPad
Lo que no te han contado sobre el desarrollo para iPhone/iPad
 
Ecosistemas software para Flex
Ecosistemas software para FlexEcosistemas software para Flex
Ecosistemas software para Flex
 
Mejorando el País mediante Código
Mejorando el País mediante CódigoMejorando el País mediante Código
Mejorando el País mediante Código
 
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDB
 
Spring BlazeDS Integration + Flex 4
Spring BlazeDS Integration + Flex 4Spring BlazeDS Integration + Flex 4
Spring BlazeDS Integration + Flex 4
 
Hands on Spring 2.5
Hands on Spring 2.5Hands on Spring 2.5
Hands on Spring 2.5
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...solanocortezluisalfr
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
10°8 - Avances tecnologicos del siglo XXI
10°8 - Avances tecnologicos del siglo XXI10°8 - Avances tecnologicos del siglo XXI
10°8 - Avances tecnologicos del siglo XXIantoniopalmieriluna
 

Dernier (15)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
10°8 - Avances tecnologicos del siglo XXI
10°8 - Avances tecnologicos del siglo XXI10°8 - Avances tecnologicos del siglo XXI
10°8 - Avances tecnologicos del siglo XXI
 

Realm para iOS

  • 2.
  • 4. Realm es una opción más sencilla
  • 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á
  • 10. Dubsmash iOS & Android #1 app en >40 países >10M instalaciones en Android
  • 11. Wahoo #1 fitness app en >120 países
  • 12. En Nubleer lo usamos desde hace 11 meses en producción
  • 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'"];
  • 20. Relationships Objective-C @interface Person : RLMObject @property NSString *name; @property NSData *picture; @property RLMArray<Dog> *dogs; @end [realm transactionWithBlock:^{ RLMPerson *person = [[RLMPerson alloc] init]; person.name = @"Tim"; [person.dogs addObject:mydog]; }];
  • 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)
  • 23.
  • 24.
  • 25.
  • 26. 4. ¿Por qué no usar Realm?
  • 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)
  • 28. Q&A