Tarantool 1.7
Release: v. 1.7.0
Версия 1.7.6
Release type: stable. Release date: 2017-11-07. Tag: 1.7.6-0-g7b2945d6c. Release: https://groups.google.com/forum/#!topic/tarantool/hzc7O2YDZUc or v. 1.7.6.
Данная сборка представляет собой очередную стабильную версию в серии 1.7. Это обновление содержит более 75 исправлений по сравнению с версией 1.7.5.
Что нового в Tarantool 1.7.6?
- В дополнение к откату транзакции, появился откат на определенную точку в пределах транзакции – поддержка точки сохранения.
- Появился новый объектный тип: последовательности. Устаревший вариант, автоматическое увеличение, объявлен устаревшим.
- В строковых индексах появилась сортировка.
Добавлены новые опции:
Несовместимые изменения:
- Layout of
box.space._index
has been extended to support is_nullable and collation features. All new indexes created on columns withis_nullable
orcollation
properties will have the new definition format. Please update your client libraries if you plan to use these new features (gh-2802).- fiber_name() now raises an exception instead of truncating long fiber names. We found that some Lua modules such as expirationd use
fiber.name()
as a key to identify background tasks. If a name is truncated, this fact was silently missed. The new behavior allows to detect bugs caused byfiber.name()
truncation. Please usefiber.name(name, { truncate = true })
to emulate the old behavior (gh-2622).- space:format() is now validated on DML operations. Previously
space:format()
was only used by client libraries, but starting from Tarantool 1.7.6, field types inspace:format()
are validated on the server side on every DML operation, and field names can be used in indexes and Lua code. If you usedspace:format()
in a non-standard way, please update layout and type names according to the official documentation for space formats.
Изменения или добавления функциональности:
- Гибридная модель данных без схемы + со схемой. Раньше версии Tarantool позволяли хранить произвольный набор документов в формате MessagePack в спейсах. Начиная с версии Tarantool 1.7.6, можно использовать space:format() для определения условий и ограничений схемы для кортежей в спейсах. Определенные типы полей автоматически проверяются при каждой DML-операции, а определенные имена полей могут использоваться вместо номеров полей в Lua-коде. Добавлена новая функция tuple:tomap() для конвертации кортежа в Lua-словарь пар ключ-значение.
- Поддержка сортировки и Юникода. По умолчанию, когда Tarantool сопоставляет строки, он берет во внимание только числовое значение каждого байта в строке. Чтобы задействовать такое распределение, как в телефонных справочниках и словарях, в Tarantool версии 1.7.6 впервые поддерживается сортировка по Таблице сортировки символов Юникода по умолчанию (Default Unicode Collation Element Table (DUCET)) и в соответствии с правилами, описанными в Техническом стандарте Юникода №10 – Алгоритм сортировки по Юникоду (Unicode® Technical Standard #10 Unicode Collation Algorithm (UTS #10 UCA)). См. сортировку.
- NULL values in unique and non-unique indexes. By default, all fields in Tarantool are «NOT NULL». Starting from Tarantool 1.7.6, you can use
is_nullable
option in space:format() or inside an index part definition to allow storing NULL in indexes. Tarantool partially implements three-valued logic from the SQL standard and allows storing multiple NULL values in unique indexes (gh-1557).- Sequences and a new implementation of auto_increment(). Tarantool 1.7.6 introduces new sequence number generators (like CREATE SEQUENCE in SQL). This feature is used to implement new persistent auto increment in spaces (gh-389).
- Vinyl: introduced gap locks in Vinyl transaction manager. The new locking mechanism in Vinyl TX manager reduces the number of conflicts in transactions (gh-2671).
- net.box: on_connect and on_disconnect triggers (gh-2858).
- Structured logging in JSON format (gh-2795).
- (Lua) Lua: string.strip() (gh-2785).
- (Lua) added base64_urlsafe_encode() to
digest
module (gh-2777).- Log conflicted keys in master-master replication (gh-2779).
- Allow to disable backtrace in fiber.info() (gh-2878).
- Implemented
tarantoolctl rocks make *.spec
(gh-2846).- Extended the default loader to look for
.rocks
in the parent dir hierarchy (gh-2676).SOL_TCP
options support in socket:setsockopt() (gh-598).- Partial emulation of LuaSocket on top of Tarantool Socket (gh-2727).
Инструменты разработчика:
- Интеграция с IntelliJ IDEA с поддержкой отладки. Появилась возможность использовать IntelliJ IDEA в качестве IDE для разработки и отладки Lua-приложений для Tarantool. См. Использование IDE.
- Integration with MobDebug remote Lua debugger (gh-2728).
- Configured
/usr/bin/tarantool
as an alternative Lua interpreter on Debian/Ubuntu (gh-2730).
Новые сторонние библиотеки:
- smtp.client – поддержка SMTP по
libcurl
.
Версия 1.7.5
Release type: stable. Release date: 2017-08-22. Tag: 1.7.5. Release: doc-289 or v. 1.7.5.
Данная сборка представляет собой стабильную версию в серии 1.7. Это обновление содержит более 160 исправлений по сравнению с версией 1.7.4.
Изменения или добавления функциональности:
- (Vinyl) a new force_recovery mode to recover broken disk files. Use
box.cfg{force_recovery=true}
to recover corrupted data files after hardware issues or power outages (gh-2253).- (Vinyl) index options can be changed on the fly without rebuild. Now page_size, run_size_ratio, run_count_per_level and bloom_fpr index options can be dynamically changed via index:alter(). The changes take effect in newly created data files only (gh-2109).
- (Vinyl) improve box.info.vinyl() and
index:info()
output (gh-1662).- (Vinyl) introduce box.cfg.vinyl_timeout option to control quota throttling (gh-2014).
- Memtx: stable index:pairs() iterators for the TREE index. TREE iterators are automatically restored to a proper position after index’s modifications (gh-1796).
- (Memtx) predictable order for non-unique TREE indexes. Non-unique TREE indexes preserve the sort order for duplicate entries (gh-2476).
- (Memtx+Vinyl) dynamic configuration of max tuple size. Now
box.cfg.memtx_max_tuple_size
andbox.cfg.vinyl_max_tuple_size
configuration options can be changed on the fly without need to restart the server (gh-2667).- (Memtx+Vinyl) new implementation. Space truncation doesn’t cause re-creation of all indexes any more (gh-618).
- Extended the maximal length of all identifiers from 32 to 65k characters. Space, user and function names are not limited by 32 characters anymore (gh-944).
- Heartbeat messages for replication. Replication client now sends the selective acknowledgments for processed records and automatically re-establish stalled connections. This feature also changes box.info.replication[replica_id].vclock. to display committed vclock of remote replica (gh-2484).
- Keep track of remote replicas during WAL maintenance. Replication master now automatically preserves xlogs needed for remote replicas (gh-748).
- Enabled box.tuple.new() to work without
box.cfg()
(gh-2047).- box.atomic(fun, …) wrapper to execute function in a transaction (gh-818).
- box.session.type() helper to determine session type (gh-2642).
- Hot code reload for stored C stored procedures. Use
box.schema.func.reload('modulename.function')
to reload dynamic shared libraries on the fly (gh-910).- string.hex() and
str:hex()
Lua API (gh-2522).- Package manager based on LuaRocks. Use
tarantoolctl rocks install MODULENAME
to install MODULENAME Lua module from https://rocks.tarantool.org/. (gh-2067).- Lua 5.1 command line options. Tarantool binary now supports „-i“, „-e“, „-m“ and „-l“ command line options (gh-1265).
- Experimental GC64 mode for LuaJIT. GC64 mode allow to operate the full address space on 64-bit hosts. Enable via
-DLUAJIT_ENABLE_GC64=ON compile-time
configuration option (gh-2643).- Syslog logger now support non-blocking mode. box.cfg{log_nonblock=true} now also works for syslog logger (gh-2466).
- Added a VERBOSE log level beyond INFO (gh-2467).
- Tarantool now automatically makes snapshots every hour. Please set box.cfg{checkpoint_interval=0 to restore pre-1.7.5 behavior (gh-2496).
- Increase precision for percentage ratios provided by box.slab.info() (gh-2082).
- Stack traces now contain symbols names on all supported platforms. Previous versions of Tarantool didn’t display meaningful function names in fiber.info() on non-x86 platforms (gh-2103).
- Allowed to create fiber with custom stack size from C API (gh-2438).
- Added
ipc_cond
to public C API (gh-1451).
Новые сторонние библиотеки:
- http.client (built-in) - libcurl-based HTTP client with SSL/TLS support (gh-2083).
- iconv (built-in) - bindings for iconv (gh-2587).
- authman - API для регистрации пользователя и входа в систему с использованием email и социальных сетей.
- document - хранит вложенные документы в Tarantool.
- synchronized - критические секции для Lua.
Версия 1.7.4
Тип версии: предварительная версия. Дата выхода: 2017-05-12. Тег версии: 1.7.4.
Release: v. 1.7.4 or https://groups.google.com/forum/#!topic/tarantool/3x88ATX9YbY
Данная сборка представляет собой предварительную версию перед выпуском нового релиза в серии 1.7. Движок vinyl, ключевой компонент 1.7.x, обладает полностью реализованной заявленной функциональностью.
Несовместимые изменения
Для поддержки vinyl были внесены следующие изменения в параметры
box.cfg()
:
- переименование
snap_dir
вmemtx_dir
- переименование
slab_alloc_arena
(гигабайты) вmemtx_memory
(байты), значение, используемое по умолчанию, изменилось с 1 Гб на 256 МБ- переименование
slab_alloc_minimal
вmemtx_min_tuple_size
- переименование
slab_alloc_maximal
вmemtx_max_tuple_size
slab_alloc_factor
больше не используется, не применимо в 1.7.x- переименование
snapshot_count
вcheckpoint_count
- переименование
snapshot_period
вcheckpoint_interval
- переименование
logger
вlog
- переименование
logger_nonblock
вlog_nonblock
- переименование
logger_level
вlog_level
- переименование
replication_source
вreplication
panic_on_snap_error = true
иpanic_on_wal_error = true
замененыforce_recovery = false
Until Tarantool 1.8, you can use deprecated parameters for both initial and runtime configuration, but such usage will print a warning in the server log (gh-1927 and gh-2042).
Hot standy mode is now off by default. Tarantool automatically detects another running instance in the same
wal_dir
and refuses to start. Usebox.cfg {hot_standby = true}
to enable the hot standby mode (gh-775).UPSERT via a secondary key was banned to avoid unclear semantics (gh-2226).
box.info
andbox.info.replication
format was changed to display information about upstream and downstream connections ((gh-723):
- Добавление
box.info.replication[instance_id].downstream.vclock
для отображения последней строки, отправленной на удаленную реплику.- Добавление
box.info.replication[instance_id].id
.- Добавление
box.info.replication[instance_id].lsn
.- Перемещение
box.info.replication[instance_id].{vclock,status,error}
вbox.info.replication[instance_id].upstream.{vclock,status,error}
.- Включение всех зарегистрированных реплик из
box.space._cluster
в выводbox.info.replication
.- Переименование
box.info.server.id
вbox.info.id
- Переименование
box.info.server.lsn
вbox.info.lsn
- Переименование
box.info.server.uuid
вbox.info.uuid
- Переименование
box.info.cluster.signature
вbox.info.signature
- Возврат значения
nil
вместо-1
функциямиbox.info.id
иbox.info.lsn
во время начальной настройки кластера.
net.box
: добавление запрошенные параметров во все запросы:
- изменение
conn.call(func_name, arg1, arg2,...)
наconn.call(func_name, {arg1, arg2, ...}, opts)
- изменение
conn.eval(func_name, arg1, arg2,...)
наconn.eval(func_name, {arg1, arg2, ...}, opts)
Все запросы поддерживают параметры
timeout = <seconds>``(время задержки в секундах), ``buffer = <ibuf>
(буфер).Добавление опции
connect_timeout
вnetbox.connect()
.
netbox:timeout()
andconn:timeout()
are now deprecated. Usenetbox.connect(host, port, { call_16 = true })
for 1.6.x-compatible behavior (gh-2195).systemd configuration changed to support
Type=Notify
/sd_notify()
. Nowsystemctl start tarantool@INSTANCE
will wait until Tarantool has started and recovered from xlogs. The recovery status is reported tosystemctl status tarantool@INSTANCE
(gh-1923).
log
module now doesn’t prefix all messages with the full path to tarantool binary when used withoutbox.cfg()
(gh-1876).
require('log').logger_pid()
was renamed torequire('log').pid()
(gh-2917).Removed Lua 5.0 compatible defines and functions (gh-2396):
luaL_Reg
заменяет удаленныйluaL_reg
lua_objlen(L, i)
заменяет удаленныйluaL_getn(L, i)
- Удаление
luaL_setn(L, i, j)
(пустая операция)luaL_ref(L, lock)
заменяет удаленныйlua_ref(L, lock)
lua_rawgeti(L, LUA_REGISTRYINDEX, (ref))
заменяет удаленныйlua_getref(L,ref)
luaL_unref(L, ref)
заменяет удаленныйlua_unref(L, ref)
.math.fmod()
заменяет удаленныйmath.mod()
string.gmatch()
заменяет удаленныйstring.gfind()
Изменения или добавления функциональности:
(Vinyl) multi-level compaction. The compaction scheduler now groups runs of the same range into levels to reduce the write amplification during compaction. This design allows Vinyl to support 1:100+ ram:disk use-cases (gh-1821).
(Vinyl) bloom filters for sorted runs. Bloom filter is a probabilistic data structure which can be used to test whether a requested key is present in a run file without reading the actual file from the disk. Bloom filter may have false-positive matches but false-negative matches are impossible. This feature reduces the number of seeks needed for random lookups and speeds up REPLACE/DELETE with enabled secondary keys (gh-1919).
(Vinyl) key-level cache for point lookups and range queries. Vinyl storage engine caches selected keys and key ranges instead of entire disk pages like in traditional databases. This approach is more efficient because the cache is not polluted with raw disk data (gh-1692).
(Vinyl) implemented`). Now all in-memory indexes of a space store pointers to the same tuples instead of cached secondary key index data. This feature significantly reduces the memory footprint in case of secondary keys (gh-1908).
(Vinyl) new implementation of initial state transfer of JOIN command in replication protocol. New replication protocol fixes problems with consistency and secondary keys. We implemented a special kind of low-cost database-wide read-view to avoid dirty reads in JOIN procedure. This trick wasn’t not possible in traditional B-Tree based databases (gh-2001).
(Vinyl) index-wide mems/runs. Removed ranges from in-memory and and the stop layer of LSM tree on disk (gh-2209).
(Vinyl) coalesce small ranges. Before dumping or compacting a range, consider coalescing it with its neighbors (gh-1735).
(Vinyl) implemented transnational journal for metadata. Now information about all Vinyl files is logged in a special
.vylog
file (gh-1967).(Vinyl) implemented consistent secondary keys (gh-2410).
(Memtx+Vinyl) implemented low-level Lua API to create consistent backups. of Memtx + Vinyl data. The new feature provides
box.backup.start()/stop()
functions to create backups of all spaces. box.backup.start() pauses the Tarantool garbage collector and returns the list of files to copy. These files then can be copied be any third-party tool, like cp, ln, tar, rsync, etc.box.backup.stop()
lets the garbage collector continue. Created backups can be restored instantly by copying into a new directory and starting a new Tarantool instance. No special preparation, conversion or unpacking is needed (gh-1916).(Vinyl) added statistics for background workers to
box.info.vinyl()
(gh-2005).(Memtx+Vinyl) reduced the memory footprint for indexes which keys are sequential and start from the first field. This optimization was necessary for secondary keys in Vinyl, but we optimized Memtx as well (gh-2046).
LuaJIT was rebased on the latest 2.1.0b3 with out patches (gh-2396):
- Добавлен бэкенд для JIT-компилятора для архитектуры ARM64
- Добавлен бэкенд и интерпретатор для JIT-компилятора для архитектуры MIPS64
- Добавлены некоторые расширения для Lua 5.2 и Lua 5.3
- Исправление нескольких ошибок
- Удалены устаревшие функции Lua 5.0 (см. несовместимые изменения выше).
Запущен новый умный алгоритм хеширования строк в LuaJIT, чтобы избежать замедления работы в случае множества коллизий. Разработали Юрий Соколов (@funny-falcon) и Ник Заварицкий (@mejedi). См. https://github.com/tarantool/luajit/pull/2.
box.snapshot()
now updates mtime of a snapshot file if there were no changes to the database since the last snapshot. (gh-2045).Implemented
space:bsize()
to return the memory size utilized by all tuples of the space. Contributed by Roman Tokarev (@rtokarev). (gh-2043).Новые функции Lua/C вынесены в общедоступный API:
Exported new Box/C functions to public API:
box_key_def
,box_tuple_format
,tuple_compare()
,tuple_compare_with_key()
. (gh-2225).xlogs now can be rotated based on size (
wal_max_size
) as well as the number of written rows (rows_per_wal
). (gh-173).Added
string.split()
,string.startswith()
,string.endswith()
,string.ljust()
,string.rjust()
,string.center()
API (gh-2211, gh-2214, gh-2415).Added
table.copy()
andtable.deepcopy()
functions. (gh-2212).Added
pwd
module to work with UNIX users and groups. (gh-2213).Removed noisy «client unix/: connected» messages from logs. Use
box.session.on_connect()
/on_disconnect()
triggers instead. (gh-1938).Триггеры
box.session.on_connect()
/on_disconnect()
/on_auth()
также срабатывают для подключений административной консоли.tarantoolctl:
eval
,enter
,connect
commands now support UNIX pipes (gh-672).tarantoolctl: improved error messages and added a new man page (gh-1488).
tarantoolctl: added filter by
replica_id
tocat
andplay
commands (gh-2301).tarantoolctl:
start
,stop
andrestart
commands now redirect tosystemctl start/stop/restart
when systemd is enabled (gh-2254).net.box: added
buffer = <buffer>
per-request option to store raw MessagePack responses into a C buffer (gh-2195).net.box: added
connect_timeout
option (gh-2054).net.box: added
on_schema_reload()
hook (gh-2021).net.box: exposed
conn.schema_version
andspace.connection
to API (gh-2412).log:
debug()
/info()
/warn()
/error()
now doesn’t fail on formatting errors (gh-889).crypto: added HMAC support. Contributed by Andrey Kulikov (@amdei) (gh-725).
Версия 1.7.3
Тип версии: бета. Дата выхода: 2016-12-24. Тег версии: 1.7.3-0-gf0c92aa.
Release: v. 1.7.3
Данная сборка представляет собой вторую бета-версию в серии 1.7.
Несовместимые изменения:
Изменения или добавления функциональности:
- Значительный прогресс в стабилизации движка базы данных Vinyl:
- Исправлены большинство известных отказов системы и ошибок, выдающих плохие результаты.
- Замена формата всех файлов с данными на XLOG/SNAP.
- Использование механизма компрессии ZStandard для всех файлов с данными.
- Сжатие операций UPSERT на лету и объединение горячих клавиш с помощью фонового файбера.
- Значительное улучшение производительности index:pairs() и index:count().
- Удаление ненужных конфликтов из транзакций.
- Уровень In-memory по большей части заменен структурами данных memtx.
- В большинстве случаев используются специализированные распределители ресурсов.
- Мы все еще активно работаем над Vinyl’ом и планируем добавить многоуровневое слияние и улучшить производительность в работе со вторичными ключами в версии 1.7.4. Это подразумевает изменение формата данных.
- Support for DML requests for space:on_replace() triggers (gh-587).
- UPSERT can be used with the empty list of operations (gh-1854).
- Lua functions to manipulate environment variables (gh-1718).
- Lua library to read Tarantool snapshots and xlogs (gh-1782).
- New
play
andcat
commands intarantoolctl
(gh-1861).- Улучшена поддержка большого количества активных сетевых клиентов. Проблема #5#1892.
- Support for
space:pairs(key, iterator-type)
syntax (gh-1875).- Automatic cluster bootstrap now also works without authorization (gh-1589).
- Replication retries to connect to master indefinitely (gh-1511).
- Temporary spaces now work with
box.cfg { read_only = true }
(gh-1378).- The maximum length of space names increased to 64 bytes (was 32) (gh-2008).
Версия 1.7.2
Тип версии: бета. Дата выхода: 2016-09-29. Тег версии: 1.7.2-1-g92ed6c4
.
Release: https://groups.google.com/forum/#!topic/tarantool-ru/qUYUesEhRQg or v. 1.7.2
Данная сборка представляет собой версию в серии 1.7.
Несовместимые изменения:
- A new binary protocol command for CALL, which no more restricts a function to returning an array of tuples and allows returning an arbitrary MsgPack/JSON result, including scalars, nil and void (nothing). The old CALL is left intact for backward compatibility. It will be removed in the next major release. All programming language drivers will be gradually changed to use the new CALL (gh-1296).
Изменения или добавления функциональности:
- Разработка движка базы данных Vinyl, наконец, перешла в бета-стадию. В данной версии исправлены более 90 ошибок в Vinyl’е, в частности, удаление непредсказуемых скачков задержки отклика, все известные отказы системы и ошибки, выдающие плохие результаты или их отсутствие.
- новая архитектура на основе кооперативной многозадачности для устранения скачков задержки отклика,
- поддержка непоследовательных составных ключей,
- поддержка вторичных ключей,
- поддержка
auto_increment()
,- типы полей в индексах: number (число), integer (целое число), scalar (скаляр),
- операции INSERT, REPLACE и UPDATE возвращают новый кортеж, как в memtx’е.
- Мы все еще активно работаем над Vinyl’ом и планируем добавить механизм компрессии
zstd
и новый распределитель ресурсов для Vinyl’а в версии 1.7.3. Это подразумевает изменение формата данных, который планируется внедрить до того, как версия 1.7 станет общедоступной.- Tab-based autocompletion in the interactive console,
require('console').connect()
,tarantoolctl enter
andtarantoolctl connect
commands (gh-86 and gh-1790). Use the TAB key to auto complete the names of Lua variables, functions and meta-methods.- A new implementation of
net.box
improving performance and solving problems when the Lua garbage collector handles dead connections (gh-799, gh-800, gh-1138 and gh-1750).- Появилась компрессия снимков memtx и xlog-файлов на лету с использованием быстрого алгоритма компрессии ZStandard. Компрессия настраивается автоматически для получения оптимального соотношения между использованием ЦП и пропускной способностью диска.
fiber.cond()
- a new synchronization mechanism for cooperative multitasking (gh-1731).- Tarantool теперь можно устанавливать из универсальных Snappy-пакетов (http://snapcraft.io/) с помощью команды
snap install tarantool --channel=beta
.
Новые модули и пакеты:
- curl - неблокирующие привязки для libcurl
- prometheus - сборщик метрик Prometheus для Tarantool
- gis - полнофункциональное геопространственное расширение для Tarantool
- mqtt - клиент MQTT-протокола для Tarantool
- luaossl - самый полноценный OpenSSL-модуль во вселенной Lua
Устаревшие, удаленные и несовместимые функции:
num
andstr
fields type names are deprecated, useunsigned
andstring
instead (gh-1534).
space:inc()
andspace:dec()
were removed (deprecated in 1.6.x) (gh-1289).
fiber:cancel()
is now asynchronous and doesn’t wait for the fiber to end (gh-1732).Implicit error-prone
tostring()
was removed fromdigest
API (gh-1591).Поддержка SHA-0 (
digest.sha()
) прекращается по причине обновления OpenSSL.
net.box
now uses one-based indexes forspace.name.index[x].parts
(gh-1729).Бинарный файл Tarantool будет динамически связываться с
libssl.so
во время компиляции вместо загрузки во время выполнения.Пакеты Debian и Ubuntu будут использовать встроенную конфигурацию
systemd
вместе с вышедшими из употребления скриптамиsysvinit
.В
systemd
появляется возможность управления несколькими экземплярами. Чтобы обновить, выполните следующие действия:
- Установите новые пакеты версии 1.7.2.
- Убедитесь в наличии файла
ИМЯ_ЭКЗЕМПЛЯРА.lua
в директории/etc/tarantool/instances.enabled
.- Остановите ЭКЗЕМПЛЯР с помощью
tarantoolctl stop ИМЯ_ЭКЗЕМПЛЯРА
.- Запустите ЭКЗЕМПЛЯР с помощью
systemctl start tarantool@ИМЯ_ЭКЗЕМПЛЯРА
.- Включите ЭКЗЕМПЛЯР во время загрузки системы с помощью
systemctl enable tarantool@ИМЯ_ЭКЗЕМПЛЯРА
.- Введите команду
systemctl disable tarantool; update-rc.d tarantool remove
, чтобы отключить надстройки, совместимые с sysvinit.Refer to (gh-1291), comment and the administration chapter for additional information.
Debian and Ubuntu packages start a ready-to-use
example.lua
instance on a clean installation of the package. The default instance grants universe permissions forguest
user and listens on «localhost:3313».Пакеты для Fedora 22 объявлены устаревшими (прекращение поддержки).
Версия 1.7.1
Тип версии: альфа. Дата выхода: 2016-07-11.
Release: https://groups.google.com/forum/#!topic/tarantool/KGYj3VKJKb8 or v. 1.7.1
Данная сборка представляет собой первую альфа-версию в серии 1.7. Основной функцией данной версии является новый движок базы данных под названием «vinyl». Vinyl представляет собой оптимизированный для записи движок базы данных, который позволяет сохранять объем сохраняемых данных, превышающий объем доступной памяти в 10-100 раз. Vinyl является продолжением движка Sophia из версии 1.6, а именно ответвлением и дальним родственником Sophia Дмитрия Симоненко. Новый Vinyl заменяет Sophia. Он реализован в виде журнально-структурированного дерева со слиянием (log-structured merge tree – LSM-tree). Однако усовершенствование таких традиционных недостатков журнально-структурированных хранилищ, как низкая производительность при чтении и непредсказуемая задержка во времени при записи, стоит больших усилий. Отдельный индекс секционирован по диапазонам между многими структурами данных LSM, в каждой из который находятся собственные буферы оперативной памяти регулируемого размера. Секционирование по диапазонам позволяет осуществить слияние LSM-уровней, чтобы добиться большей детализации, а также отдать приоритет горячим диапазонам по отношению к холодным в том, что касается доступа к ресурсам, таким как оперативная память и ввод-вывод. Планировщик слияний предназначен для сведения времени задержки записи к минимуму, а также для поддержания производительности при чтении в приемлемых пределах. На сегодняшний день Vinyl поддерживает только первичные индексы. Индекс может состоять из 256 частей, как в MemTX’е, по сравнению с 8 в Sophia. Поддерживает чтение по компонентам ключа. Вскоре ожидается поддержка непоследовательных составных ключей, а также вторичных ключей. Наше намерение заключается в том, чтобы убрать любые ограничения, которые есть сейчас в Vinyl’е, чтобы сделать его полноценным компонентом Tarantool.
Изменения или добавления функциональности:
- Дисковый движок, который в более ранних версиях Tarantool назывался
sophia
илиphia
, заменен новым движком под названиемvinyl
.- Добавлены новые типы индексируемых полей.
- Обновлена версия LuaJIT.
- Поддерживается автоматическая настройка набора реплик, что существенно упрощает настройку нового набора реплик.
- Функция
space_object:inc()
объявлена устаревшей.- Функция
space_object:dec()
объявлена устаревшей.- Добавлена функция
space_object:bsize()
.- Удалена функция
box.coredump()
, аналог см. в главе Создание дампов памяти.- Добавлена опция настройки
hot_standby
(горячий резерв).- Исправленные или переименованные конфигурационные параметры:
slab_alloc_arena
(в гигабайтах) вmemtx_memory
(в байтах),slab_alloc_minimal
вmemtx_min_tuple_size
,slab_alloc_maximal
вmemtx_max_tuple_size
,replication_source
вreplication
,snap_dir
вmemtx_dir
,logger
вlog
,logger_nonblock
вlog_nonblock
,snapshot_count
вcheckpoint_count
,snapshot_period
вcheckpoint_interval
,panic_on_wal_error
иpanic_on_snap_error
объединены вforce_recovery
.- В версиях Tarantool до 1.8 можно использовать устаревшие параметры как для начальной, так и для рабочей конфигурации, но в таком случае Tarantool выдаст предупреждение. Также можно указывать как устаревшие, так и новые параметры при условии, что их значения согласованы. В противном случае, Tarantool выдаст ошибку.
- У кластера репликации появилась возможность автоматической настройки, что существенно упрощает настройку нового кластера.
- Новые индексируемые типы данных: INTEGER (целое число) и SCALAR (скаляр).
- Рефакторинг кода и улучшение производительности.
- LuaJIT обновлен до версии 2.1-beta116.