Actualmente estoy tratando de conseguir mi cabeza envolver alrededor de Cassandra/de segunda mano con Erlang ...Cassandra Thrift Erlang insertar
tengo una familia columna denominada "MQ" (como en la cola de mensajes) ...
Me gustaría tener una fila por usuario (con un user_id), cada mensaje sería una nueva columna con la marca de tiempo para el nombre y el mensaje como el valor.
Aquí es en Cassandra-cli lo que estoy haciendo:
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';
Todo funciona muy bien con Cassandra-cli
Sin embargo, cuando estoy tratando de insertar de Erlang, estoy corriendo en una cierta edición:
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
]
).
Aquí está el error:
{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]}}}
Cualquier ayuda se agradece ...
EDIT 1:
he descubierto que debería ser (ya que funciona para otra persona):
thrift_client:call(C,'insert', ["00000001", #columnParent{column_family="mq"}, #column{name="123456",value="Hello World!"}, 2]).
Aquí está la mensaje de error relacionado:
** 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)
Hola, y gracias por tu respuesta. Ya conozco erlcassa, que usa CQL. Lamentablemente, CQL hoy no se ajusta a mis necesidades, es bastante limitado en el momento en que estamos hablando. Por ejemplo, no parece insertar columnas que no se hayan descrito en los metadatos de la familia de columnas. Entonces mi modelo de datos que insertará una nueva columna por fila para cada mensaje no es viable con CQL. – TheSquad