Showing posts with label cassandra. Show all posts
Showing posts with label cassandra. Show all posts

2018-07-04

Two Major Design Flaws

Throughout the time I spent developing longevity, I've made any number of major design flaws. The vision I started out with has changed drastically over time. It's evolved as I experimented with developing the longevity API. While my core guiding principles have stayed in place, the early versions of the library are nearly unrecognizable when compared to the latest version.

Since the beginning, I've had a comprehensive test suite, that has allowed me to correct mistakes and simplify my API with ease and assurance of correctness. And working with the API as it has grown has allowed me to spot problems as I moved forward. But there were two major design flaws that remain in place. Both of them have been nagging me for many months now, until they have become clear in my head. Now I'm ready to admit and address these two errors: the failure to use shapeless, and the lack of column-oriented storage of persistent entities with column-oriented back ends such as Cassandra and SQLite.

2016-12-08

More Longevity Awesomeness with Macro Annotations!

I just got longevity release 0.18 out and wow, is it awesome! If you've looked at longevity before, you will be amazed at how easy it has become to start persisting your domain objects. And the best part is that everything persistence related is tucked away in the annotations. Your domain classes are completely free of persistence concerns, expressing your domain model perfectly, and ready for use in all portions of your application. Of course, we also provide a complete persistence layer for you, saving you countless hours of development effort!

See for yourself, here is a simple example demonstrating how easy it is to get started:

2016-11-10

Partition Keys in Longevity

I'm so excited to announce the release of longevity version 0.16.0! Longevity now supports partition keys - a key where, given a key value, we can determine the node in a distributed database where the data resides (or would reside, if it existed). This is a critical feature for NoSQL databases in a distributed context. A partition key is implemented with sharding in MongoDB, and with partitioning in Cassandra.

I'll provide a brief example of a partition key here after the jump, but to learn more about it, please take a look at the user manual.

2016-10-13

Longevity 0.15.0 - Query Enhancements

Longevity - a persistence framework for Scala and NoSQL - is now up to version 0.15.0! The latest release focuses on query enhancements. We have added orderBy, offset, and limit clauses to our queries and query DSL.

2016-08-26

Configuration-level Optimistic Locking with Longevity

Longevity - a persistence framework for Scala and NoSQL - has been built from day one to isolate persistence concerns behind a clear, consistent, and easy to use API. The power of this design principle is demonstrated by how easy it is for you to bring optimistic locking to your application. All you have to do is set a configuration flag.

Longevity is growing to full maturity, and most features you would expect from a persistence framework are in place. Our 0.10.0 release brings many incremental improvements - including support for controlled vocabularies. But the central feature of this release is configuration-level optimistic locking.

2016-07-15

Longevity Now Has a Streamlined API!

I'm very excited to announce the 0.9.0 release of longevity, which features a whole slew of API improvements that make longevity much easier to use and understand. Here are the three most significant changes:

  • Shorthands are gone
  • Assocs are gone
  • The API for Key and KeyVal has been reworked for significant ease-of-use improvements
I'll discuss each of these changes in more detail below.

2016-03-02

Longevity Now Has a Cassandra Back End

Longevity release 0.5 is out! The central focus of this release is the shiny new Cassandra back end.

Longevity is a persistence framework for Scala and NoSQL. It was originally built with a MongoDB back end, but I've always planned on supporting more kinds of databases. Longevity is mature enough at this point to add a second back end, and I chose Cassandra for a few different reasons.

2016-01-13

Longevity: A Persistence Framework for Scala and NoSQL

Longevity is a persistence framework for Scala and NoSQL. We currently support MongoDB, with a Cassandra back end coming soon. [UPDATE: We've had a Cassandra back end for a long time now. We now have a SQLite back end as well.] After having been working on this project for over a year, I am so excited to finally share it with you! I've been working hard to put in a core set of features that would make the tool feasible for you to use in a real application. The result is our MMP release, which we just put out yesterday.

2015-09-20

Codename: Life Happens

I don't have to actually look over at GitHub to know what it says. It says the estimate for MMP is mid September, 2015. And I don't need to go to my board to know how much work I have left for an MMP release. And I don't really want to look up at the date in the top right corner of my screen.

And I don't expect that mid-September language to stay there long! When I get around to it I'm taking out all language about estimated dates. I've already pushed back dates in the README once. By this point, it's more of an "It'll be ready when it's ready" kind of thing.

So what happened? Why did I miss my date? As often happens, I underestimated the work. But that wasn't the half of it. I mean, it's really a lot of work. Writing a good library API is tricky, and this library is trying to do some big things. But I can do the work. It's just a matter of time and focus.

I've spent a great deal of energy this year moving my family from Boston to Minneapolis. And I'm quite sure I underestimated the amount of work involved there too! It'll take some time to settle in, but I can truly say that the move is done, and that's a relief. I love the Twin Cities. It's beautiful out here, and people are so much more friendly and relaxed than they are in Boston.

And that's really the main reason why I missed my date. That move was a bear, and I'm still recovering.

2015-05-31

Advancing Enterprise DDD - Moving Forward

In the last essay of the Advancing Enterprise DDD series, we wrapped up our discussion on immutability, as well as the technical discussion overall. In this essay, we wrap up the series by reflecting on what we've learned, and discussing how to apply these lessons as we move forward.