К основному контенту

Сравнение WiredTiger c Postgres (домашний тест)

Когда говорят интересно и показывают фигуры о прекрасном всегда хочется почесать затылок и понять что же есть на самом деле. Не скрою, я весьма воодушевился сообщением о выходе мотора баз данных WiredTiger. Он, как говорят, настолько хорош, что его взяли на вооружение в MongoDB.

Значит надо проверить.

Учинил простой тест. Создается таблица из двух полей. Ключ - строка, значение- строка. Ключ, понятное дело, primary key. Для поля "value" строится индекс. В варианте с Pg получается два индекса. (Как рулит первичным ключем  WT еще надо разбираться. Но фактически  WT создает только 2 файла а Pg 3(один с данными и 2 с индексами. Значит Pg будет оперировать собственно таблицей и двумя индексами, что всяко сложно)
Добавляемые строки - случайные UUID

В WT создание таблицы выглядит вот так.

ret = session->create(session, "table:access", key_format=S,value_format=S,columns=(key, value)");
ret = session->open_cursor(session, "table:access", NULL, NULL, &cursor);
session->create(session, "index:access:value", "columns=(value)");
Тест для Wt
QTime tm;
    tm.start();
    for(int i=0; i<1000000 font="" i="" nbsp="">{
        QByteArray keyarray=QUuid::createUuid().toString().remove('{').remove('}').toLocal8Bit();
        QByteArray valuearray=QUuid::createUuid().toString().remove('{').remove('}').toLocal8Bit();
        cursor->set_key(cursor, keyarray.data());
        cursor->set_value(cursor, valuearray.data());
        ret = cursor->insert(cursor);
   
    }
 

  qDebug()<<"Insert million of pairs"<

Тест для Pg
 for(int i=0; i<1000000 br="" i="" nbsp="">            Command.prepare("insert into test(id, value) values(:id, :value)");
            Command.bindValue(":id",    QUuid::createUuid().toString());
            Command.bindValue(":value", QUuid::createUuid().toString());
            Command.exec();
             }
WT использует отложенную модель записи, потому в PG отключим fsync.


Запускаем тест несколько раз и замерим время работы процедуры на пространстве возрастающих данны По итогу пяти прогонов для WiredTiger получил такие результаты в секундах
  1. 97    (Круто)
  2. 316  (Прилично)
  3. 743
  4. 1188
  5. 2193
Для Postgres получил
  1. 500
  2. 690
  3. 1000
  4. 1196
  5. 955
На пятом миллионе WT скис окончательно спустившись до 2193 секунд. При этом Postgres дает стабильные и прогнозируемые результаты.
Давайте не будем забывать, что WiredTiger это ядро, менеджер записей, а Postgres - полновесная база данных со всем набором вытекающих из этого сложностей.

Для очистки совести я добавил шестой миллион записей в Pg в одной транзакции. Получил результат 611.
Честно не очень понимаю что за фигуры показывают на презентации свидетели Wt и Mongo. 

Вывод. Конечно я не великий спец в тестировании и со своими драными лаптями зря полез в эту тему, но мне все же кажется, что лучшее - враг хорошего.потому, сижу спокойно на Postgresql иногда поглядывая на новомодные штуки.

Популярные сообщения из этого блога

Надежды юношей питают.

Всем хорошо известна эта фраза. Считается, что она являет собой аналог известного афоризма Ф. Бекона: "Надежда - хороший завтрак, но плохой ужин".
История появления этой фразы в русском языке проследить не удается. Известно только, что она появилась в стихотворении Глеба Глинки.

Надежд сомнителен приют.
«Надежды юношей питают,
Отраду старцам подают»,
Но все же постепенно тают.

И, наконец, на склоне дней
Вдруг понимает человече
Тщету надежд, тщету идей...
«Иных уж нет, а те далече»,
Интересно отметить, что рассматриваемая фраза взята в кавычки. Конечно Глинка не мог не знать знаменитой оды Ломоносова "На день восшествия на престол Елисаветы".
Науки юношей питают,
Отраду старым подают,
В счастливой жизни украшают,
В несчастной случай берегут;
В домашних трудностях утеха
И в дальних странствах не помеха.
Науки пользуют везде,
Среди народов и в пустыне,
В градском шуму и наедине,
В покое сладки и в труде.
Но здесь вовсе не надежды, но науки. Искажение, результат творческой переработки, заб…

К вопросу об организации оркестратора кластера в деле бесшовного ввода новых версий Kalpa-системы.

Страшное дело - организация взаимодействия в большой системе взаимодействующих узлов.
Первое и основное дело, с каким придется столкнуться - реализация плавного, бесшовного обновления всей системы на новые версии. Причем делать это надо не дергая пользователей. Пусть они спокойно доработают свою сессию на старой версии. Для обеспечения такой плавности необходима одновременная работа как всего серверного хозяйства в старой версии, так и плавный ввод в работу версии новой.
Итак. В системе существует служба "SystemControl". Она отвечает:

За контроль топологии системы. Знает какие узлы существуют в системе и какие службы эти узлы обслуживают.Мониторит отказ отдельных узлов и перебалансировку топологии системы.Осуществляет плавное обновление системы.  Каждая служба (кроме слоя сервера приложений) имеет свой набор сетевых портов ожидания. Каждая версия использует только один из трех портов. SystemControl всегда знает расписание портов текущей и прошлой версии. Таким образом можно о…

Новости госмессенджеров.

«Развитие IT-технологий является приоритетом работы правительства Республики Крым. Наш президент в своём послании Федеральному собранию назвал развитие цифровой экономики вопросом национальной безопасности и технологической независимости России. Глава государства обратил особое внимание на риски, связанные с цифровыми технологиями, и необходимость защиты от киберугроз», — отметил Сергей Аксёнов.
Андрей Назаров уточнил, что свои разработки программисты могут представить на третьем ялтинском форуме в апреле следующего года. Отметим, что Назаров также занимает пост председателя правления Ялтинского международного экономического форума.
Госконтрактом с крымским правительством уже заинтересовались разработчики российского мессенджера Dialog, которые участвуют в конкурсе Института развития интернета на создание государственного мессенджера для федеральных чиновников.

«Мы готовы принять участие и в разработке закрытого безопасного мессенджера для крымских чиновников, в свете чего планируем про…