Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Persistence layer #3

Closed
Andersos opened this issue Sep 29, 2014 · 10 comments
Closed

Persistence layer #3

Andersos opened this issue Sep 29, 2014 · 10 comments
Labels
Milestone

Comments

@Andersos
Copy link
Contributor

The developers are considering using Postgresql or Cassandra for the persistence layer because those databases are in the technology stack of Finn.no.

@jarib is looking into how we can use LevelUP

@Andersos Andersos added this to the MVP 1 milestone Sep 29, 2014
@jarib
Copy link
Contributor

jarib commented Sep 29, 2014

A quick look through the list of LevelUP modules reveals only https://github.com/calvinmetcalf/SQLdown for PostgreSQL and nothing for Cassandra.

In any case, if we limit our persistence needs to what can be done through the LevelUP API, that could help us keep things simple AND open up for plugging in other storage backends down the road. Any downsides? Especially the people who has worked on the POC should weigh in on this.

@ivarconr
Copy link
Member

The database needs for Unleash are really limited. The thing to consider is the availability model we want for the persistence layer. Cassandra allow us to trade consistency for availability, where traditional DBs, like postgres, requires us to go with consistency over availability.

LevelUP + postgres:

  • A CP system. With intelligent clients and reasonable defaults this should be acceptable in MVP1.
  • Makes it super simple for us to support a wide range of databases, which definitely will make it easier for others to adopt Unleash.
  • Swappable database implementation, allows us to use an in-memory database to facilitate testing.

Cassandra on the other hand will give us:

  • An AP-system if we want
  • A bit more complicated to test as we have to manually start a cassandra-test-server which the test can run against.

I am open for both approaches, and think we should re-evaluate the choice made after MVP1 is delivered and we have to actual production experience.

@michaelsembwever
Copy link

A bit more complicated to test as we have to manually start a cassandra-test-server which the test can run against.

For reference on how to test against cassandra – https://github.com/michaelsembwever/cassandra-project/tree/meetup-2014-09-23/

@Andersos
Copy link
Contributor Author

@jarib We used Any-DB for the POC. It looks like Any-DB is like the abstraction layer LevelUP provides. Any-DB has adapters for the following (MS SQL, MySQL, Postgres, and SQLite3). LevelUP might be a better choice considering it has a bigger community.

@jarib
Copy link
Contributor

jarib commented Sep 30, 2014

@michaelsembwever That link is broken?

Anyone interested in learning more about the level-* ecosystem should watch this talk.

@Andersos
Copy link
Contributor Author

@ivarconr and I talked about the Nodeschool elective Level Me Up Scotty!. Maybe a good place to start to learn more about LevelUP.

@Andersos Andersos modified the milestones: MVP 0, MVP 1 Sep 30, 2014
@michaelsembwever
Copy link

@jarib fixed link.

@michaelsembwever
Copy link

moved from #6

Of course the persistence layer matters in the end, but we want to be less opinionated about the implementation used. … The goal is to not be constrained and force technology on to companies, but instead build a flexible system where the user can plug-in their own persistence layer.

This is something i don't understand, and i get the feeling that the definition of success in open-sourcing unleash hasn't been clearly enough defined.

For FINN open-sourcing unleash should be about commoditising a cost-center. By designing a solution that provides flexibility for any persistence layer you are doing the opposite and committing yourself to having to support all persistence layers. While one might think that providing such flexibility will help in community building, it is a short-sighted approach and the opposite might in fact be true: that people see a product that isn't properly supported against the design it proposes and this discourages community growth.

I would focus on the correct and MVP design for the cost-center at hand.

@Andersos
Copy link
Contributor Author

  1. Unleash should be an AP system (http://en.wikipedia.org/wiki/CAP_theorem)

The design should favor availability and partition tolerance over consistency.

@gardleopard
Copy link
Contributor

We are choosing postgresql for the MVP. The team has experience with postgresql and little to none with cassandra. We want to limit the amount of unknowns in the project, so we can deliver in reasonable time.

andreas-unleash added a commit that referenced this issue May 20, 2023
#3817)

…787)"

This reverts commit 896b636.

<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->

## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->

<!-- Does it close an issue? Multiple? -->
Closes #

<!-- (For internal contributors): Does it relate to an issue on public
roadmap? -->
<!--
Relates to [roadmap](https://github.com/orgs/Unleash/projects/10) item:
#
-->

### Important files
<!-- PRs can contain a lot of changes, but not all changes are equally
important. Where should a reviewer start looking to get an overview of
the changes? Are any files particularly important? -->


## Discussion points
<!-- Anything about the PR you'd like to discuss before it gets merged?
Got any questions or doubts? -->
sjaanus added a commit that referenced this issue May 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants