priitj / whitedb

WhiteDB memory database
http://whitedb.org/
GNU General Public License v3.0
607 stars 78 forks source link

Add a comparison to similar NoSQL databases to the docs and readme file #1

Open thedrow opened 10 years ago

thedrow commented 10 years ago

It's much easier to understand how a new tool works if you can read how it behaves differently from other tools we've already used. I'd like to see a comparison with Redis for example.

tammet commented 10 years ago

10/27/2013 3:06 AM, Omer Katz kirjutas:

It's much easier to understand how a new tool works if you can read how it behaves differently from other tools we've already used. I'd like to see a comparison with Redis for example.

A good idea. Will attempt to add some brief comparisons with, say, redis, mongodb, Tokyo cabinet and neo4j in near future. However, this might easily open a can of worms with people being unhappy about the way we present the differences, i.e. like one guy wants to stress features A and B of redis, another features C and D, etc etc.

Very briefly said, redis is an advanced distributed key-value cache server like memcached, whitedb is a graph/N-tuples database shared memory library, like sqlite without SQL but with record pointers and operating in shared memory, not files.

The main differences with Redis are imho these:

Tanel

thedrow commented 10 years ago

Can you add to each comparison what are the advantages and disadvantages of replacing X with WhiteDB for the typical use case of X? Suggesting hybrid approaches where appropriate or recommending to use X or WhiteDB entirely for that use case will certainly contribute to the adoption of WhiteDB.

Also, benchmarks for using WhiteDB over X for the typical use case of X can be useful.

It is also important to highlight what differences are by design and what might be implemented in the feature (with links to issues if applicable). For example is the lack of partitioning by design? If so, why? If we need partitioning should we prefer Redis or should that feature be emulated?

You get the idea right?

Overall you have a great product here but I can't really tell if I should be using it instead of or in addition to another tool.

thedrow commented 10 years ago

Regarding the can of worms remark, the documentation should include all differences. If a user wants to highlight another use case it should be added to the documentation/wiki. This is open source right? Pull requests are welcome :)

tammet commented 10 years ago

10/27/2013 2:19 PM, Omer Katz kirjutas:

Can you add to each comparison what are the advantages and disadvantages of replacing X with WhiteDB for the typical use case of X? Suggesting hybrid approaches where appropriate or recommending to use X or WhiteDB entirely for that use case will certainly contribute to the adoption of WhiteDB.

Also, benchmarks for using WhiteDB over X for the typical use case of X can be useful.

It is also important to highlight what differences are by design and what might be implemented in the feature (with links to issues if applicable). For example is the lack of partitioning by design? If so, why? If we need partitioning should we prefer Redis or should that feature be emulated?

You get the idea right?

Overall you have a great product here but I can't really tell if I should be using it instead of or in addition to another tool.

Sure, just that writing down all these comparisons, suggestions and benchmarks is a massive amount of work which we would love to do but most likely just cannot in such detail :). Now, it would be a great project for a student: I'll probably really propose it to my students as a possible thesis subject.

Tanel

tammet commented 10 years ago

10/27/2013 2:25 PM, Omer Katz kirjutas:

Regarding the can of worms remark, the documentation should include all differences. If a user wants to highlight another use case it should be added to the documentation/wiki. This is open source right? Pull requests are welcome :)

Exactly. You are most welcome to add to the documentation!

What I wanted to stress is that our small team cannot realistically "include all differences": there are far too many database systems, far too many differences and aspects of these differences for us to cover even a small percentage in sufficient detail :)

Tanel

thedrow commented 10 years ago

I will if I'll end up using WhiteDB. Right now I just need a basic comparison or a use case so I'll know when should I introduce WhiteDB. Instead of memcached? Redis? Neo4J? In scenario X where all of those options are not optimal?

tammet commented 10 years ago

10/27/2013 2:45 PM, Omer Katz kirjutas:

I will if I'll end up using WhiteDB. Right now I just need a basic comparison or a use case so I'll know when should I introduce WhiteDB. Instead of memcached? Redis? Neo4J? In scenario X where all of those options are not optimal?

Please be more concrete. Which of the ones above you actually use and for what. I'd say that in most cases where you already use one of these systems and are satisfied, just go on and continue using what works for you. You should probably not use whitedb if you cannot clearly see the benefits for your concrete project yourself.

Tanel

thedrow commented 10 years ago

I mean, it's unclear what kind of problem WhiteDB is trying to solve.

tammet commented 10 years ago

For an example of a class of problems WhiteDB is particularly well suited for, please have a look at Enar Reilent's Ph.D thesis "Whiteboard Architecture for the Multi-agent Sensor Systems" pointed to at the front page as http://whitedb.org/doc/Reilent_phd_thesis.pdf. It covers the issues and possible solutions in situations where a number of different software agents communicate information between each other.