Cassandra 1.2 вмъкване/актуализиране на тип колона blob с помощта на Python и библиотеката cql

Въведение

Имам blob колона в семейство колони Cassandra 1.2, таблицата е дефинирана, както следва:

CREATE TABLE objects (
   id        text,
   obj       blob,
   PRIMARY KEY (id)
);

Проблемът:

Проблемът е, че когато трябва да вмъкна/актуализирам blob колоната от Python с помощта на cql библиотеката, трябва да кодирам съдържанието на колоната по база 16 по следния начин:

import cPickle
import cql
...
def save_object(connection, obj):
    object['id']  = obj['id']
    object['obj'] = cPickle.dumps(obj).encode("hex")
    cql_statement = "INSERT INTO objects (id, obj) values (:id, :obj)"
    cursor = connection.cursor()
    cursor.execute(cql_statement, object)

Въпросът:

Има ли начин за изпълнение на тази заявка, без да се използва базовото 16 кодиране (низ) на обекта? Причината за това е да се намалят режийните разходи за изпращане на низ, кодиран с база 16, по кабела вместо обикновени байтове.

Благодаря предварително!


person Sergio Ayestarán    schedule 27.05.2013    source източник


Отговори (1)


Base64 или HEX?

ако въпросът ви не е кодиране в base64, да, можете, но трябва да предоставите данните си в CQL в HEX формат.

Ако въпросът ви не се покрива в HEX, не, не е възможно.

Както е дефиниран blob в CQL документация

Константата blob е шестнадесетично число, дефинирано от 0xX+, където hex е шестнадесетичен знак, напр. [0-9a-fA-F]. Например 0xcafe.

Така че това ясно означава, че трябва да изпратите данните си в HEX формат.

person Boynux    schedule 23.06.2013