ANN: DataScript, in-memory database and datalog queries in ClojureScript

2014-04-25 Thread Nikita Prokopov
Hi! 

I’m glad to announce my new library, DataScript. 

It’s an open-source, from-the-scratch implementation of in-memory immutable 
database aimed at ClojureScript with API and data model designed after 
Datomic. Full-featured Datalog queries included. 

Library is here: https://github.com/tonsky/datascript 

Also check out this blog post about why you may need a database in a 
browser: http://tonsky.me/blog/decomposing-web-app-development/ 

Feedback welcome!

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: ANN: DataScript, in-memory database and datalog queries in ClojureScript

2014-04-25 Thread Daniel Compton
Hi Nikita

Can you explain what you mean from the limitations on the GitHub Readme? 
This:

 No history support, though history can be implemented on top of immutable 
 DB values


Seems to contradict:

 Immutability simplifies things even in single-threaded browser 
 environment. Keep track of app state evolution, rewind to any point in 
 time, always render consistent state, sync in background without locking 
 anybody.


How do you rewind to any point without history support? I feel like I'm not 
reading this correctly.

Thanks, Daniel.

On Friday, April 25, 2014 7:38:35 PM UTC+12, Nikita Prokopov wrote:

 Hi! 

 I’m glad to announce my new library, DataScript. 

 It’s an open-source, from-the-scratch implementation of in-memory 
 immutable database aimed at ClojureScript with API and data model designed 
 after Datomic. Full-featured Datalog queries included. 

 Library is here: https://github.com/tonsky/datascript 

 Also check out this blog post about why you may need a database in a 
 browser: http://tonsky.me/blog/decomposing-web-app-development/ 

 Feedback welcome!


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: ANN: DataScript, in-memory database and datalog queries in ClojureScript

2014-04-25 Thread Nikita Prokopov
Hi Daniel,

First sentence was written from Datomic standpoint. In Datomic, all history is 
kept in the database ref. Given ref to an immutable DB, you can rewind back to 
any point in time. I can guess that each DB value consist of indexes to 
current, latest state + append-only history log. There's also special API call 
for it, history.

In DataScript, however, each immutable DB value is a value for just now, for 
latest moment that holds true. I do not keep history for values and do not 
support history API. There's not append-only history log built-in into 
DataScript. But still, DataScript DB is based on persistence data structures, 
meaning that DB before transact! and DB after transact! share a lot of inner 
structure between them. You can, on top of that immutable DB values, create 
just a vector of databases and store  values of DB as it evolves there. This 
kind of history is not in the box, but is trivial to add on top.

Motivation for that is that you rarely need audit queries in the browser where 
DB may exist for 30 seconds and dies when browser window closes. Immutability 
is important, referencing and doing queries to historical DB value are 
important, but doing queries accross whole history is not so.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.