5 речей які слід знати перед розгортанням MongoDB

5 речей які слід знати перед розгортанням MongoDB
6 хв. читання
12 листопада 2020

MongoDB є однією з найпопулярніших баз даних і  однією з найпростіших NoSQL баз даних для налаштування. Часто системні адміністратори реляційних баз даних успадковують бази даних MongoDB, не знаючи всього, що потрібно знати про MongoDB. Не дозволяйте простоті встановлення MongoDB вас обдурити; є речі, які потрібно врахувати перед розгортанням MongoDB. Ось п’ять речей, які слід знати адміністраторам баз даних, перш ніж розгортати MongoDB.

1) Увімкніть автентифікацію та авторизацію

Безпека є надзвичайно важливою. Пройшли ті часи, коли для MongoDB було вимкнено безпеку, за замовчуванням, але запустити MongoDB без захисту все одно легко.

Без безпеки та базою даних, прив’язаною до загальнодоступної IP-адреси, кожен може під'єднатися до вашої бази та викрасти ваші дані. Просто додавши деякі важливі параметри конфігурації безпеки MongoDB до вашого конфігураційного файлу, ви можете переконатися, що ваші дані захищені. 

Ви також можете налаштувати MongoDB на використання власного LDAP для автентифікації. Налаштування автентифікації та авторизації - один із найпростіших способів забезпечити безпеку вашої бази даних MongoDB. Найважливішим варіантом конфігурації є ввімкнення авторизації, яка вимагає аутентифікації та належних ролей для доступу до ваших даних.

 security:   
  authorization: enabled
  keyfile: /path/to/your.keyfile

2) Розгорніть набори реплік

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

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

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

Є деякі компроміси з наборами реплік, про які ви також повинні знати; під час читання з репліки, в залежності від ваших переваг читання, ви можете читати застарілі дані або дані, які не були визнані всіма членами набору реплік.

3) Резервні копії

Резервні копії настільки ж важливі для MongoDB, як і для будь-якої іншої бази даних. Існують такі інструменти, як mongodumpmongoexportPercona Backup для MongoDB та Ops Manager (лише для корпоративної версії), які підтримують Point In Time Recovery, Oplog backups, Hot Backups, а також повне та додаткове резервне копіювання. 

Як уже згадувалося, резервні копії можна запускати з будь-якого вузла у вашому наборі реплік. Найкраща практика - запустити резервну копію з вторинного вузла, щоб не чинити зайвого тиску на свій основний вузол. 

На додаток до вищезазначених методів, ви також можете робити знімки своїх даних. Це можна виконати, якщо ви тимчасово зупините запис на сервер дані якого резервною копіюються, щоб забезпечити послідовний знімок вашої бази даних MongoDB.

4) Індекси настільки ж важливі

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

Індекси також допомагають вашому робочому набору легше вписатися в пам’ять. 

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

Окрім цього, обов’язково дотримуйтесь правила ESR під час створення індексів та вивчення шаблонів запитів. Подібно до реляційних баз даних, індекси не є безкоштовними, оскільки MongoDB повинна оновлювати індекси щоразу, коли дані записуються, видаляються або оновлюються, тому переконайтеся, що ваші індекси використовуються і не надто сповільнюють ваші записи.

5) Коли це можливо, робочий набір даних < RAM

Як і в будь-якій іншій базі даних, якщо ваші дані поміщаються в оперативну пам'ять, це дозволить швидше зчитувати дані, в порівнянні з диском.

MongoDB нічим не відрізняється. Знання того, скільки даних MongoDB має прочитати для ваших запитів, може допомогти вам визначити, скільки оперативної пам’яті ви повинні виділити на свою базу даних.

Наприклад, якщо для вашого запиту потрібен робочий набір 50 ГБ, а у вас лише 32 ГБ оперативної пам’яті, виділеної для Wired Tiger Cache, MongoDB доведеться постійно читати більшу частину робочого набору з диска і записувати на диск тимчасові дані, щоб звільнити місце для наступної порції даних, і це призведе до нижчої продуктивності в порівнянні з системою, яка постійно використовує всю свою доступну пам’ять для свого кешу. І навпаки, якщо у вас є 50 ГБ робочого набору та 100 ГБ оперативної пам’яті для кешу Wired Tiger, робочий набір повністю поміститься в пам’ять, і MongoDB буде зчитувати дані на багато швидше.

Уникнути читання з диска не завжди можливо або практично. Щоб оцінити, скільки читань ви виконуєте з диска, ви можете використовувати такі команди, як db.serverStatus(), або виміряти це за допомогою таких інструментів, як Percona Monitoring and Management.

Переконайтеся, що ваша файлова система використовує рекомендовану MongoDB файлову систему XFS і, коли це можливо, використовує твердотілі накопичувачі (SSD), щоб пришвидшити роботу диска.

Через навантаження на базу даних вам також слід забезпечити достатню кількість IOPS для серверів баз даних, щоб диск, на скільки це можливо, не був вузьким місцем. Багатоядерні системи також, як правило, працюватимуть краще, оскільки це дозволяє пришвидшити розрахунок контрольної точки для механізму зберігання Wired Tiger, але ви все одно будете впевнені в тому, база працює на стільки швидко, на скільки дозволяють диски.

Висновок:

Попри те, що MongoDB  має низький бар'єр для входу, як і будь-яка інша база даних, є кілька ключових речей, які вам, як адміністратору баз даних, слід врахувати перед розгортанням MongoDB.

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

Ми сподіваємось, це допоможе вам краще зрозуміти, як розгорнути MongoDB і дасть можливість краще її підтримувати. Дякуємо за читання!

Джерело: 5 Things DBAs Should Know Before Deploying MongoDB

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація