diff --git a/content/other/cyberpunk.md b/content/other/cyberpunk.md index 38d99d4..6461867 100644 --- a/content/other/cyberpunk.md +++ b/content/other/cyberpunk.md @@ -3,7 +3,7 @@ title: "Манифест киберпанка" comments: false ShowReadingTime: true tags: ["it"] -draft: true +draft: false --- Кристиан Кирчев diff --git a/content/other/tarantool.md b/content/other/tarantool.md deleted file mode 100644 index 1ea04fd..0000000 --- a/content/other/tarantool.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Tarantool — кратко -comments: false -ShowReadingTime: true -date: 2023-05-01T00:42:42+03:00 -tags: ["IT"] ---- - -Tarantool - это высокопроизводительная база данных и сервер приложений, написанный на языке программирования Си с использованием языка Lua для создания хранимых процедур. Tarantool был разработан для обработки транзакционных нагрузок в реальном времени, поэтому он может быть использован в широком спектре приложений, от мобильных приложений до микросервисов и систем электронной коммерции. - -Установка и настройка -Tarantool можно легко установить на большинстве операционных систем. Например, на Ubuntu можно использовать следующие команды: - -``` -$ sudo apt-get update -$ sudo apt-get install tarantool -``` - -После установки необходимо настроить Tarantool. Настройки хранятся в файле конфигурации tarantool.cfg. В этом файле можно задать параметры порта, через который Tarantool будет принимать запросы, а также размеры буферов и другие параметры. - -# Работа с Tarantool -Чтобы начать работать с Tarantool, необходимо запустить сервер командой: - -``` -$ tarantool -``` - -Затем можно подключиться к серверу с помощью клиента console.lua: - -``` -$ tarantoolctl connect 127.0.0.1:3301 -``` - -После подключения можно начать работать с базой данных. Tarantool поддерживает Lua API для работы с данными. Например, для создания пространства и индекса можно использовать следующий код: - - -```lua -box.schema.space.create('my_space') -box.space.my_space:create_index('primary', {type = 'hash', parts = {1, 'NUM'}}) -``` - -Для добавления данных в базу данных можно использовать следующий код: - -```lua -box.space.my_space:insert{1, 'Hello'} -box.space.my_space:insert{2, 'World'} -``` - -Чтение данных из базы данных осуществляется следующим образом: - - -```lua -box.space.my_space:get(1) -``` - -# Репликация и кластеризация - -Tarantool поддерживает репликацию данных для обеспечения отказоустойчивости и масштабируемости. Для настройки репликации необходимо указать список серверов-реплик в файле конфигурации. - -Кроме того, Tarantool поддерживает кластеризацию для более эффективного использования ресурсов. Для настройки кластера необходимо задать список серверов в файле конфигурации и запустить Tarantool на каждом сервере. - -# Хранимые процедуры - -Одной из ключевых особенностей Tarantool является поддержка хранимых процедур, написанных на языке Lua. Хранимые процедуры позволяют выполнять операции с данными непосредственно на сервере базы данных, что уменьшает задержки и улучшает производительность. - -Например, для создания простой хранимой процедуры, которая возвращает строку, можно использовать следующий код: - - -```lua -function hello() - return "Hello, world!" -end -``` - -После создания хранимой процедуры ее можно вызвать через клиентское приложение следующим образом: - - -```lua -box.execute('return hello()') -``` - -# Интеграция с другими языками - -Tarantool также поддерживает интеграцию с другими языками программирования, такими как Python, Ruby, Java и C++. Это позволяет разработчикам использовать Tarantool в своих проектах, не ограничиваясь только языком Lua. - -Например, для работы с Tarantool из Python можно использовать библиотеку tarantool-python. Пример использования: - - -```python -import tarantool - -# Подключение к Tarantool - -client = tarantool.connect("localhost", 3301) - -# Выполнение запроса - -result = client.call('my_proc', [1, 2]) -``` - -# Пример использования - -Ниже приведен пример использования Tarantool для создания простого кэша. Кэш хранит значения ключ-значение и поддерживает автоматическое удаление старых записей. - -```lua --- Создание пространства для кэша -box.schema.space.create('my_cache') - --- Создание индекса по ключам -box.space.my_cache:create_index('primary', {type = 'hash', parts = {1, 'STR'}}) - --- Функция добавления данных в кэш -function add_to_cache(key, value) - -- Добавление данных в кэш - box.space.my_cache:replace{key, value, os.time()} - - -- Удаление старых записей - local expire_time = os.time() - 60 -- Удаляем записи старше минуты - box.space.my_cache.index.primary:pairs({{0}}, { iterator = 'GT' }):delete() -end - --- Функция чтения данных из кэша -function get_from_cache(key) - -- Чтение данных из кэша - local tuple = box.space.my_cache:get{key} - - -- Проверка наличия данных в кэше - if tuple == nil then - return nil - end - - -- Проверка времени жизни данных - local expire_time = os.time() - 60 -- Данные считаем устаревшими, если они были добавлены больше минуты назад - if tuple[3] < expire_time then - box.space.my_cache:delete{key} - return nil - end - - -- Возвращение данных из кэша - return tuple[2] -end -``` - -# Мониторинг и управление - -Tarantool также предоставляет мощные инструменты для мониторинга и управления базой данных. Например, с помощью консольного интерфейса tarantoolctl можно выполнить следующие задачи: - -Просмотр статистики работы сервера -Управление репликацией и кластеризацией -Настройка параметров сервера -Выполнение Lua-скриптов на сервере -Например, для просмотра статистики работы сервера можно выполнить следующую команду: - -``` -$ tarantoolctl show stat -``` - -# Безопасность - -Tarantool обеспечивает высокий уровень безопасности благодаря поддержке авторизации и шифрования трафика. Для настройки авторизации можно использовать файл users.lua, в котором задаются пользователи и их пароли. - -Кроме того, Tarantool поддерживает шифрование трафика с помощью протокола TLS. Для этого необходимо настроить сертификаты и ключи в файле конфигурации tarantool.cfg. - -# Список основных функций - -Ниже приведен список некоторых основных функций API Tarantool: - -- `box.execute()` - выполнение Lua-кода на сервере -- `box.space.create()` - создание пространства -- `box.space..create_index()` - создание индекса в пространстве -- `box.space.:insert()` - добавление данных в пространство -- `box.space.:get()` - чтение данных из пространства -- `box.space.:delete()` - удаление данных из пространства -- `box.cfg()` - настройка параметров сервера -- `box.once()` - выполнение кода только один раз при запуске сервера - - - -# Недостатки Tarantool - -Несмотря на множество преимуществ, у Tarantool есть и некоторые недостатки: - -- Нет поддержки SQL -- Ограниченные возможности индексирования -- Сложность настройки репликации и кластеризации - -Однако, несмотря на эти недостатки, Tarantool остается мощным инструментом для разработки высокопроизводительных приложений. - -# Выводы - -Tarantool предоставляет мощный инструмент для обработки данных в режиме реального времени, позволяющий быстро и эффективно обрабатывать большие объемы данных. Он поддерживает Lua API для работы с данными и хранимыми процедурами, а также интеграцию с другими языками программирования. Он также предоставляет мощные возможности репликации и кластеризации для обеспечения отказоустойчивости и масштабируемости приложений. - -Tarantool может быть использован в широком спектре приложений, от мобильных приложений до систем электронной коммерции и Интернета вещей. Он также может быть использован для обработки транзакционных запросов в микросервисной архитектуре. - -Несмотря на некоторые ограничения, например, отсутствие полной поддержки SQL, Tarantool остается мощным инструментом для разработки высокопроизводительных приложений. - -_p.s. Весь материал написан ChatGPT, лол_ \ No newline at end of file