Obecnie próbuję uzyskać moja głowa owinąć wokół Cassandry/oszczędności z Erlang ...Cassandra oszczędność Erlang wstawić
mam rodzinę kolumnę o nazwie „MQ” (jak w kolejce komunikatów) ...
Chciałbym mieć wiersz na użytkownika (z identyfikatorem użytkownika), każda wiadomość byłaby nową kolumną z datą dla nazwy i wiadomości jako wartością.
Oto w Cassandra-cli co robię:
create keyspace my_keyspace;
use my_keyspace;
create column family mq with comparator=UTF8Type and key_validation_class=UTF8Type;
%% Adding to user_id (00000001) the message "Hello World!"
set mq['00000001']['1336499385041308'] = 'Hello Wold';
Wszystko działa świetnie z Cassandrą-cli
Jednak, gdy próbuję wstawić z Erlang, biegnę do jakiś problem:
1>rr(cassandra_types).
2>{ok, C}=thrift_client_util:new("localhost", 9160, cassandra_thrift,[{framed, true}]).
3>thrift_client:call(C, 'set_keyspace', ["peeem"]).
4>thrift_client:call(C,'insert',["00000001",
#columnPath{column_family="mq"},
#column{name="1336499385041308", value="Hello World!"},
1
]
).
Oto błąd:
{error,{bad_args,insert,
["00000001",
#columnPath{column_family = "mq",super_column = undefined,
column = undefined},
#column{name = "1336499385041308",value = "Hello World!",
timestamp = undefined,ttl = undefined},1]}}}
Każda pomoc będzie mile widziane ...
EDIT 1:
I odkryli, że powinno być (jak to działa dla kogoś innego):
thrift_client:call(C,'insert', ["00000001", #columnParent{column_family="mq"}, #column{name="123456",value="Hello World!"}, 2]).
Oto powiązany komunikat o błędzie:
** exception error: no match of right hand side value {{protocol,thrift_binary_protocol,
{binary_protocol,{transport,thrift_framed_transport,
{framed_transport,{transport,thrift_socket_transport,
{data,#Port<0.730>,infinity}},
[],[]}},
true,true}},
{error,closed}}
in function thrift_client:send_function_call/3 (src/thrift_client.erl, line 83)
in call from thrift_client:call/3 (src/thrift_client.erl, line 40)
Cześć, i dziękuję za odpowiedź. Jestem już świadomy erlcassa, który używa CQL. Niestety, dzisiaj CQL nie pasuje do moich potrzeb, jest dość ograniczone w czasie, gdy rozmawiamy. Na przykład nie wydaje się wstawiać kolumn, które nie zostały opisane w metadanych rodziny kolumn. Tak więc mój model danych, który wstawi nową kolumnę w wierszu dla każdej wiadomości, nie jest opłacalny z CQL. – TheSquad