9 ms·
Realm Mobile Platform – Realtime Sync Plus Fully Open Source Database
- nbevans 10y agoThese guys seem to be copying the Parse business model. Which as we all know worked out very nicely for the founders and investors. But very badly for anyone that adopted the Parse framework.
- emdowling 10y agoVery legitimate concern. I use the Realm database in production and it has proven to be a very good decision. Huge advantage over Parse is that the database is open source. If something did happen, the open source community would probably be enough to carry it. If not, it is just a local persistence store, so not hugely difficult to swap out for something else. This new mobile platform is not (as far as I can tell) open source and has completely unknown pricing beyond the free tier. I certainly wouldn't go near it, even though it looks great.
- div 10y agoWell, I'm not sure about the pricing, but according to this page (https://realm.io/products/realm-mobile-platform/ https://realm.io/products/realm-mobile-platform/) you can host the mobile platform on-premises.
- benguild 10y agoYes and no… I mean it seems like Realm is more focused on an “offline-first” approach by contrast, and is adding this "database-as-a-service platform” for platform agnostic sync. But, yeah… the usual “what happens if I run into a problem they can’t solve for me [in a timely manner]” or “what if I want to make hard-optimizations” or “what if they break something for me” or “what if they sunset it and I’m building an actual business on top of it” questions apply, of course. In general, depending on what you’re doing you'd want to MINIMIZE your dependencies on services like this. Luckily, they’ve always seemed focused on database more so than “everything” like Parse was… so it’s only 1 thing, albeit perhaps the most critical one.
- astigsen 10y agoAlexander from Realm here. We are very aware of how users of Parse got left in the cold when Facebook dropped the project. That is one of the reasons that we choose to offer Realm, not as a service that can be shut down, but rather as a free download that you can self-host on any provider. That way, even if something happened to us you would still be able to continue running your apps on your own servers. I know that there could still be concerns about how to maintain the software, which is why we have also open sourced the underlying database. I think most people will agree that we have a pretty good track record of being part of the ecosystem and being there for the developer community, and we very much intend to stay that way.
- timanglade 10y agoI don’t see any monthly pay-as-you-go hosted SaaS options on their pricing page [0]. Instead they seem to be making money selling Enterprise editions, so a closer parallel might be DataStax or Apigee. Why do you think it is copying Parse? [0]: https://realm.io/pricing/ https://realm.io/pricing/
- chatmasta 10y agoI disagree that Parse worked out badly. Now that parse-server is open source, the ecosystem is stronger than ever. I hesitatingly and begrudgingly used parse while it was still hosted by Facebook. At the time my biggest and only problem with it was the vendor lock-in. Now that it's open source, that problem no longer exists, and all the great tooling is still around. I'm happily using it on new projects. I suggest taking a look and trying it yourself.
- aeharding 10y agoOr, you know, support an open source alternative like PouchDB/CouchDB. Sync, conflict resolution, offline-first, and data push are all supported. Not to mention it's a very stable, mature ecosystem. There are even enterprise-ready setups using CouchDB (like Cloudant) for those that want it.
- timanglade 10y agoHi, former Apache CouchDB guy, former Cloudant employee, and former Realm employee here… I (still) love CouchDB but at the end of the day I think its sync is a better fit for server-to-server or web client-to-server use-cases, not mobile-to-server. There’s tons of stuff CouchDB sync doesn’t support that end up being a huge problem with mobile apps… Here are the top 3 things Realm adds in my opinion: great client-side performance, native models that are extremely easy to use, and conflict-free sync (not conflict resolution!). With my own eyes I’ve seen a generation of developers try CouchDB for mobile apps and then abandon it because of the limitation of its approach. Personally I’m glad to see someone try to bring more options to developers. I think this is the first general-case true sync (à la Google Docs) for mobile, and I hope it will continue to spur more iterations & innovation in other open-source projects as well.
- avtar 10y agoThere’s tons of stuff CouchDB sync doesn’t support that end up being a huge problem with mobile apps… Here are the top 3 things Realm adds in my opinion: great client-side performance, native models that are extremely easy to use, and conflict-free sync (not conflict resolution!). Thanks for listing those potential benefits. Any idea if those CouchDB issues are covered in detail somewhere?
- daleharvey 10y agoI work on PouchDB, in terms of those points: "great client-side performance": PouchDB is more than fast enough for most use cases, its just a wrapper over indexedDB. (there are areas we can improve, particularly performance of map reduce / mango queries). "native models that are extremely easy to use": Not sure what that means, PouchDB and CouchDB use json, its native and easy to use in JavaScript "conflict-free sync (not conflict resolution!)": Certainly going to have to take a look at this, any conflict free sync protocol I have seen put a lot of limitations on how data within your application is structured but conflict resolution certainly is something that can be improved within Pouch / Couch. I do think there is a bunch we can (and are) improving in PouchDB and its great to see alternatives, will be looking into this further now. But I certainly do not agree that (C|P)ouchDB are not suited for mobile <-> web sync, thats the primary use case I work on Pouch for.
- rikkimaru 10y agoSwitched from CoreData to Realm for a database-heavy communications iOS app. Been using it for about 6 months, so not an expert, but I've done some interesting stuff with it :) Main benefits I saw: * faster performance * simpler multi-threading * built-in encryption based on ios' commoncrypto (fips 140-2 module) * fast response time to questions on github (in 3 cases) Main drawbacks: * no icloud syncing. I need to check out the new syncing stuff... * new-ish database so does not have ALL features (e.g., multi-process encrypted access). They appear to work quickly to implement features the community cares about. * performance is fairly "magical". I understand normal database query performance, realm is different... * No in-place VACCUUM-type functionality. I've had issues with the realm database file growing unexpectedly large.
- TimOliver 10y agoHi! Tim from Realm here. Glad to hear that Realm's been working out well for you in place of Core Data. :) In response to your drawbacks there: * Definitely try out the Realm Mobile Platform. We're also looking at leveraging CloudKit to seamlessly authenticate all devices belonging to a user. * Multi-process encryption wasn't possible until relatively recently (Issue #1845 on our newly open-sourced realm-core project!), so we'll definitely be looking at it from now. Please do thumbs-up any of our GitHub issues for features that you would like. * We've published articles on how the Realm Core works in the past, but now that it's open-source, you can go and see the code for yourself! * It's possible to generate compacted copies of Realm files, so you can implement this functionality yourself if you need it. We've had long discussions about whether this should be an automatic feature, but we feel in most cases it would be premature optimization.
- sctb 10y agoWe've updated the link from https://realm.io/products/realm-mobile-platform/ https://realm.io/products/realm-mobile-platform/ to this introductory page.
- timanglade 10y agoFormer Realm employee here. So glad to see the team finally launch this. I've seen them work their asses for years (literally!) to launch something I know Realm’s 100k+ dev community was clamoring for from day one but was really hard to build. I'm biased of course but honestly I think they have soft-key shipped one of the most transformational mobile technologies ever: real-time, conflict-free sync that works as well offline as online. There was a lot of literature on this of course but bringing it all together in one product was something else! From engineering to marketing, product & founders I know they've sweated to get here and I'm just so, so happy for them. I know they will make a lot of developers and customers happy, and for that I say: bravo.
- danielrhodes 10y agoCouchDB and iCloud already have this.
- HaloZero 10y agoiCloud's implementation is awful. It doesn't help you understand or resolve the conflicts at all and just assumes last write wins.
- danielrhodes 10y agoIs such a conflict likely to occur with a single user?
- marknadal 10y ago@timanglade, congrats to you and your former team! Always awesome to launch, good job. Full disclosure, I work on a competing product (MIT licensed, https://github.com/amark/gun https://github.com/amark/gun ) and do a lot of testing on distributed systems. You guys say it is offline-first with conflict-resolution. However your documentation ( https://realm.io/docs/realm-object-server/#conflict-resolution https://realm.io/docs/realm-object-server/#conflict-resoluti... ) states the "Last update wins". This is contradictory for two reasons: A) Either you mean last write wins relative to the server. But an offline update is going to get sent late (on reconnect), which would make it "last" and lead to weird problems. B) Or you mean last write wins relative to the time stamp of the client. But this does not account for wall clock drift. What happens if the client's clock is intentionally set 2 years in the future? In a distributed system, everybody has a different "last". The demo video, while very well done, uses a drawing app which does not really demonstrate real conflict (ie, if 2 users draw over the same space, it becomes a z-index rendering issue, which could be solved with conflict resolution but isn't a good example of conflict).
- antoniuschan99 10y agoI found Realm to be very easy to use with React Native. I had trouble using the other tools to save data inside my React Native apps. Anyone else been in the same situation?
- ak1394 10y agoI'm using it in my React Native app. Pretty happy with it so far. Haven't tried anything else, as Realm looked like the best choice at when I was selecting the data store for the app.
- wiradikusuma 10y agoSo this is like alternative to Firebase? How different is their offering?
- ChrMelchior 10y agoChristian from Realm here. Main differentiators are probably: - Realm is self-hosted compared to Firebase which is an MBass. - Native objects all the way down vs. a JSON structure
- wehadfun 10y agoCan someone explain why use Realm, or CouchDB, over SQLite?
- bigfish24 10y agoSpeaking from Realm's side, the primary benefits most developers give are: - Object-based: not an ORM - Speed: Realm is quite fast and in some cases faster than SQLite - Ease-of-use: a lot less boilerplate code and a simple threading model make it easy to get going with.
- 1474295912 10y agoAny updates on the C++ API and lib? It's been pending since a year[1] and there are no updates :-( [1] https://github.com/realm/realm-cocoa/issues/2198 https://github.com/realm/realm-cocoa/issues/2198
- bigfish24 10y agoWe open-sourced our core which is written in C++, though different API. This now makes it easier and we would love to build it alongside the community: https://github.com/realm/realm-core https://github.com/realm/realm-core
- 1474295912 10y agoKudos! This is great news for us Mobile C++ developers who don't have alternative to SQLite. You just made my day :-)
- deleted 10y ago[deleted]
- yla92 10y agoCongrats on the big release. I remember I was using very early version of Realm in the one of the Android apps I was working on at that time. It was not working properly for me, unfortunately. Random Segmentation faults and limitations that one have to use the POJO extended from the RealmObject. So, I eventually switched back to SQLite (plus ORMLite). I have seen a lot of changes and now I think I would definitely consider giving it a try. One question that I have is even though it's nice to have self-hosted Realm Object Server, are there any plans or timeline that it's going to be open-sourced ?
- pkopacki 10y agoPaul from Realm here: The Developer Edition of Realm Object Server is free forever, and we're committed to adding new features and making it more powerful over time, but at the moment we haven't made any decisions about making it open source. We do have a strong history of open sourcing the things we build, so it's definitely something we're thinking about.
- chrisballinger 10y agoAnother Core Data alternative to try is YapDatabase: https://github.com/yapstudios/YapDatabase https://github.com/yapstudios/YapDatabase It is similar to Realm in a lot of ways, with a simple concurrency model, and native objects (key/value/collection). It's built on top of SQLite so you can use extensions like secondary indexes, full text search, RTree. You can also use SQLCipher for full database encryption, and there's another extension to do automatic syncing via CloudKit. Caveats are it only runs on Apple platforms, doesn't have cross platform sync, and isn't backed by VC funding. If you need those things then Realm is definitely your best choice.
- programmarchy 10y agoBump for Yap. I've successfully shipped an app that used this with the CloudKit sync extension. Have to say the mappings / view paradigm was not very intuitive starting out, but once that clicked things worked very well. Glad to hear Realm is providing an alternative for syncing and will have to try it out.
- themihai 10y agoIt says the database is open source but I can't find any link to the source code. Is both the client and server open source?
- bigfish24 10y agoThe core database that powers all the versions of Realm was open-sourced today here: https://github.com/realm/realm-core https://github.com/realm/realm-core The various SDKs that use the core for each mobile platform have always been open source, such as realm-cocoa: https://github.com/realm/realm-cocoa https://github.com/realm/realm-cocoa
- themihai 10y ago> The core database that powers all the versions of Realm was open-sourced today here: Ok, what about the server database?
- astigsen 10y agoThe server runs the exact same database. It is only the sync part that is proprietary.
- themihai 10y ago> It is only the sync part that is proprietary. Any reason for that? It's also doesn't look very straightforward how exactly the database is deployed and accessed on the server. As it stands now only the 'client' is open sourced but if someone wants to hosts its own `realm` database it still has a lot of work to do. I really find this misleading when various SAAS vendors claim they are open source when in fact they just provide you just a client to access their service. Nobody(almost) would use a `binary` client anyway.
- creager 10y agoCongrats! Realm and React Native is now my go-to, keep up the solid work :)
- mamcx 10y agoI wanna build a POS app and need a solid sync experience. I'm building my own but obviously prefer to use something else ;) This could support multiple users against a master database editing and getting up-to-date(as possible) data? And sync reliable?
- reallarry 10y agoSure looks like it does.
- bigfish24 10y agoYes it would be possible to support. This version doesn't expose adjusting Realm permissions such that multiple users can have read/write permissions to the same Realm. This will be coming during the beta and exposed as client APIs for users to manage permissions to Realms under their control.
- bryanlarsen 10y agoAny plans for a browser version?
- bigfish24 10y agoIt is something we want to do but right now we are just focused on mobile. Would love to learn more about what you might like in a web framework: af@realm.io
- gaara87 10y agoCongrats! This is a major step forward which we will be supporting in our product. Its right now being used by close to 500k users :) Question - TLDR - Is p2p synchronization possible? Two databases in two different devices in the same network, is it possible to achieve synchronization without having access to a server?
- sanderpick 10y agoDefinitely going to try this out. However, I don't feel great about not having... - any concept of clustering for reliability and failover - any easy/clear way to distribute load to the object server - an easy way to run backups I may just be blind in the docs. I really don't want to go back to running my own database server. Services like compose.io are soooo nice. Clustering, automatic failover, backups...