Tarantool хранит данные в оперативной памяти — in-memory. Решения этого класса быстрые, но им часто не хватает гарантий целостности данных. Tarantool преодолевает эти проблемы. Скачайте и убедитесь в его скорости, гибкости и надежности.
СкачатьРешения in-memory работают в оперативной памяти, поэтому они такие быстрые. Вы избегаете накладных расходов на кэширование и чтение с диска. Плюс резидентный подход снижает TCO, так как процессор используется эффективнее, и вам нужно меньше серверов. Есть четыре основных случая, когда при разработке приложения хорошо подходит in-memory.
OLTP, нужна максимальная пропускная способность для множества несложных запросов
Нужно ускорить медленное приложение или базу при помощи кэширующего прокси
Существующие дисковые брокеры очередей не справляются
Нужно предсказуемое время отклика от системы
Задавайте логику обработки данных с помощью языка программирования Lua внутри Tarantool. Поскольку код и база данных находятся в одном адресном пространстве, то приложениям не нужно ходить по сети, а значит, вы избегаете latency — задержки в исполнении операций. Tarantool использует не просто интерпретатор, а JIT-компилятор — LuaJIT. Последний преобразует программу в машинный код при исполнении.
По умолчанию Tarantool использует in-memory движок — memtx. Когда данных становится больше доступного объема RAM, мы рекомендуем перенести исторические данные, к которым нет активных обращений, на дисковый движок — vinyl. Такой подход оптимизирует ресурсы: вместо in-memory + классическая база достаточно Tarantool.
Ко всем данным в Tarantool можно построить индексы. Они позволяют делать поиск по индексированным полям быстрым и предсказуемым. Когда нужно выбирать одни и те же данные по нескольким критериям, то вы можете построить несколько индексов в одной таблице. Tarantool поддерживает обычные индексы и индексы по содержанию объектов JSON-полей.
В Tarantool вы можете выбрать модель хранения данных. Используйте табличный формат, а когда количество и имена полей заранее неизвестны — JSON или кортежи. Для таблицы можно задать формат, который фиксирует типы данных в колонках: для всей таблицы или только для ее части. Если вы задали формат данных, то к таблице можно обращаться при помощи SQL-запросов.
Работа в оперативной памяти не означает, что вы рискуете потерять все данные. Мы предусмотрели механизмы, которые гарантируют сохранность данных в Tarantool.
Оба движка — in-memory и дисковый — используют упреждающую запись на диск. Результат транзакции возвращается только после того, как он будет сохранен на диск. Это значит, что даже внезапная перезагрузка сервера не приводит к потере данных.
При выходе из строя диска или сервера избежать потери данных помогает репликация. Типовой лаг асинхронной репликации в Tarantool 100-200мкс, что снижает вероятность потерь фактически до нуля. Когда нужны полные гарантии сохранности, в Tarantool можно использовать синхронную репликацию и настраивать ее только для критически важных данных в отдельных таблицах.
В составляющих стандарта надежности и предсказуемости ACID — атомарности, согласованности, изолированности и надежности — in-memory решения часто жертвуют последней. Это связано с самим принципом хранения в оперативной памяти, который несет риск потерять часть информации при сбоях и рестарте. Чтобы преодолеть этот риск, Tarantool использует ряд методов:
Записывает логи транзакций —
Делает снэпшоты — снимки состояния данных
Записывает данные на несколько реплик синхронно
Сделать несколько копий на разных серверах или разделить данные по нескольким узлам Тarantool поможет Cartridge — фреймворк для масштабирования. Он позволяет создавать и настраивать кластеры из нескольких экземпляров Tarantool.
За три клика в web-интерфейсе вы можете сделать новую реплику или подключить дополнительный сервер, при условии, что этот сервер уже собран и запущен. Cartridge равномерно распределит данные и сбалансирует нагрузку. Он также обеспечивает автоматическую обработку отказов. Если один из узлов упадет, Cartridge сам переключит нагрузку на реплику.
Расширить функциональность вашего приложения поможет система ролей. Под каждую задачу мы рекомендуем делать отдельную роль, которая должна отвечать за часть бизнес-логики. Вы можете эффективней управлять масштабированием, если для каждой роли назначать отдельный узел.
Специалисты Tarantool свяжутся с вами по оставленным контактам