在各種移動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。【 報名地址 】