All streams
Search
Write a publication
Pull to refresh
22
0
Роман Цисык @rtsisyk

User

Send message
Всё Mail.Ru на Tarantool. Серьезно.
Я уже подготовил статью по данной теме, как вычитаю и откорректирую — размещу на хабре.
Дак модуль и реализует практически JSON RPC.
Так то там и vimL есть с активностью больше Go и Perl, но от этого конфиги вима автоматом не стали удобным языком программирования.
Если его не разнесёт от переключения Сишных стеков в корутинах, то можно попробовать уже сейчас.
Shared libraries (.so) мы уже умеем загружать, даже по протоколу через CALL можем вызывать по имени функции.
Достаточно лишь биндинги наваять.
1. В те времена, когда начиналась разработка Tarantool (а это даже раньше 2009 года), альтернатив не было видно даже на горизонте.
2. Lua очень простой и компактный язык, не требующий изучения двадцати томов большой советской энциклопедии для начала работы. По большему секрету скажу, что ни в Mail.Ru, ни у других пользователей Tarantool нет специально обученных Lua-программистов для работы с Tarantool. С написанием хранимок на Lua одинаково легко справляются как JS, так и PHP/Perl/Ruby/Go/whatever разработчики.
3. Мы пробовали встраивать V8 где-то с годик назад. По началу в синтетических тестах все казалось очень быстрым. Когда же реализовали простейший биндинг к space:select() — v8 стал сливать Lua по производительности примерно в раза 3-4. Каждое создание объекта в v8 делалось настолько долго, что ни о какой высокопроизводительной базе данных с хранимками уже особо не могли идти и речи. Мораль сей басни такова, что если в виртуальной машине быстрая числодробилка, это никак гарантирует быстрой производительности в целом на реальных задачах.

В Tarantool 1.6.7 мы также открыли C API, дав возможность написания хранимок на C/C++ и других языках. Сейчас в качестве разминки пальцев можно взять данное API и заново попробовать уже на нём запустить какой-нибудь еще язык. Вопрос только какой?
Реплицировать вызовы Lua-функции на slave идеологически не правильно. Подобного рода кактусы уже грызли в MySQL со statement-based replication. В Тарантуле мы реплицируем binary log примитивных запросов (insert, replace, update, delete), поэтому никаких проблем с рандомом и прочим просто не существует. Репликация вообще ничего не знает про Lua, сишные хранимки и т.п., т.к. работает на уровне запросов базы данных.
Тарантул вырос как база данных (с транзакциями, репликацией и т.п.), это потом оказалось, что пользователям в Lua-хранимках нужны сокеты, http клиенты и прочее :)
Алексей, советую Вам обратить внимание на Tarantool по следующим причинам:

1. В Tarantool Lua — first class citizen. Есть интерактивная консоль, можно запускать скрипты с #!/usr/bin/tarantool, из Lua кода есть доступ абсолютно ко всем функциям Tarantool. Вкупе это дает более прозрачный и удобный цикл отладки и разработки.

2. Нет проблем с типизацией, т.к. хранилище внутри и так уже использует MsgPack

Кроме того, уже есть множество удобных библиотек, начиная от сокетов, заканчивая http сервером.

// Disclaimer: разработчик Tarantool
Работаем над этим. Только-только выложили, сейчас будем доводить до ума README, документацию, пакеты, тесты.
Также имеется возможность написания модулей на C/C++ [1]. При помощи данного API можно подключить любой другой язык программирования или библиотеку, было бы желание. В частности, наш memcached[2] написан на сишном API.

[1]: tarantool.org/doc/reference/capi.html
[2]: github.com/tarantool/memcached

// Disclaimer: tarantool.org contributor

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity