Які переваги роботи NoSQL (колишній MongoDB) над MySQL, PostGRE SQL або MSSQL в Drupal? Чи є переваги, отримані від простого використання пам’яті чи потрібно змінити конфігурацію Drupal?
Які переваги роботи NoSQL (колишній MongoDB) над MySQL, PostGRE SQL або MSSQL в Drupal? Чи є переваги, отримані від простого використання пам’яті чи потрібно змінити конфігурацію Drupal?
Відповіді:
MongoDB можна використовувати для зберігання більшості або всіх ваших організацій у швидкому, орієнтованому на документ сховищі. Цей тип шкал зберігання набагато кращий, ніж стандартне сховище на основі SQL, яке ми маємо в ядрі Drupal (яке базується на схемі "одна таблиця на поле").
У поточному стані Drupal 7 у вас буде:
Це дозволяє швидко запитувати сутностей у MongoDB та можливість додавати складні індекси, які не підтримують базу даних SQL Opensource (включаючи індекси в таблицях). У той же час ви не втрачаєте інтероперабельність, оскільки базова таблиця об'єкта все ще зберігається в SQL і, таким чином, може бути приєднана до модулів, які все ще є лише SQL (наприклад, Прапор).
Цей тип швидкого запиту доступний завдяки механізму EntityFieldQuery, способу абстрактного побудови запитів про сутності, їх властивості та поля. Реалізація за замовчуванням в ядрі переводить ці запити в SQL, але модуль MongoDB має повнофункціональну реалізацію, яка може задовольнити ці запити з MongoDB безпосередньо.
Завдяки програмі EntityFieldQuery для Views , ви можете легко використовувати цю потужність за допомогою інструментів, до яких ви звикли. Єдиним недоліком є те, що відносини не підтримуються (але на практиці їх рідко все-таки потрібні - і це можна вирішити шляхом введення додаткових даних в об'єкт сутності та додавання викриття їх як додаткових властивостей сутності).
Коротше кажучи, щойно ефективність запитів є проблемою у вашому проекті, яка відбувається, як тільки у вас є значний набір даних (скажімо, починаючи з кількох десятих тисяч об'єктів для даного типу сутності), MongoDB - це чистий прибуток за дуже мало недоліків. Настійно рекомендується.
MongoDB та подібні розроблені для зберігання структурованих (ієрархічних) даних порівняно гнучко.
Наприклад, у Drupal 7
випадку використання field_sql_storage
кожного поля отримує дуже власні таблиці. Коли ви додаєте 10 полів до типу вмісту, ви отримуєте 10 таблиць у вашій базі даних. Завантажуючи цей вузол, field_sql_storage
він виконує запит на поле та на вузол (або кілька вузлів при використанні node_load_multiple
).
Коли ви використовуєте mongodb_field_storage , ви можете зберігати всі поля вузла в одному документі і отримувати з одним запитом.
Ви також можете зберігати інші речі, такі як сторожовий дог, сеанси, кеш, блоки в MongoDB .
Ви все ще потребуєте MySQL, проте MongoDB не замінює його (лише для конкретних частин).
Ще одна перевага полягає в тому, що з MongoDB простіше масштабувати, ви можете додати багато серверів, щоб кластер обмінювався даними між ними.
Плюси приходять із мінусами.
Drupal в цілому не може бути переключений на MongoDb, тому вам доведеться підтримати дві бази даних і переконатися, що вони добре працюють разом.
Багато модулів не зможуть працювати з mongodb, тому ви втратите сумісність.
Якщо у вас є нагальна потреба (наприклад, частина вашої системи не справляється з кількістю запиту / або кількістю даних) я б не перемикався. І навіть коли ви починаєте наближатись до обмежень, погляньте на те, щоб кинути апаратне забезпечення на проблему чи налаштування перед перемиканням.
Я думав, що відповів на це раніше, є майже дублікат на ПУ