P. Kandel @kandelvijaya I boosted my database of 200,000 rows search from 7 seconds to 0.5 seconds with @realm . Practically under 30 mins of using it 1st time. 10:09 PM - 10 Sep 2015
need apps that work well offline and when network connections are intermittent • Reactive: They expect apps that are highly responsive, with all changes immediately reflected in the UI • Real-time: They expect every user and device to stay in sync with each other in real-time • Collaborative: They want highly collaborative features and experiences within their apps • Seamless: They expect to be able to move seamlessly from device to device
to deliver quality apps quickly and on time • Ability: With high user expectations, the team need the ability to easily add advanced features like data sync, messaging and collaboration. • Cross-platform: To reach the full audience, you need to be able to deliver apps for both iOS and Android • Standardize: To manage all the apps and reduce complexity, you want to standardize on a single platform
SDK Sync Engine Dashboard Auth System Encryption Layer What is it? Access Control Full DB access Data connectors Object Store SD SDK SDK Enterprise Feature Event Framework
What happens when there is no connectivity? • Queueing? • Persistence? • What about connectivity being lost during requests? • Tokens? Do they have to be persisted in app? • State-full services? • Resource intensive • Need for multiple REST calls. High latency cost • Often incurs duplication of data • JSON parsing is expensive
server • Objects are live, they update—automatically and immediately—in response to changes • Not an ORM, the database is the data model • Easier for developers to build, change, maintain • Reduce code complexity via unified data format; cross-platform • Encrypted at rest & transit Objects all the way down Simplify Data Architecture
coupon.isValid = true 1 2 3 • Bridge legacy APIs • Shift complexity to backend • Node.js SDK • Identical object interface • Full database capabilities • Apply changes to push data • Event framework • Listen and respond to changes from clients • Pass along data to other systems or databases • Supports custom authentication
Define you model class by extending RealmObject public class Dog extends RealmObject { public String name; // fields can also be private of course public int age = 1; // default values } public class Person extends RealmObject { @PrimaryKey public long id; public String name; // support for custom logic in accessors public RealmList<Dog> dogs; // declare one-to-many relationships }
serverURL = "realm://my.realm-server.com/~/default"; SyncConfiguration conf = new SyncConfiguration.Builder(user, serverURL).build(); Realm realm = Realm.getInstance(conf); // Any changes made to this Realm will be synced across all devices!
worry about connectivity, JSON parsing, object mapping… • Unified Data Model. Same data format and reactivity on Client and Backend. • Straight line from Server to UI. Data can be bound directly to UI on Client.
Open Source Software (Apache 2 license) Realm Object Server: synchronize the database with server and multiple devices Realm Dashboard: shows you statistics, execute triggers, …