looking for a distributed key value database for persistence [closed] - database

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I'm looking for an efficient key-value distributed persistent database.
I've look into Redis, but it only support hashes with up to $2^{32}$ keys, which is not enough for my application
I've look into Memcached, but it is not designed for long-term persistence, it is designed for keys-value pairs to expire after a while
I've look into BerkeleyDB, but does not support a client-server paradigm, it is basically a in-app storage engine
I've look into HyperTable, but is not really row-oriented, you cannot edit existing rows unless you want to hack the timestamps, and after a key + timestamp is deleted, it cannot be reinserted. Also, the only supported value type are strings, if you want to store floats or complex objects you need to serialize into a string and then deserialize
I've look into MongoDB, which is very flexible, but it has suffered from very important performance and scalability issues that haven't been addressed in the last two years. They are summarized in this blog post.
I'm going to look next into Cassandra and Riak, and as you see i'm quickly running out of real options
What other databases are there that can fit the description i've outlined above?

Take a look at CouchDB. http://guide.couchdb.org/draft/why.html
It is a non-relational database, open-source, distributed (incremental, bidirectional replication), schema-free. Data is stored in documents formatted as JSON. It has robust persistence and is a distributed key value database.

Take a look at http://code.google.com/p/fastdht
It is a high performance distributed hash table based on Berkeley DB.

Related

What's the best key-value storage? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
Can you recommend a good key-value storage (e.g with great performance etc.)?
Have you looked into Redis yet? I've used it on Pantheon platform, the experience was more than satisfactory.
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. Learn more →
You may wanna check out the Why We Recommend Redis as a Drupal or WordPress Caching Backend article at Pantheon blog.

Modeling Tool for NOSQL Databases [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I know that most of the time NOSQL databses are schema-less or at least have a flexible database schema.
However, the basic schema needs to be modeled beforehand and may evolve later. So,in this case, is there a modeling tool/language for NOSQL databases?
Like UML for RDB and Visual Paradigm (UML modeling tool). I found that for "Graph Databases", we can use "Property Graph Model" but I am working on "BigColumn Databases" and "Document-base Databases".
Thank you.
NoSQL databases approach modelling from a different point of view generally. NoSQL modelling usually begins with asking questions on how the data in the database is going to be queried, so the main modelling is 'what are the list of questions that I want to ask of my database', whereas with SQL databases, modelling usually is a function of what data you have, that is, what answers I have already. This mental exercise of finding out what questions one would like to ask of the NoSQL database serve to define the entities and the relationship amongst those entities.
Once you have a list of questions, you then need to design a model that will answer those questions via the NoSQL database. To model it, I typically use Creately which is an online tool for visually representing models of various kinds.
Another method could be to represent your NoSQL model in JSON format and then use the wonderful D3.js javascript library to create a data-driven document. See this website for more details and the templates available to visually represent your model.
Hope it helps.
KDM is one solution you can think for NoSQL database Cassandra. This tool starts from conceptual modelling till physical modelling. May be you can have look at this. This is available to use free online.

General-purpose databases that never delete or update data in-place [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm very much inspired by the approach to data management advocated by Rich Hickey, and implemented in Datomic, where the data is never mutated in-place, all the versions are always preserved and query-able, and the time is a first-class concept.
Of course, there are specialized databases matching that description, like Git, or any other source control system. The question is if there are any (more or less) general-purpose DBMS-es of relational, graph, hierarchical, document or any other flavor that can be effectively used in, say, an eCommerce Web application. Or is Datomic the only choice then?
There is an approach to designing systems with an idea of never deleting or mutating data called Event Sourcing. Basically, the idea is to store events (or facts) that change the system state, instead of snapshots of the state. The history of events can be replayed later on to produce a certain purpose-specific projection of what the state at any point in time looked like. Multiple projections built for different purposes can coexist in the system. More information can found on the following web sites:
http://martinfowler.com/eaaDev/EventSourcing.html
http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/
It's in line with what you are describing, but rather than being just a database model, Event Sourcing and Command Query Responsibility Segregation (CQRS) prescribe a special way of designing the whole system including the database and business logic layers.
There are a few frameworks that follow this approach, such as:
http://www.axonframework.org/
http://qi4j.org/
http://en.jdon.com/
While this does not directly answer your question, it may provide a different perspective on the problem.
Irmin is a distributed database that follows the same design principles as Git.

Opinions on NoSQL and indexing lots of data? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I was at a .NET development group meeting a couple weeks ago and the speaker was extolling the virtues of NoSQL and how even relational data doesn't have to be stored relationally if you just index lots of data. So, my questions are: was he blowing smoke? How does one craft an index to be more efficient than the last? Does indexing just logically store the information in a table in a logical format i.e. alphabetically?
Well relational data is needed more for data integrity than indexing. Speed is not the only consideration when choosing a database. SQL Server and other enterpise databases can perform very well if they are designed by people who know what they are doing. Unforuntately most relational databases are designed by data amateurs and their performance reflects that.
NoSQL databases and relational database are used for different things. I would never consider putting a financial application in noSQL for instance because of the need for data integrity and internal controls to prevent fraud and ensure records are consistent and correct. However a website where data quality doesnt matter so much (think Google - who would notice if they failed to serve up every single website that mentions Bill Gates in a query) then yes it is a good choice.

Are there any databases that support protocol buffers? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
Are there any databases, in either the SQL or NoSQL worlds, that support protocol buffers? (Support could mean various things, but hopefully would include being able to index on fields in protocol buffers.)
ProfaneDB: http://profanedb.gitlab.io
"ProfaneDB is a gRPC interface between Protocol Buffers and RocksDB"
P.S:
Though the question was asked 10 years ago I still find it very relevant, specially with the ascension of gRPC. Hope that can be of help.
I am not aware of any (not that they don't exist, I just don't know about them), but perhaps it is worth discussing an alternate strategy and the pros and cons.
Typically you would want to store a serialized version of your protocol buffer, indexed by some particular key (a unique identifier, perhaps). You could then build secondary indexes for other interesting fields that point to that unique identifier. The idea is that you would want explicit indexes like this to scale beyond what a system that provides arbitrary indexes. This obviously opens up a world of new problems (such as stale arbitrary indexes).
Here is a project I found: https://github.com/google/mysql-protobuf
It's sql that speaks protobuf, looks promising but last commit was in mid March 2016.
ClickHouse lately added support for protobuf messages.
Cloud Spanner would provide native support for protobufs.
https://cloud.google.com/spanner/

Resources