NoSQL є більш еволюційним, ніж революційним. Він по суті поєднує існуючі ідеї "зовнішнього зберігання баз даних" з "використанням знайомих структур даних, а не реляційних таблиць".
Існує більше типів баз даних, ніж реляційних, наприклад ієрархічні бази даних . Незважаючи на архаїчність за сьогоднішніми мірками, він дійсно добре поєднувався зі структурами даних своїх даних (наприклад, записи COBOL ). Справа в тому, що дані в базі даних були змодельовані близько до того, як записи були викладені на мовах програмування, які їх використовували.
Швидкий перехід до винаходу реляційних баз даних , де нарешті база даних відокремлена, і при належній нормалізації це чудовий спосіб візуалізації більшості типів даних та зв'язків між даними. Це зрозуміти дуже просто порівняно з іншими типами баз даних. Однак у цьому абсолютно не вдається зберігати дані таким чином, щоб відображати об’єкти та класи в програмі. Отже, винахід об'єктно-реляційного відображення . Іншими словами, дизайн бази даних насправді перешкоджає дизайну програми, яка її використовує, саме тому нам потрібні бібліотеки ORM, такі як Hibernate. Хоча чистий і послідовний, у моїй думці завжди є той сумний сумнів, що щось там не зовсім правильно.
Це породило ще два типи баз даних, об’єктних баз даних та NoSQL .
Обидві намагаються вирішити проблеми, що вводяться реляційними базами даних, не піддаючи нас страхітливим жахам ієрархічних баз даних. Дані все ще зберігаються у сховищах, які смутно нагадують таблиці, але насправді більше схожі на програмування структур даних, ніж реляційні таблиці. Хоча об'єктні бази даних дотримуються в основному чітко визначених правил, я розумію, що NoSQL є досить довільним. Наприклад, таблиця може бути візуалізована як хеш-таблиця або масив. Існує непростий, чітко визначений спосіб їх запиту за допомогою довільного інструменту, аналогічного Oracle SQL Developer або SQL Server Management Studio .
Ідея полягає в тому, що можна визначити структури даних, які легко шукати в коді, а не збирати разом SQL-запити, які краще підходять для двигуна бази даних SQL, а не висловлювати бажаний запит. Наприклад, нечіткі або часткові збіги складніші і гірші в реляційній базі даних, тоді як база даних NoSQL може мати структуру, оптимізовану для такого пошуку і завершується за частину часу.
Існують мови для запиту NoSQL. Однак не існує універсальної мови, такої як SQL для реляційних баз даних.
Пізнє редагування:
Хоча я досить добре знайомий з базами даних NoSQL, це питання стало поштовхом для мене, щоб придбати якісну книгу з цієї теми та почати її читати з можливою метою стати справжнім експертом з цієї теми. Решта коментарів ґрунтується на NoSQL Distilated: Короткий посібник із світу, що розвивається на основі поліглоту, від Прамода Садалажа та Мартіна Фаулера .
Автори констатують, що реляційні бази даних не добре підходять до кластерів, здатних обслуговувати дані, необхідні для таких сайтів, як Amazon та Google: NoSQL був розроблений, щоб відповідати цій ніші, послаблюючи сумісність і довговічність в ACID, щоб сервер великої кількості запитів, які значною мірою використовують статичні дані (отже, транзакції ACID не так важливі).
Крім того, вони стверджують, що бази даних NoSQL працюють без схеми (стор. 10), яка дозволяє базам даних NoSQL легше змінювати структуру даних. Я не впевнений, що наявність чи відсутність формальної схеми має значення в цьому плані, оскільки бази даних SQL дозволяють також змінювати схеми. Незважаючи на те, два відомих автори висловлюють претензію, тому її варто вивчити.
Я вважаю, що обидва ці основні моменти служать лише для того, щоб нав'язати моєму первинному моменту, що NoSQL є еволюційним, а не революційним. Вони все ще зберігають дані та вносять додаткові покращення масштабу та модифікованості. Вони також зазначають, що NoSQL не прагне узурпувати реляційні бази даних як короля зберігання даних, а лише забезпечити альтернативний спосіб зберігання даних для типів даних, які потребують масштабування та перетворення таким чином, що (на їхню думку) реляційне бази даних не підтримують достатньо добре.