Как стать автором
Обновить

Комментарии 18

Одна из команд в компании использовала тарантул для обновления записей в mysql, потому что mysql не справлялся с обновлением по ключам, результат превзошел все ожидания, это реально быстро.

Обновление данных в оперативе и скидывать их снапшотами в другую бд - это генеально.

Да, к сожалению нам удаётся поддерживать в максимально активном состоянии не все коннекторы.
Видимо в случае JavaScirpt не оказалось ни одного активного пользователя, кто репортил бы проблемы.
Мы постараемся в ближайшее время обновить/актуализировать коннекторы для основных языков.

О, за актуализацию nodejs буду особенно благодарен, все проекты на этом стеке и сколько раз подступался к тарантулу, дальше прототипа дело не шло ((

Спасибо за статью! А подскажите, tarantool может хранить данные, больше чем есть оперативной памяти? Вся ли бд в единицу времени должна лежать в оперативке или данные подгружаются с диска? И есть ли сравнение по потреблению памяти для данных с конкурентами?

Если мы рассматриваем in-memory движок, то все данные должны помещаться в RAM. Иначе это уже не in-memory.
Для сценариев хранения данных больших, чем объём памяти есть несколько подходов. Можно либо воспользоваться встроенным дисковым движком на базе LSM-дерева (vinyl), либо воспользоваться подходящим внешним хранилищем, как вспомогательным, например Postgres. У Tarantool в поставке есть готовый коннектор к Postgres.

Сравнивали ли с MSSQL In-Memory OLTP?

Во первых SQL Server — это Windows. Просто было негде — вся инфраструктура на линуксе.
Во вторых, если я правильно понял, то In-Memory OLTP в SQL Server не персистентен.

Во первых SQL Server — это Windows
Linux тоже.

In-Memory OLTP в SQL Server не персистентен
Persistent (see SCHEMA_AND_DATA).
Хорошая статья, понравилось сравнение с другими BD и когда использовать/не использовать! Картиночки огонь вообще, а в чем картинки делали если не секрет?

Спасибо!
Сначала полная картинка рисовалась в draw.io, потом экспортировалась в svg.
Далее делались разные картинки для поэлементного отображения и последовательно сибирались в гифку.

Но если мы говорим про интерактивные транзакции, то есть отдельный MVCC движок. Он позволяет выполнять в режиме serializable уже интерактивные транзакции, но придётся дополнительно обрабатывать потенциальные конфликты транзакций.

Можно подробнее расписать этот тезис:
  • что подразумевается под «интерактивностью» транзакций?
  • как реализовано версионирование таплов в рамках MVCC движка?
  • как происходит обработка конфликтов — вручную, отдельной логикой после процессинга транзакции?

В обычных реляционных базах таблица в памяти — это не персистентное хранилище, используемое для каких-то быстрых операций.

Очень спорное суждение. Поясните его, пожалуйста.
Интересный продукт. Не очень понятно и хочется спросить.
Кооперативная многозадачность и экономия ресурсов системы за счёт отсутствия блокировок по причине исключительно однопользовательского доступа к структурам данных в памяти. Это именно то, что было реализовано?
В статье втречается термин «тапл», по контексту можно предположить, что это то же самое, что и тьюпл (tuple- кортеж)?

Спейс — это набор, коллекция единиц хранения — таплов. Тапл — это как строка в таблице

Про стравнение с другими in-memory решениями совсем мало. Перфоманс бы для разных задач было интересно посмотреть в сравнение с гридгейном, хазелкастом скажем ) Может как идея для отдельной статьи?

А как у вас реализуется кооперативная многозадачность? есть аналог Yeld или длинная задача в fiber заблокирует остальные запросы?

Каждая нода кластера содержит полную копию данных? есть возможно разделения данных по признаку и хранить в разных нодах кластера? Кластер Master-Slave или Master-Master?

Split brain syndrome - только ручное разрешения конфликтов?

Есть разница в производительности на каких системах работает server SMART или NUMA?

В чем преимущества в сравнению например с Oracle TimesTen? тоже продукт вырос из кеша. По описанию аналогично snapshot+redo log

Спасибо за вопросы.

А как у вас реализуется кооперативная многозадачность? есть аналог Yeld или длинная задача в fiber заблокирует остальные запросы?

Асинхронная операция делает yield. Такие операции: обращение в сеть, на диск, коммит транзакции.
Есть явная функция передачи управления fiber.yield().
Если задача длинная и не делает асинхронных операций или fiber.yield — она заблокирует остальные запросы.

Каждая нода кластера содержит...

Ноды могут объединятся в репликасет. В репликасете возможна топология master-slave или multimaster.
Репликасеты могут объединятся в кластер. Данные будут шардированы между репликасетами по признаку, который задаст пользователь.

только ручное разрешения конфликтов

Да

Oracle TimesTen

Выглядит по-другому, сравнить сложно

Зарегистрируйтесь на Хабре, чтобы оставить комментарий