|
Следующая версия
|
Предыдущая версия
|
bazi_danix [2024/05/18 12:33] tro создано |
bazi_danix [2024/06/22 09:24] (текущий) tro |
| ====== Бази даних ====== | ====== Перації з базою даних в Node.js====== |
| ===== MongoDB ===== | ===== MongoDB ===== |
| Одна з найпопулярніших нереляційних баз даних, яка зберігає дані у форматі документів, використовуючи JSON-подібні об'єкти. Це спростить наше знайомство із цією БД, оскільки вона працює із даними дуже подібно до того, як ви вже робили це в рамках курсу по фронтенду. | [[https://www.mongodb.com/|MongoDB]] - одна з найпопулярніших нереляційних баз даних, яка зберігає дані у форматі документів, використовуючи JSON-подібні об'єкти. Це спростить наше знайомство із цією БД, оскільки вона працює із даними дуже подібно до того, як ви вже робили це в рамках курсу по фронтенду. |
| | |
| | Ось кілька переваг MongoDB: |
| | |
| | * Гнучкість схеми:MongoDB дозволяє легко зберігати дані без потреби строго визначеної схеми. Кожен документ може мати власну унікальну структуру, що робить базу даних більш гнучкою та адаптивною до змін в структурі даних. |
| | * При роботі із MongoDB є можливість визначати схему, яка буде допомагати нам записувати дані в базу, а також формувати із них певну структуру при їх зчитуванні, але вона не гарантує, що в базі даних кожен запис буде відповідати цій схемі. Цим ця база відрізняється від реляційних СУБД. |
| | * Швидкодія:Завдяки своїй архітектурі та індексам MongoDB може швидко виконувати операції читання та запису великих обсягів даних. |
| | * Масштабованість:MongoDB легко масштабується, дозволяючи горизонтально розширювати систему внаслідок додавання нових серверів (шардингу). |
| | * Реплікація(створення копії) та висока доступність:MongoDB підтримує автоматичну реплікацію даних на кількох серверах, що забезпечує високу доступність та стійкість до відмов. Цей пункт характеризує можливість її використання у високонавантажених системах. |
| | * Спрощене програмування:Завдяки використанню BSON (Binary JSON), взаємодія з базою даних стає природньою для розробників, які працюють з мовами програмування, такими як JavaScript, Python, або Node.js. |
| | |
| | ==== Підключення node.js ==== |
| | === модуль === |
| | <code> |
| | mpn instal mongoose |
| | </code> |
| | === підключення === |
| | <code> |
| | // src/db/initMongoDB.js |
| | |
| | import mongoose from 'mongoose'; |
| | |
| | import { env } from '../utils/env.js'; |
| | |
| | export const initMongoDB = async () => { |
| | try { |
| | const user = env('MONGODB_USER'); |
| | const pwd = env('MONGODB_PASSWORD'); |
| | const url = env('MONGODB_URL'); |
| | const db = env('MONGODB_DB'); |
| | |
| | await mongoose.connect( |
| | `mongodb+srv://${user}:${pwd}@${url}/${db}?retryWrites=true&w=majority`, |
| | ); |
| | console.log('Mongo connection successfully established!'); |
| | } catch (e) { |
| | console.log('Error while setting up mongo connection', e); |
| | throw e; |
| | } |
| | }; |
| | |
| | </code> |
| | ==== Додаткові утіліти ==== |
| | [[https://www.mongodb.com/try/download/compass|MongoDB Compass(GUI)]] - графічний інтерфейс для роботи з MongoDB, який дозволяє розробникам взаємодіяти з базою даних. Інтерфейс надає зручність у виконанні операцій з даними, включаючи перегляд, редагування та інше. Mongo Compass також дозволяє створювати складні запити, візуалізувати результати та безпечно керувати доступом до бази даних. |
| | ==== Рекомендації ==== |
| | === Доступ до БД з певних IP === |
| | |
| | Якщо до бази повинні мати доступ не тільки з того ж ip звідки її і створили, то необхідно окремо дозволити доступ до БД з усіх ip |
| | Виберіть свій кластер: |
| | |
| | У головній панелі керування виберіть проект, у якому знаходиться ваш кластер. |
| | Натисніть на кластер, до якого ви хочете надати доступ. |
| | Налаштування мережевого доступу: |
| | |
| | У меню зліва виберіть Network Access (Доступ до мережі). |
| | Натисніть на кнопку Add IP Address (Додати IP-адресу). |
| | Додати IP-адресу: |
| | |
| | У вікні, що з'явиться, введіть 0.0.0.0/0 у поле IP-адреси, щоб дозволити доступ з будь-якого IP-адреси. |
| | За потреби можете додати опис для цього правила в полі Comment (Коментар). |
| |