在各种移动App开发炙手可热的今天,移动数据库即使运用已十分广泛,但其发展却与之形成鲜明对比。数据显示,在过往十年的时间里,数据库创新层出不穷,服务器端数据库数量更是爆发式增长,刨除MySQL、PostgreSQL等老牌数据库,自2007年iPhone面世以来,已有包括Redis、Neo4J、TokuDB等超过30种服务器端数据库技术诞生,然而颇让人诧异的是,其中却无一是专门针对移动平台而设计的,移动端数据库发展呈现出踌躇不前的状态。
为此,由YCombinator孵化的创业团队Realm历时几年开发出了一款能够直接在手机、平板电脑及可穿戴设备上运行的开源移动数据库。不同于常规的服务器端数据库,Realm不仅能让开发者更为快捷地构建应用,还将赋予其极佳的用户体验。而开发者可以直接在自己所开发的iOS应用中使用Realm,存储和查询本地数据。
目前,Realm仅支持iOS平台,未来将逐渐支持Android。现在,开发者可以在Objective-C和Swift中使用它。Realm最大的特点之一就是其易用性极强,数据可以直接作为对象使用,并通过代码查询,而无需再头疼ORM众多坑爹的性能和维护问题。此外,Realm团队还将API限制在仅有3个常用类(Object、Arrays和Realms)和1个实用类(Migrations),以保证用户可以直接、快速地使用。
Realm代码示例(分别为使用Objective-C和Swift):
// Using Realm in Objective-C /* Dog.h */ @interface Dog : RLMObject @property NSString *name; @property NSInteger age; @end RLM_ARRAY_TYPE(Dog) /* Elsewhere */ Dog *mydog = [[Dog alloc] init]; mydog.name = @"Rex"; mydog.age = 9; NSLog(@"Name of dog: %@", mydog.name); RLMRealm *realm = [RLMRealm defaultRealm]; // Access default realm (database) on disk // Transactions for full ACID guarantees [realm beginWriteTransaction]; [realm addObject:mydog]; [realm commitWriteTransaction]; // You can safety transact across threads as well // Query RLMArray *results = [Dog objectsWhere:@"name contains 'x'"]; // Link objects in a Graph Person *person = [[Person alloc] init]; person.name = @"Tim"; [person.dogs addObject:mydog];
// Using Realm in Swift /* Dog.swift */ class Dog: RLMObject { var name = "" var age = 0 } /* Elsewhere */ var mydog = Dog() mydog.name = "Rex"; mydog.age = 9 println("Name of dog: (mydog.name)") let realm = RLMRealm.defaultRealm() // Access default realm (database) on disk // Transactions for full ACID guarantees realm.beginWriteTransaction() realm.addObject(mydog) realm.commitWriteTransaction() // You can safely transact across threads as well // Query var results = Dog.objectsWhere("name contains 'x'") // Link objects in a Graph var person = Person() person.name = "Tim" person.dogs.addObject(mydog)
相关链接:Realm官网、mobilehub主页
CSDN在线培训――Swift:iOS开发的未来
CSDN邀请美国加州州立大学计算机硕士、前网易新闻客户端iOS核心开发、《The Swift Programming Language》中文版翻译成员、Swiftist.org社区发起人 李洁信,介绍Swift语言语法、Swift和Objective-C的互用机制以及如何使用Swift更高效地开发iOS App。【 报名地址 】