З точки зору розробника, я можу сказати, що майже кожен традиційний двигун базової бази даних може лише розширювати масштаб і масштабувати дуже важливо.
Останніми роками, коли потребує більшої масштабованості та високодоступних систем, докладаються зусилля, щоб зробити існуючі бази даних масштабними. Але оскільки конструкції перешкоджає застарілому коду, це дуже просто підкреслює, а не є основним для дизайну. Ви з цим зіткнетесь, якщо спробуєте розгорнути більшість відомих механізмів бази даних. Додавання рабовласницьких серверів може бути досить складно налаштувати, і ви помітите, що це має значні обмеження, для деяких з яких може знадобитися повторне переміщення таблиць баз даних.
Наприклад, більшість з них - це головний / (багато-) раб, а не багатомайстерні проекти. Іншими словами, у вас може бути просто весь сервер, який просто сидить там і не в змозі обробляти запити. Деякі з них, але з обмеженнями ... наприклад, читати лише багатослов'янську конструкцію. Тож у вас може бути один сервер, який бере записи, а всі інші надають дані лише для читання. Ви помітите, коли ви налаштовуєте ці системи, це не завжди процес прямого руху і важко налагодити роботу. У багатьох випадках це відчувається сильним болтом.
З іншого боку, є деякі новіші двигуни бази даних, що розробляються з одночасністю та розробкою мульти-майстрів з самого початку. NOSQL і NewSQL - це новий клас дизайну.
Так що, здавалося б, найкращий спосіб досягти кращої продуктивності від традиційного SQL-сервера - це збільшення масштабів! У той час як з NOSQL та NewSQL вони одночасно збільшуються та збільшуються.
Причина традиційних систем RDBMS тісно пов'язана з тим, що всі вони потребують послідовного перегляду одних і тих же даних. Коли у вас є кілька серверів, які приймають оновлення одних і тих же даних від різних клієнтів, якому ви довіряєте? Будь-який метод, який намагається забезпечити узгодженість даних через якийсь механізм блокування, вимагає співпраці з іншими серверами, що або погіршує продуктивність, або впливає на якість даних, оскільки будь-які дані, прочитані у клієнта, можуть бути застарілими. І сервери повинні вирішувати між собою, які дані є останніми під час запису до одного запису. Як бачимо, це складна проблема, яка ускладнюється тим, що навантаження навантаження розповсюджується на сервери, а не лише серед процесів або потоків, де доступ до даних все ще досить швидкий.