8 ms·
Datomic Free Edition
- mark_l_watson 14y agoThat's great - Thanks Rich and Stu :-) I am using Datomic on a friend's project right now. We will certainly use the Pro version, but a free edition will help promote the platform.
- stuarthalloway 14y agoHope your friend's project will give us a chance to meet in person. I have enjoyed you blog.
- mark_l_watson 14y agoHe is in your office right now.
- mahmud 14y agothat was quick!
- pelle 14y agoI have to say that the introduction of a turn of the century enterprise software pricing model is not a welcome thing. I think the subscription model is a much better approach in todays market. In particular since I think Datomic's early adopters are going to be mainly startups and not larger enterprise customers. Their initial hosted transactor model was a good idea as well. The problem I think was that it was hard to come up with a way of pricing it in a way that people could understand. Here's hoping they will return to our add back either the subscription model or hosted transactor in the near future.
- drcode 14y agoMaybe I'm just lazy, but the biggest impediment to using Datomic right now is that I don't want to deal with the hosting and configuration that's required. If I could just go to datomic.com, log in and click "create new database" and call it "my_new_app_database" and then immediately use that database from my app that would be fantastic. (In short, I wish there was a heroku for datomic... admittedly, paying customers probably aren't impeded by such newb issues.)
- pelle 14y agoI agree I would like this.
- jblz 14y agoThis looks like a cool product. Consider linking to your FAQ or including a blurb about what Datomic is in the announcement -- I had to go digging to figure out WTF it was as opposed to what it was compared to the Pro version. Cheers :)
- fuzzythinker 14y agoThe pricing (& "Get Datomic!") link is broken for me, forwards to https://sites.zoho.com/sitesetup?domain=datomic.zohosites.com https://sites.zoho.com/sitesetup?domain=datomic.zohosites.co... which opens blank. I needed to copy link ( http://www.datomic.com/pricing.html http://www.datomic.com/pricing.html ) & paste it.
- richhickey 14y agoLinks were updated, you might need to refresh
- fuzzythinker 14y agoyup, works now
- ozten 14y agoI have no idea what Datomic does. This is a good page to reach new users.
- nirvana 14y agoI saw this page, and was not surprised that it doesn't say what Datomic is. A lot of people make that mistake. So, I clicked the link at the end of the page to go to your website. I followed some more links. I found three links that talked about feature, benefits, and the architecture, and clicked all three opening them in tabs. I read the first part of every page and then skimmed the rest. I have no damn clue what this is. Its something database. It has immutable facts from the past. Why would I use it? All of your pages talk about features that might be important to someone who's considering the software, and about how it works, and stuff like that. But never, in clear terms, what it is. I have the same problem working on what we're doing here, what it is is new, so there's not an obvious "We're an X" or "We're an X with a Y" that I can give. The best bet if that's the case for you, probably would be to do something like "Say you've got a Q and you need to W it while you're Z is already at X, if that's the case then Datonic will do P, O, and R for you giving you result Z!" Or whatever is appropriate for whatever it is datomic is. Just a constructive suggestion. Who would use it and why?
- pooriaazimi 14y agoThis is exactly what happened to me. I wanted to know what it is, opened those pages in tabs, read half of first one and skipped to the second one. It was soooo long (http://docs.datomic.com/tutorial.html http://docs.datomic.com/tutorial.html) I knew I couldn't finish reading it in less than 5 hours and came here to ask: What is this, and why/who would want to use it? It could be useful for a project I'm working on, but I just couldn't understand what the damn thing is. And the fact that I have a headache obviously doesn't help.
- pooriaazimi 14y agoOK. The FAQ is better, but not ideal: http://www.datomic.com/faq.html http://www.datomic.com/faq.html
- kinleyd 14y agoProbably the best way to get your mind around Datomic conceptually would be to watch these introductory videos[1] Rich and Stu put together when first introducing Datomic. It's pretty revolutionary, IMO. Edit: In response to those too pressed for time to watch the videos, you can read the rationale[2] for Datomic. However, it is a bit long. Rich and Stu may want to summarize it for the really pressed for time. :) [1] http://www.datomic.com/videos.html http://www.datomic.com/videos.html [2] http://www.datomic.com/rationale.html http://www.datomic.com/rationale.html
- krosaen 14y agoCould someone explain what an "embedded durable storage engine" provided by the transactor-local storage is? Where is the data actually stored durably? Could I run my personal website with pet projects with datomic using the free edition and have the data stored safely (e.g not an in memory demo database?)
- stuarthalloway 14y agoTransactor local storage is to a directory on the transactor's local disk, and is as safe as you think disks are. Also: you can backup from one storage system and restore to another. So if you decide you want to upgrade from local disk to DynamoDB, no problem.
- krosaen 14y agoThanks for the clarification. Sounds like one could get away with using the free edition for a pet project website along with some periodic backup of the directory on the transactor machine, but any serious project would wish to upgrade to the DynamoDB version.
- richhickey 14y agoIt's really not a different story than it is with any traditional filesystem-based database, and as durable.
- mkmkmmmmm 14y agoWhy do people keep running blogs that are totally inoperable with mobile browsers? I'd like to have a more intelligent comment, but I was unable to scroll without activating links.
- Rickasaurus 14y agoUgh, per-process licensing? What is this, 1995?
- tom_b 14y agoI think the neatest outcome it that this may encourage more people to play around with datalog. Coming from a SQL background, I used to say that I wanted first class functions in SQL. Who knew that this little restricted version of prolog would enjoy such a renaissance? See also cascalog . . .
- drcode 14y agoMy nutshell answer to "What is datomic?": It is a database system for Java or Clojure where not all of the database code runs on the server. Instead, the server is fast and "dumb" and all the work for your queries runs on each client individually, which just cache chunks of data from the servers as needed. It turns out having your queries run on the clients has nice properties in terms of query language power and performance. Additionally, it has an extremely powerful and elegant way of tracking historical information: No data is ever forgotten, so that if you want to say "run this query against the database as it was last Wednesday" you can do that. In a typical production application, much of the complexity in the database comes from having special auditing tables that keep track of historical info- In datomic you don't need to have such tables. Finally, it can do all of these things while still being highly scalable (with a small caveat that it might not fully scale in the rare case where you have an app that is extremely write-heavy.)
- kinleyd 14y agoAlso in the revolutionary category, all data is treated as immutable, and what we traditionally consider an update to a piece of stored data (with the change being made in-place of the original datum) is treated as a new fact with just the time being different (a new record with the change in value is created along with the time of change). Since data is never changed, only added, there is no need for the traditional transaction locks, etc., thus providing a whole new way to manage and process your data and providing a perfect audit trail in the process.
- olivergeorge 14y agoJust thought I'd risk proposing some possible architectures to confirm I see how the licenses (and datomic) applies. Standard web application using free edition. Three servers. Architecture is DB storing data locally, a web server and another server (say for slow report queries, an API or web worker). Could use beefy servers to scale up. Business application using pro license allows better redundancy and scalability. Can use different data storage options. Can break beyond limits of 2 servers for processing and request handling. The pro's peer license cost per process (which I think means cost per grunty server cost) is at worst $800 up front plus $400 per year. Note: This is unlikely to be quite right. Updated: thanks to RichHickey.
- richhickey 14y agoThe free topology is 3 servers, one of which is the transactor (the one hosting the db in free edition). You get 2 peers _in addition to_ the transactor (connecting to it). So you could have one additional server beyond the web server, or 2 API servers serving a non-peer web tier etc.
- olivergeorge 14y agoThanks Rich. Updated.
- realize 14y agoGreat that this now free for small projects. I've been pondering two questions about Datomic: (1) immutable data is great, but what if we have to delete some past data, for privacy or regulatory reasons? Does this screw everything up? (2) can we modify values as-at past points in time? Example, an electricity company records usage monthly for customers, but sometimes past usage is incorrect and needs to be edited. What would be the best way to structure this to get the "updated" view as-of six months ago? And also the "original" view as-of six months ago?
- hardwear 14y agoFor (1), Use a "mark as deleted" option, with extremely strict permissions on viewing deleted data, to protect privacy.
- augustl 14y ago>> (1) immutable data is great, but what if we have to delete some past data, for privacy or regulatory reasons? Does this screw everything up? I recall reading about the ability to clear out old transactions, to account for fast-growing databases. For example, "delete all transactions and facts older than 2 months". 2 minutes of googling didn't yield any results though, sorry. >> (2) can we modify values as-at past points in time? Example, an electricity company records usage monthly for customers, but sometimes past usage is incorrect and needs to be edited. What would be the best way to structure this to get the "updated" view as-of six months ago? And also the "original" view as-of six months ago? If I understand you correctly, you do this by adding a new fact with the correct usage. Your queries will now return the latest number, and you can use `as-of` and so on to get the old value.
- DennisP 14y agoHmph. They started out with the "pro" version free for opensource projects.
- moe 14y agoI think if you're aiming for any sort of broad adoption (are you?), then you'll have to add... SQL. This may sound like heresy, but in practice the following line is going to be a showstopper for most people: Peer.q("[:find ?entity :where [?entity :db/doc \"hello world\"]]", db); I don't want to learn a new query language. And I'll most certainly not even try to re-train my team on it. Maybe later I'll become curious about that fancy datalog-language to enable advanced features. But in the beginning, if you want my mindshare, you'd better spoon-feed me. Take this lesson from cassandra. They started out with Thrift and an extremely cumbersome query-interface, which fit the cassandra data-model perfectly but not the brains of the developers. Now recently they exposed their query-language as a SQL dialect, and suddenly cassandra is a joy to use. You should do the same. It will be a lossy abstraction. You'll need weird, non-standard constructs to accommodate the peculiarities of your model. Purists will cry in horror. BUT: It will look like SQL and roughly work like SQL. Everybody and their dog already knows SQL. People can jump in and bang out "select foo from bar ..." without thinking. People can re-use an entire galaxy of SQL-related tooling and knowledge that has evolved over decades. Most importantly: People can start with something they know and then adapt at their own pace to the great new things that your datastore enables. Don't underestimate this if you're aiming for the mainstream.
- arohner 14y agoI'm pretty sure SQL will be added to datomic over Rich Hickey's dead body, and that's a good thing IMO. There are already enough SQL databases in the world. rhickey isn't looking to make a 'me too' database, he's interested in improving the state of software development. SQL is a terrible language and needs to die. It's fine that we disagree, but don't tell the people who are convinced it's a bad idea that they need to 'join' the mainstream.
- moe 14y agoIt's not about making a "SQL-Database". It's about providing an interface that resembles something people are familiar with and that can be reasonably fluently typed in a REPL without breaking fingers. Just like Cassandra did with CQL and hbase does with HQL. SQL-syntax just happens to have stood the test of time for this kind of application. SQL is a terrible language No disagreement here. Just out of curiosity, what would you call this language then: [:find ?entity :where [?entity :db/doc \"hello world\"]]?
- sailfast 14y agoGreat to see a second tier of Datomic that allows broader use of the platform and expansion of the community. If I wasn't using Datomic in dev already this would definitely make me more apt to try it out and experiment. The compatible APIs and relatively straightforward upgrade process also makes it appealing. Well played.
- krosaen 14y agoFor those curious on what the heck datomic is, I found this podcast helpful: http://thinkrelevance.com/blog/2012/04/26/thinkrelevance-the-podcast-episode-010-stu-halloway http://thinkrelevance.com/blog/2012/04/26/thinkrelevance-the... The key to me is that you can run multiple queries against the same point in time, thereby having a sound basis for the data you are working with. Compare this to working with traditional RDBMS having to get it all done in a single query to have a coherent view of the world, or roll the dice by running multiple queries knowing that they all might not be running against the same view of the world.
- bickfordb 14y agoHow is this different than isolation / repeatable reads in SQL transactions?
- richhickey 14y agoa) It can occur over time and place - i.e. I can communicate a basis point (tiny, a long) to you, and 3 days later you can look at exactly what I saw b)It doesn't require any coordination, read locks, MVCC etc
- deleted 14y ago[deleted]
- Scotchy 14y agoSo basically, it is a triple-store with keeps track of time and no mutation of past. They have their own query language but it looks to me that they did a great job at making it as close to SPARQL as possible, which personally I am familiar with. Pretty neat stuff.
- stuarthalloway 14y agoIt is important to understand that datalog is not a new query language. It is an old one, with a strong pedigree. It has power equivalent to the relational model plus recursion. SPARQL is cool, and they did a good job making it look a little like datalog.
- jerven 14y agoSPARQl1.0 is equivalent to a datalog without recursion. Wonder what SPARQL 1.1. with property paths is equivalent too. Any way a hobby project idea I won't have time for is implement the datomic api on top of a systap bigdata quad store.
- sherbondy 14y agoIs there a hard memory cap for transactor local storage in the free version? Or is it more along the lines of: "we'll politely ask you to switch over to the paid version if you're eating up massive amounts of disk space"?
- richhickey 14y agoNope - no limit other than available disk space.
- mark_l_watson 14y agoIf you want to try the free version they released yesterday make sure that you grab a fresh copy (datomic-free-0.8.3343 is working fine for me). I suffered greatly with the initial datomic-free-0.8.3331 release before my customer gave me a heads up to refresh.
- mark_l_watson 14y agoI wrote up what worked for me: http://blog.markwatson.com/2012/07/using-datomic-free-edition-in-lein.html http://blog.markwatson.com/2012/07/using-datomic-free-editio...