I have some hardware instruments each one recording a signal and generating sequences of timestamp/value pairs. Timestamp is a basic UTC posix time and value is a double.

I'd like to record such pairs in a database for later retrieval. Because we want to scale up across multiple servers we ruled out relational databases and opted out for a NoSQL solution.

The core usecase will be to retrieve a set of values from a given time period (starttime, endtime).

Is ElasticSearch a good solution? What about MongoDB?

closed as primarily opinion-based by Philᵀᴹ, Colin 't Hart, Paul White, RolandoMySQLDBA, Max Vernon Mar 20 '15 at 16:31

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 4
    So you've ruled out RDBMSes for no apparent reason, then? – Philᵀᴹ Mar 20 '15 at 10:21
  • 1
    For two reasons: 1 - We don't have structured data (just array of timestamps and values). 2- We need to scale up easily. – Gianluca Ghettini Mar 20 '15 at 10:58
  • 1
    So, you have multiple instruments, and aren't identifying the instrument to which the reading belongs? I tend to agree with @Phil - this sounds like you're using NoSQL for the sake of "Big Data". Which is just a marketing term. – Max Vernon Mar 20 '15 at 16:31
  • for instruments and other info we will use a relational database – Gianluca Ghettini Mar 24 '15 at 13:41

For your use case of key-value data, where the value is simple, MongoDB is more than you need. It is a document-oriented data store for complex value types. A specific key-value store would suit your needs. RIAK is the one I've looked at though several others exist.

Since your retrieval will be by time range i.e. key range, Elastic's full-text capabilities will, again, be overhead for which you have no payback.

You don't say what your scale out requirement is, whether local write and global read or full replication of the whole data set etc. Several relational engines offer distributed features. MariaDB has Galera, for example. SQL Server has distributed, partitioned views. Other popular systems can afford similar capabilities. NeoDB is relational and multi-host by design. The relational model is based on theoretically sound principles and has decades of industry development. You would be doing yourself a disservice by discounting it out of hand.

And your data does have structure, even if it is a simple structure. You have a primary key (device & time) and a functionally dependent attribte. Whether you define this declaratively in a schema or implicitly in your program's data structures, it still exists.


Elasticsearch is nice to use, any solution will have unneeded features.

But why not this for a persistent key value storage solution http://rocksdb.org/

Not the answer you're looking for? Browse other questions tagged or ask your own question.