Live data from Hacker News

Realm 1.0

realm.io

11–20 of 112 posts

Re: Realm 1.0

#11
Can someone elaborate how this differs from JPA/Hibernate style ORMs ?

The examples look suspiciously similar.

EDIT: So i easily believe that it's nicer than CoreData, and I see that there is lots of potential to reduce an ORMs complexity by assuming a single Writer (Process of App), but the core Problem seems to be exactly the same. - And the solution looks also very familiar. -> Proxy Objects, Bytecode manipulation to intercept field access etc.

Does it handle the uncool cases of ORMs better? - Unloading of state when thousands/millions of objects are touched once

- Collection fetching of large collections, iterators/chunks

- OrderedList O(N) index update for non-append inserts

- What happens to invalidated (deleted) objects? are collections updated live?

- Does is handle cascades explicitly/implicitly/not ?

I'm quite interested in this, since it may solve real pain problems.

Re: Realm 1.0

#12
post #8

Yes. I've been using Realm for my work app. In my opinion it's easier than Core Data, and certainly much easier than bare SQLite. I've expected it to cross 1.0 after 0.99 but it keeps going on to more than 0.101. So, congrats on finishing the milestone. One request though: what about grouping functionality?

(JP from Realm here) Yes, that's something we're hoping to add! We're tracking that feature as #3384[0]. Still needs some design work though.

[0]: https://github.com/realm/realm-cocoa/issues/3384

Re: Realm 1.0

#13
post #11

Can someone elaborate how this differs from JPA/Hibernate style ORMs ? The examples look suspiciously similar. EDIT: So i easily believe that it's nicer than CoreData, and I see that there is lots of potential to reduce an ORMs complexity by assuming a single Writer (Process of App), but the core Problem seems to be exactly the same. - And the solution looks also very familiar. -> Proxy Objects, Bytecode manipulation…

Realm is not a relational database, but an Object database.

This means that we totally avoid the impedance mismatch when you try to map Java references to tables. In Realm, relationships are first-class citizens.

This is also one of the reasons that we can provide lazy-loading for everything. With ORM's the API might look the same on the surface, but you usually run into problems when trying to access foreign collections.

API wise we try to stay as close to normal Java as possible, which is probably why it looks similar to what Hibernate offers.

Regarding specific features.

- Realm uses zero-copy as much as possible, so collections in Java point directly to the underlying data (i.e takes almost no space on the Java heap).

- Collections are live updated yes.

- Deleted objects could potentially be accessed after they are deleted, but there is API methods for avoiding that.

- Cascading deletes is not supported yet, but really high on our TODO and definitely a feature we want to add.

Re: Realm 1.0

#14

VP Product at Realm here. Thanks to everyone on HN for the support over the years! We came out of YC in Summer 11 and it’s been a fantastic ride growing over the past few years. Would love to hear y’alls thoughts on what we should add next. Is there any reason why you’d still use SQLite?

1. "Realm is not an ORM, and is not built on top of SQLite. Instead we’ve built a full database for mobile app developers, one that uses native objects that are dynamically mapped to a full, custom database engine (not just a key-value store)."

=> Why not use the terms "object database" or "OODBMS", then ?

2. "Realm supports Java, Objective-C, React Native, Swift and Xamarin."

=> "React Native" is not a language, why not just state that you support "JavaScript" ?

3. What about Python ?

Re: Realm 1.0

#15

VP Product at Realm here. Thanks to everyone on HN for the support over the years! We came out of YC in Summer 11 and it’s been a fantastic ride growing over the past few years. Would love to hear y’alls thoughts on what we should add next. Is there any reason why you’d still use SQLite?

1. "Realm is not an ORM, and is not built on top of SQLite. Instead we’ve built a full database for mobile app developers, one that uses native objects that are dynamically mapped to a full, custom database engine (not just a key-value store)." => Why not use the terms "object database" or "OODBMS", then ? 2. "Realm supports Java, Objective-C, React Native, Swift and Xamarin." => "React Native" is not a language, why…

> 3. What about Python ?

Is there any practical way to use Python for mobile apps? Realm is only targeting mobile platforms AFAIK.

Re: Realm 1.0

#16
What exactly is Realm's business model? The core is closed-source, but as far as I can tell, it's free for application developers to use.

Re: Realm 1.0

#17
post #11

Can someone elaborate how this differs from JPA/Hibernate style ORMs ? The examples look suspiciously similar. EDIT: So i easily believe that it's nicer than CoreData, and I see that there is lots of potential to reduce an ORMs complexity by assuming a single Writer (Process of App), but the core Problem seems to be exactly the same. - And the solution looks also very familiar. -> Proxy Objects, Bytecode manipulation…

Realm is not a relational database, but an Object database. This means that we totally avoid the impedance mismatch when you try to map Java references to tables. In Realm, relationships are first-class citizens. This is also one of the reasons that we can provide lazy-loading for everything. With ORM's the API might look the same on the surface, but you usually run into problems when trying to access foreign collect…

Sorry my edit was after your answer.

Yeah well, literally ORM has relational in it, but you probably know what I mean.

So it behaves more like a graph store? - Can I query bottom up / through collections ?

I'm really interested in the technical details and their implications.

Re: Realm 1.0

#18

VP Product at Realm here. Thanks to everyone on HN for the support over the years! We came out of YC in Summer 11 and it’s been a fantastic ride growing over the past few years. Would love to hear y’alls thoughts on what we should add next. Is there any reason why you’d still use SQLite?

1. "Realm is not an ORM, and is not built on top of SQLite. Instead we’ve built a full database for mobile app developers, one that uses native objects that are dynamically mapped to a full, custom database engine (not just a key-value store)." => Why not use the terms "object database" or "OODBMS", then ? 2. "Realm supports Java, Objective-C, React Native, Swift and Xamarin." => "React Native" is not a language, why…

1. We are close to an object database, but with some subtle distinctions from the mainline expectations I believe — data is serialized in a language-independent binary format, that is actually column-oriented. We also have full indexing available of all fields. It’s not that object databases can’t do that, it’s just that most people probably don’t expect that level of access. And to be honest, there are marketing considerations too, in the OODBMS feels very dated as a term.

2. We don’t support JavaScript in general at the moment, only JavaScript that runs inside JavaScriptCore inside React Native. Otherwise, we lack the C++ APIs that we rely on to power the underlying storage engine. We are trying to add support for more JavaScript runtimes though.

3. Python support is doable, but we are focusing 100% on mobile front-ends right now. We don’t even support using Realm from Java outside of Android, for example. Eventually we do want to add support for Python, Ruby, node.js, etc.

Re: Realm 1.0

#20

Earlier quoted context omitted.

1. "Realm is not an ORM, and is not built on top of SQLite. Instead we’ve built a full database for mobile app developers, one that uses native objects that are dynamically mapped to a full, custom database engine (not just a key-value store)." => Why not use the terms "object database" or "OODBMS", then ? 2. "Realm supports Java, Objective-C, React Native, Swift and Xamarin." => "React Native" is not a language, why…

> 3. What about Python ? Is there any practical way to use Python for mobile apps? Realm is only targeting mobile platforms AFAIK.

[deleted]
Post reply on HN