1

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?

4
  • 4
    So you've ruled out RDBMSes for no apparent reason, then?
    – Philᵀᴹ
    Mar 20, 2015 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. Mar 20, 2015 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.
    – Hannah Vernon
    Mar 20, 2015 at 16:31
  • for instruments and other info we will use a relational database Mar 24, 2015 at 13:41

2 Answers 2

4

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.

0

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.