MongoDB MMAPv1 проти двигунів WiredTiger


25

У mongoDB3 з'явився новий двигун зберігання даних: WiredTiger . Однак MMAPv1 все ще є вибором за замовчуванням у Монго .

Одне може бути не кращим, ніж інше, часто це справа справи та вибору правильного інструменту для роботи. Але який двигун підходить для якої роботи?

Насправді, хоча MMAPv1 є двигуном за замовчуванням, WiredTiger здається кращим майже в усіх галузях. Він має ті ж функції, що і MMAPv1 plus:

  • краще виконувати записи,
  • одночасність рівня документа,
  • стиснення,
  • система знімків та контрольно-пропускних пунктів.

Я знайшов порівняльну таблицю в блозі MongoDB :

Порівняння WiredTiger та MMAPv1

Тож хіба якщо ви перебуваєте на Solaris, чи є причина не вибирати WiredTiger?


EDIT

Ось два відео, які детально пояснюють внутрішні відомості WiredTiger та MMAPv1 .


Всі люди тут ... ви можете відвідати blog.clevertap.com/… для дуже хорошого пояснення з цього приводу
therealprashant

Відповіді:


26

Особисто я віддаю перевагу двигуну зберігання даних mmapv1 з трьох причин.

Причина 1: Зрілість

Справа не в тому, що WiredTiger незрілий. Але mmapv1 добре розуміється, і бій випробовується на всіх напрямках вгору і вниз, назад і вперед, і вище, і за його межами. У WiredTiger виникли серйозні проблеми (детальніше див. Http://jira.mongodb.com ) порівняно недавно, і я не бажаю, щоб мої клієнти знаходили наступний важкий шлях.

Причина 2: Особливості

З огляду на те, що WT має деякі найважливіші особливості. Річ у тім: я не бачив, щоб хтось з них виграв. Стиснення? Так чи інакше, ви жертвуєте досить важко для досягнення продуктивності за досить дешевий простір на диску. Відсутність проблеми міграції документів для розширення документів? Що ж, у нас все ще є обмеження розміру 16 Мб та додаткова складність для вбудованих документів, особливо коли вбудовування перестарається.

Є й інші особливості, але в цілому: я не бачу, що їм зараз користі .

Причина 3: Загальна вартість власності

Щодо нових проектів, то WT може бути добре, особливо з 3.2, оскільки наступне не застосовується.

Робити міграцію даних досить дорого. Це потрібно спланувати, план повинен бути узгоджений усіма зацікавленими сторонами, створювати та узгоджувати плани надзвичайних ситуацій, міграцію потрібно підготувати, виконати та переглянути. Тепер помножте час, необхідний для зацікавлених сторін, які є частиною цього процесу, та витрати на скорочення міграції даних. З іншого боку, рентабельність інвестицій здається невеликою. Ви можете досить масштабувати замість того, щоб робити міграцію, якщо врахувати ці фактори. Щоб скласти враження: я б оцінив приблизно один "людина-тиждень" на кожного зацікавленого учасника, якщо міграція запланована, виконана та переглянута належним чином. З витратами в 100 доларів на годину на людину та залученими лише троє людей (менеджер, DBA та розробник), це становить 12 000 доларів. Зауважте, що це консервативна оцінка.

Висновок

Усі ці фактори, що були зазначені вище, привели мене до висновку, що не використовувати WT взагалі. На даний момент.


Оновлення

Цій публікації вже кілька місяців, тому вона заслуговує на оновлення

На зрілість

Мої оригінальні коментарі щодо зрілості - це щось застаріле. У WiredTiger деякий час не виникало серйозних проблем, і він став двигуном зберігання за замовчуванням, починаючи з MongoDB 3.2

Про функції

Мої оригінальні коментарі все ще мають деяку обґрунтованість, імхо.

Стиснення

Однак, якщо обмеження в бюджеті або, взагалі кажучи, продуктивність не є першочерговою проблемою, компроміс продуктивності досить малий, і ви в основному торгуєте невеликими впливами на продуктивність (у порівнянні з нестисненими WT) для дискового простору, використовуючи те, що в іншому випадку буде простоювати навколо: ЦП.

Шифрування

MongoDB 3.2 Enterprise представила можливість шифрувати сховища WiredTiger. Для даних з підвищеними потребами в безпеці це є вбивчою функцією і робить WT єдиним механізмом зберігання даних, як технічно (MMAPv1 не підтримує шифрування), так і концептуально. Звичайно, відзначаючи можливість зашифрованих розділів дисків, звичайно, хоча у деяких середовищах ця опція може не бути.

Блокування рівня документа

Я маю визнати, що я в основному опустив цю особливість WT у своєму вище аналізі, головним чином тому, що він не застосовувався ні до мене, ні до моїх клієнтів, коли я писав оригінальну відповідь.

Залежно від налаштувань, в основному, коли у вас багато клієнтів, які одночасно пишуть, ця функція може забезпечити значне підвищення продуктивності.

Про загальну вартість власності

Робити міграцію все ще дорого. Однак, беручи до уваги зміни зрілості та змінене уявлення про особливості, міграція може коштувати інвестицій, якщо:

  • Вам потрібно шифрування (лише для Enterprise Edition!)
  • Продуктивність не є вашою першочерговою проблемою, і ви можете заощадити гроші в довгостроковій перспективі (розрахувати консервативно) за допомогою стиснення
  • У вас багато процесів написання одночасно, оскільки збільшення продуктивності може заощадити вертикальне або горизонтальне масштабування.

Оновлений Висновок

Для нових проектів я зараз використовую WiredTiger. Оскільки міграція зі стисненого на нестиснене сховище WiredTiger досить проста, я, як правило, починаю зі стиснення, щоб підвищити використання процесора ("отримати більше грошей на долар"). Якщо стиснення помітно вплине на продуктивність або UX, я переходжу на нестиснений WiredTiger.

Для проектів з великою кількістю одночасних авторів відповідь на те, щоб перейти чи ні, майже завжди також є "Так" - якщо тільки бюджет проекту не забороняє інвестувати. Зрештою, підвищення продуктивності повинно окупитися, якщо розгортання було інакше розумно заплановано. Однак вам потрібно додати деякий час розробки до розрахунку, оскільки в деяких випадках драйвер потребує оновлення, і можуть виникнути проблеми, з якими потрібно вирішити.

Для проектів, які обмежують бюджет і не можуть дозволити собі більше дискового простору на даний момент, перехід на стислий WiredTiger може бути варіантом, але стиснення придає трохи навантаження на процесор, що є нечуваним для MMAPv1. Крім того, міграційні витрати можуть бути надзвичайно дорогими для такого проекту.


Дякую Маркусу за твого вража. Я розумію ваші аргументи. Ви б навіть порадили дефолти повернутися до MMAPv1 для нових проектів? Я маю на увазі, якщо продуктивність викликає занепокоєння, стиснення також може бути повністю відключено. Місце на диску є дешевим, але стиснення може допомогти робочому набору поміститися в оперативній пам’яті… і, таким чином, отримати перф. Або я помиляюся?
Бузут

1
Наскільки мені відомо, стиснення застосовується лише до файлів даних. Щодо нових проектів, дозвольте сказати так: я б закликав прийняти управлінське рішення, де відображаються плюси і мінуси. Я особисто використовую WT в одному з моїх проектів і ще не стикався з проблемами, але можуть бути й інші фактори, наприклад, угоди про рівень обслуговування (які я можу обчислити досить непогано на основі досвіду роботи з mmapv1), жорсткі бюджети (які зажадали б стислий WT для заощадити місце на диску) та безліч інших факторів. Зваження ризиків та можливостей не є рішенням DBA. Банк даних повинен надати інформацію, необхідну для здійснення дзвінка.
Markus W Mahlberg

1
Ця стаття, схоже, вказує на те, що спосіб зберігання індексів є досить величезною перевагою, оскільки це може зменшити простір, який займають ваші індекси в 10 разів: ilearnasigoalong.blogspot.com/2015/03/… . Місце на диску є дешевим, але оперативної пам'яті немає.
BT

Я трохи заплутався у вашій точці щодо функцій, ви хочете сказати, що є функції MMAPv1, які WiredTiger не має? Було б добре, якби цей розділ був трохи зрозумілішим.
BT

@BT Зовсім не. Що я намагався сказати, це те, що WT має досить цікаві функції, які в деяких випадках використання можуть бути корисними, але взагалі не є. Я віддаю перевагу випробуваному на бою двигунові накопичувача над передовим краєм, коли мова йде про зберігання даних. Відповідно до статті: Так, можливо, за допомогою стиснення префікса зберегти оперативну пам’ять, і це цілком може бути хорошою ідеєю, якщо б не було інших проблем. Уявіть, що ви могли б бути надійними щодо втрати даних або проблем з продуктивністю.
Markus W Mahlberg

5

Мої два центи:

Журнал у WiredTiger може втратити оновлення при жорстких відключеннях, оскільки він використовує буферизацію пам'яті для зберігання журнальних записів.

Між операціями запису, поки записи журналів залишаються в буферах WiredTiger, оновлення можуть бути втрачені після жорсткого відключення mongod.

Журнал у MMAPv1 записує зміни у файли журналу на диску.

Якщо екземпляр mongod повинен вийти з ладу, не застосувавши запис до файлів даних, журнал міг би відтворити записи в загальний вигляд для можливого запису у файли даних.


4

Ми перейшли на WiredTiger з MMAPv1 за приманкою 7-кратного до 10-кратного підвищення продуктивності. Нам довелося повернутися до MMAPv1, оскільки MongoDB закриється, коли кеш WiredTiger потрапить на 100%. Ми задокументували наш досвід тут - https://blog.clevertap.com/sleepless-nights-with-mongodb-wiredtiger-and-our-return-to-mmapv1/


2
Приємний запис. Ніби нагадує мені про перехід Uber з MySQL до PostgreSQL в 2013 році, а потім повернення до MySQL у червні 2016 року.
RolandoMySQLDBA

добре пояснено, що ми також маємо такий самий досвід роботи з дротяним тиграми, тому оновили його в MMAPV1
viren
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.