NoSQL ("не само SQL") е подход към дизайна на база данни, който позволява съхранението и запитването на данни извън традиционните структури, намиращи се в релационни бази данни. Създаден е, за да работи предимно с неструктурирани данни, които се генерират от множество източници като документи, аудио, видео, социални мрежи и т.н. Базите данни NoSQL са най-добри за съвременни приложения, където моделите на данни се развиват и мащабируемостта е от съществено значение. Тази база данни придоби популярност през последните години, тъй като компаниите вече трябва да се справят с неструктурирани данни повече от всякога. Този модел съхранява данни по различен начин от традиционните релационни таблици, за да позволи на свързаните данни да се съхраняват в една структура от данни. Базата данни NoSQL може да бъде разделена на четири категории:
-
Магазин за документи
-
Бази данни ключ-стойност
-
Магазини с широки колони
-
Графични бази данни
NoSQL бази данни често се използват в гъвкави проекти, защото предлагат гъвкави модели на данни. Това позволява на разработчиците да се съсредоточат върху бизнес логиката и алгоритмите, вместо да се занимават с актуализации на схеми. Ако очаквате, че моделът на данните на приложението ви трябва да остане гъвкав, за да поеме промените във времето, подходът на гъвкавата схема на NoSQL бази данни може да е подходящ за вашите нужди.
Според db-engines, първите две бази данни NoSQL (юли 2021 г.) са MongoDB (класация:5) и Redis (класация:6). Интересното е, че тези NoSQL бази данни не са съществували преди 12 години. Как са възникнали и са придобили привличане, популярност и са променили пейзажа на системата за управление на базата данни е основната същност на тази публикация в блога.
MongoDB
MongoDB е документно-ориентирана база данни с отворен код, с първоначалното издание през февруари 2009 г. Базите данни за документи контрастират силно с традиционната релационна база данни. Те съхраняват цялата информация за даден обект в един екземпляр в базата данни и всеки съхранен обект може да бъде различен от всеки друг. Това елиминира необходимостта от обектно-релационно картографиране и позволява безсхемна структура, функция, при която разработчиците на приложения имат гъвкавостта да се развиват бързо поради своя гъвкав модел на данни. Вместо да монтират приложение, което да отговаря на изискванията на схемата, разработчиците пишат приложението и схемата следва.
MongoDB е много популярен поради своята гъвкавост, лекота за учене и по-ниска цена на притежание, за да започнете. Разработчиците на приложения обичат MongoDB, защото могат да променят модела на данни в движение и защото MongoDB използва JSON документи за запис на данни. JSON е навсякъде и може да се счита за де-факто формат за изпращане на богати данни между уеб приложения и крайни точки. Опростеният му дизайн и гъвкавостта го правят лесен за четене и разбиране, а в повечето случаи и лесен за манипулиране на езика за програмиране по ваш избор.
MongoDB се появи благодарение на 10gen (преди да бъде преименуван на MongoDB Inc), започна да го разработва през 2007 г. и излезе с първата си версия на GA през февруари 2009 г. Оттогава MongoDB се развива бързо и се счита за един от най-вълнуващите проекти за бази данни за съвременни приложения. Според StackOverflow Developer Survey 2020, MongoDB остава технологията за бази данни, която разработчиците искат да научат най-много. По време на това писане те току-що пуснаха версия 5.0 (13 юли 2021 г.) и се предлага с много забележителни функции като повторно споделяне на живо, поддръжка на данни от времеви серии и API с версии, подходящи за мулти-облачни среди.
Друга важна характеристика на MongoDB са вградените функции за висока наличност като репликация, набор от реплики и разделяне. Той е хоризонтално мащабируем, което помага за намаляване на натоварването и лесно мащабиране на вашия бизнес. Той предлага репликация чрез домашен протокол за консенсус, който черпи вдъхновение от Raft и може да разпространява данни между фрагменти чрез своя рутер за заявки, наречен mongos. Можете да използвате ClusterControl, за да разгръщате с лекота набор от реплики на MongoDB и настройка на разделен клъстер.
MongoDB привлече общественото внимание и критици поради слабостта си към конфигурацията за сигурност по подразбиране на MongoDB, позволяваща на всеки да има пълен достъп до базата данни. Данните от десетки хиляди инсталации на MongoDB са откраднати. Освен това много сървъри на MongoDB са държани за откуп. Това излагане ни накара да напишем шепа публикации в блогове, свързани със сигурността, свързани с MongoDB, като например Secure MongoDB и Protect Yourself From the Ransom Hack и Как да защитим MongoDB от Ransomware - Десет съвета. Следователно MongoDB подобри аспектите на конфигурацията по подразбиране, за да бъде по-сигурна с MongoDB 3 и по-нови версии.
Някои огромни компании разчитат силно на MongoDB като свое хранилище на данни, като Forbes, Toyota, SAP, Cisco, eBay и Adobe. MongoDB се счита за промяна на играта в света на бази данни, превръщайки се в една от най-важните платформи за бази данни в ерата на интернет.
ClusterControl поддържа MongoDB от версия юли 2013 г. (v1.2.3) и оттогава непрекъснато се подобрява. ClusterControl дори поддържаше TokuMX (MongoDB с фракталното дърво на Tokutek) тогава, преди да бъде оттеглено в MongoDB 3 поради промените в основния дизайн на възходящата верига. В последните забележителни подобрения ClusterControl въвежда поддръжка за Percona Backup за MongoDB, разпределено решение с ниско въздействие за постигане на последователно архивиране на разчленени клъстери на MongoDB и набори реплики. Проектът Percona Backup за MongoDB е наследен от и заменя mongodb_consistent_backup, който вече не се разработва или поддържа активно.
Redis
Redis е друга най-популярна технология за бази данни NoSQL, която се фокусира върху честия високоскоростен достъп до едни и същи парчета данни, дори ако тези парчета данни са големи. През май 2019 г. Salvatore Sanfilllippo пусна първоначалната версия на Redis, известен още като Remote Dictionary Server, и привлече вниманието на всички заради по-богатите си функции към вече създаденото решение за база данни с отворен код в паметта по това време, наречено Memcached.
Redis е супер бърз поради структурата на данните в паметта и факта, че е написан на език C (това е една от причините Memcached да бъде пренаписан на C). Поради високата му производителност, разработчиците се обърнаха към Redis за кеширане на данни, когато обемът на операциите за четене и запис надвишава възможностите на традиционните бази данни. Често достъпните данни могат да бъдат кеширани и обслужвани от хранилища за данни ключ-стойност в паметта и минимизиране на четенето и записа към по-бавни дисково-базирани системи, фокусирани върху постоянното съхранение.
Традиционно системите за управление на бази данни са проектирани да предоставят стабилни функционалности на данни, а не скорост в мащаб. Кешът на приложението често се използва за съхраняване на копия на справочни таблици и отговорите на скъпи заявки от СУБД, както за подобряване на производителността на приложението, така и за намаляване на натоварването на източника на данни. Понякога работният процес на приложението изисква генериране на ресурсоемки резултати. След като тези резултати бъдат получени, има случаи, в които резултатите могат да бъдат използвани по-късно, като например при извършване на частични агрегати. Кешът действа като идеална междинна среда за запазване на такива резултати между заявките. Това е мястото, където Redis блести.
Redis еволюира от много бързо просто съхранение ключ-стойност до постоянно съхранение на данни и се използва като посредник за съобщения и система за опашка. Той позволява истинска липса на състояние за процесите на приложенията, като същевременно намалява дублирането на данни или заявки към външни източници на данни. Според StackOverflow Developer Survey 2020, Redis остава на върха в технологиите за бази данни, които разработчиците са изразили интерес да продължат да се развиват. Към момента на писането на това писане, Redis 6 е най-новата версия, с нова, по-усъвършенствана базирана на потребител ACL реализация, вградено SSL криптиране на трафика и многонишков I/O, въпреки че процесът Redis все още е еднонишков .
Разгръщането на Redis се поддържа в ClusterControl 1.9.0, като се използва нашия нов GUI пакет от следващо поколение ClusterControl, наличен в отделна инсталация. По време на това писане ние го наричаме ClusterControl v2, маркиран с Technology Preview, който поддържа само разполагане на репликация на Redis до 5 възела с Redis Sentinel с управление на архивиране на AOF и RDB. Ако се интересувате, моля, вижте това ръководство за това как да го инсталирате.
Резюме
MongoDB и Redis са две от най-добрите NoSQL решения за бази данни на пазара в момента и се смята, че запазват позицията си в топ 10 на базата данни за доста дълго време. Това е причината ClusterControl да поддържа и двете технологии за бази данни.