国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > 移动数据库新疆界:开源、Swift、可穿戴...

移动数据库新疆界:开源、Swift、可穿戴...

来源:程序员人生   发布时间:2014-09-29 08:00:01 阅读次数:1851次

在各种移动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。【 报名地址

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生