2016-05-03 8 views
1

Ich bin auf der Suche nach der Lösung mit dem geringsten Aufwand, um Daten in einer Datenbank zu speichern. Hier sind die Anforderungen:NoSQL Write-Once, automatische Zeitmarke indiziert

  • dies der Speicher-Backend für eine Testautomatisierung wird

  • Daten werden Nachrichten aus Warteschlangen erfasst werden: kann JSON sein, XML, binäre ... aber könnte umgewandelt werden auf eine einheitliche Darstellung

  • Daten werden einmal geschrieben werden, was sich nicht ändern

    geschrieben
  • es sein sollte mehrere Indizes notwendig, aber die Basisindex der Zeitstempel sein der Nachrichten in die Datenbank eingefügt - es wäre schön, wenn die Datenbank der Wahl konfiguriert werden könnte, um dies automatisch zur Verfügung zu stellen (z. Abfrage von Nachrichten zwischen zwei Zeitstempel eingefügt - sollte der Box heraus)

  • einfache Abfrage wichtig ist (SQL wäre am besten, aber die Struktur der Nachrichten ist nicht immer im Voraus bekannt)

  • Leistung nicht wichtig

  • Fehlertoleranz, Partitionstoleranz, Zuverlässigkeit usw.

  • Leichtigkeit des Zugangs nicht wichtig ist (zB REST API, API von mehreren Plattformen -. JVM, JS, etc) ist wichtig.

Ich war auf der Suche auf MongoDB, CouchDB, vielleicht Riak ... All dies funktionieren könnte, ich weiß nur nicht, welche die geringsten Widerstandes für die oben genannten Anforderungen ist. Ich bin mit Riak vertraut, aber seine Stärken sind nicht wirklich, was ich nach ...

+0

Dies ist wirklich breit und meinungsfordernd.Es gibt einfach keine Möglichkeit, diese Frage zu beantworten, abgesehen von einem Gespräch darüber. Nicht geeignet für StackOverflow. –

Antwort

1

Es scheint, dass Couchbase die beste Alternative ist, einfach weil N1QL: http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-intro/data-access-using-n1ql.html

Es erfüllt alle Kriterien anderen Boxen (mit Ausnahme der automatischen Zeitstempelindizes, aber das Hinzufügen und Ausführen von Bereichsabfragen ist dank der Abfragesprache einfach).

+0

Sorry, aber nur CouchBase ist die beste Alternative ... macht es nicht die beste Alternative. –

+0

David, hast du etwas konstruktives hinzuzufügen? – egbokul

1

Wenn Sie Couchbase verwenden, können Sie N1QL die INSERT-Anweisung automatisch fügen Sie den Zeitstempel verwenden:

INSERT INTO my_bucket(KEY, VALUE) 
VALUES ($my_key, { 
    "insert_time": NOW_STR(), 
    __my other data fields__ 
} 
) 
2

@geraldss die INSERT Frage gerichtet hat. Lassen Sie mich das Beispiel hinzufügen.

  1. Indizierung: Sie können Indizes ein oder mehrere Felder erstellen und die Abfrage wird sie automatisch verwenden. create index idx_ins_time auf my_bucket (insert_time); Wählen Sie my_message aus my_bucket wo insert_time zwischen "2016-04-03T10: 46: 33,857-07: 00" und "2016-04-05T10: 46: 33,857-07: 00"; Verwenden Sie EXPLAIN, um den Plan genau wie SQL anzuzeigen.
  2. Sie können mehrere Indizes mit jeweils einem oder mehreren Schlüsseln erstellen.
  3. Couchbase N1QL unterstützt REST API, JDBC/ODBC und SDKs für die meisten gängigen Sprachen.