Mysql Mysql 5.6 memcached plugin

Lifeline

Новичок
Вышла 5.6.9 RC с очень приятным бонусом - memcached plugin
Кратко смысл: можно обращаться к данным таблицы по примари ключу по протоколу мемкеша минуя парсер sql

Поставил - работает с одним ключем.

Делаю с 2мя - не получается.

По дефолту идет таблица demo_test
сделал ее копию - demo_test2


mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| demo_test |
| demo_test2 |
+----------------+
2 rows in set (0.00 sec)


добавил в контейнеры

ysql> use innodb_memcache
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from containers;
+----------+-----------+------------+-------------+---------------+-------+------------+--------------------+----------------------+
| name | db_schema | db_table | key_columns | value_columns | flags | cas_column | expire_time_column | unique_idx_name_on_ke|
+----------+-----------+------------+-------------+---------------+-------+------------+--------------------+----------------------+
| aaa | test | demo_test | c1 | c2 | c3 | c4 | c5 | PRIMARY |
| somesome | test | demo_test2 | c1 | c2 | c3 | c4 | c5 | PRIMARY |
+----------+-----------+------------+-------------+---------------+-------+------------+--------------------+----------------------+
2 rows in set (0.00 sec)


пробую получить значения


$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
get @@aaa.AA
VALUE @@aaa.AA 768 2
10
END
get @@somesome.BB
Connection closed by foreign host.

и в обратном порядке - тоже самое

$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
get @@somesome.BB
VALUE @@somesome.BB 768 2
10
END
get @@aaa.AA
Connection closed by foreign host.


Те при смене таблицы из которой идет выборка - соединение закрывается.
В доке написано что должно работать... уже и перегружал и переставлял - эффект тот же.

Может быть кто-то разбирался плотнее ?

Заранее спасибо.
 

fixxxer

К.О.
Партнер клуба
в перконе и mariadb давно handlersocket из коробки.

oracle mysql не нужен уже никому =)
 

Lifeline

Новичок
fixxxer HS имеет довольно корявый АПИ и массу подводных камней типа перед выбором этого надо озязательно это и тп - довольно неудобно с ним работать.
В варианте мемкеша - все интерфейсы остаются одни и те же, работает так же, практически ничего менять не надо, в плюсы есть
заставить бы его еще работать нормально )
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
fixxxer
HS это для упоротых, упертых любителей этого дела. Как заметил Lifeline, вариант с Memcached смотрится куда как прямее. Но грабли пока что есть везде =(
 

fixxxer

К.О.
Партнер клуба
А что не так с HS? Протокол туп как пробка - tab separated парсится достаточно просто, проще только бинарный протокол будет. Клиент пишется на любом языке программирования буквально за 5 минут. А вот в memcached, как говорят его нынешние разработчики (facebook), в настоящий момент все упирается в парсинг (оттуда и появление бинарного протокола).
 

Lifeline

Новичок
fixxxer "Протокол туп как пробка - tab separated"
у мемкеша - по пробелу
соответственно никакой разницы нет
переходить на бинарный - для нас не окупяться затраты

для HS нет стабильных публичных либ, писать свое - опять же не окупяться затраты потому что просто так одно однозначно не взлетит. Я его тестировал руками и то проблемы были. Мемкеш в свое время взлетел в течение 3х минут.

Одним словом хотелось бы все же остаться с мемкешем как оттестированным годами решением, только что б оно заработало )
 

fixxxer

К.О.
Партнер клуба
либа?
для того чтобы прочитать из сокета tab separated строку нужна какая-то либа?
 

Lifeline

Новичок
fixxxer да
работать с мемкешем так же можно через сокет, однако большинство предпочитает работать юзая встроенные экстеншены
если вы работаете с мемкешем через сокет самостоятельно - боюсь что конструктивного разговора с вами не получится.
 

fixxxer

К.О.
Партнер клуба
с memcached нет, с hs - да. потому что протокол намного проще!
 

Lifeline

Новичок
fixxxer да ладно ?
чем глобально сложен

get AAA
и
set AA 1 2

отностельно HS ?
 

fixxxer

К.О.
Партнер клуба
memcached это не только get и set, если тебе этого хватает я за тебя рад

ну напиши полные реализации протоколов и сравни объем кода чо. class HandlerSocket, если оставить только значимые строки, у меня умещается на полтора экрана, и половина - это обработка ошибок. написать то же самое pecl extension-ом мне не сложно, но не вижу никакого смысла =)
 

Lifeline

Новичок
fixxxer вопрос был не в функционале, а сложности протокола
ok, поделитесь пожалуйста вашим варинатом класса под HS
 
Сверху