I'm happy to announce that the team at MyPost (https://*digitalmailbox* .com.au/) has decided to release a library that we have been working on for the past couple of months.
https://github.com/MyPost/cassius Apparently its `also only the second release of open source software by a public sector organisation in Australia` (http://www.andykelk.net/tech/open-sourcing-our-work-why-were-doing-it) Overview Cassius is a clojure wrapper around cassandra's thrift interface. It treats cassandra as a big mutable nested hashmap and provides the following abstractions: - cassandra data and schema can be represented as values and clojure maps. - keyspaces, column families, rows and columns can be abstracted as nested map layers - supercolumns are just one extra level of nesting The library has been used for both mocking and for higher level abstractions on top of cassandra. An ORM has been built and used internally at MyPost <https://github.com/MyPost/cassius/blob/master/digitalmailbox.com.au> to deal with legacy cassandra data. Motivation The library was motivated by an inability to reason about what changes the existing monolithic system was doing to the underlying database. In order to move away from the existing system into more agile architecture, the team had to be careful about reworking features without breaking functionality. The typical work of code migration would end up looking something like this: 1. Get the current state of the DB 2. Run some legacy code (java) 3. See what has changed in the DB 4. Rewrite that change in clojure cassius was designed as a tool for developers to reason about and test changes to cassandra. It also has the following features: - Written in thrift in order to support supercolumns in the legacy system. - Abstracts the database in such a way that tests are easy to write and easy to read. - Uses of conditional restarts for more control of error states. - Option to use the component/Lifecycle framework. Mock DB is included for testing purposes. - Uses the Hashmap as a protocol, defined in cassius.protocols/IMap. - Methods: put-in, peek-in, keys-in, drop-in, set-in, select-in and mutate-in <https://github.com/MyPost/cassius#usage> The repo is here: https://github.com/MyPost/cassius Please have a play! -- 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.