2017-07-19 3 views
0

Ich versuche eine Nachrichtenarchivierung in Riak zu implementieren. Das Schema sieht ungefähr so ​​aus:Riak Yokozuna Solr, wie gespeicherte, aber nicht Indexfeld abrufen?

{ 
    id = <<>>       :: binary() | '_', 
    username_s = <<"">>     :: binary() | '_', 
    timestamp_i = 0      :: integer(), 
    peer_s = <<"">>      :: binary(), 
    bare_peer_s = <<"">>     :: binary(), 
    packet = #xmlel{}     :: xmlel() | '_', 
    nick_s = <<"">>      :: binary(), 
    type_s = chat      :: chat | groupchat 
} 

ID und Paket müssen nicht indiziert werden, sondern müssen bei jeder Abfrage abgefragt werden.

Sollte ich ein benutzerdefiniertes Schema erstellen und sie in Solr als nicht indizierte Feld speichern?

Sollte ich Application Level Join des Suchergebnisses tun, während jeder Schlüssel einzeln abfragen?

Oder ist MapReduce irgendwie eine Option?

Oder etwas ganz anderes?

Vielen Dank.

Antwort

0

Ich werde dies beantworten, falls jemand eine Antwort auf diese Frage benötigt. Ich bin zu einem anderen Projekt übergegangen, und zu dem Zeitpunkt, an dem ich das Projekt verlasse, wird keine Lösung ausgewählt.

Yokozuna, Riak Integration Plugin mit Solr, ist schrecklich in meiner Bewertung. Ich wähle "Erstellen Sie ein benutzerdefiniertes Schema und speichern Sie sie in Solr als nicht indizierte Feld" für meine Bewertung. Das Indizieren von etwas wie einem Textabschnitt erfordert eine Menge CPU und Zeit in Yokozuna. Versuchen Sie also nicht, das für etwas zu tun, das so schnell aktualisiert wird, wie es Textnachrichten vielleicht für etwas wie Produkte tun. Auch ohne Indexierung des Absatzes Yokozuna im Vergleich zu etwas wie MySQL oder Cassandra schrecklich durchzuführen. Es gibt auch keine Unterstützung von Riak, weil Basho vielleicht seit Januar 2017 geschlossen hat. Daher komme ich zu dem Schluss, dass MySQL sehr viel für die aktuelle Last und Cassandra die wahrscheinlich beste Option ist, wenn MySQL nicht genug ist.