Въвеждането на DevOps в организациите промени процеса на разработка и също така въведе някои нови предизвикателства. В допълнение, разработчиците и екипите на DevOps, заедно със собствените си избрани езици за програмиране, също имат своите любими системи за бази данни.
Жизненият цикъл на продукта става все по-кратък всяка година, така че разработчиците искат да могат да се развиват бързо, използвайки технологии, които познават най-добре.
Наличието на множество бекенда на база данни на RDBMS означава, че вашата организация ще стане по-гъвкава от страна на разработката, но също така налага допълнителни знания на оперативните екипи.
Разширяването на вашата инфраструктура от една до много бази данни означава, че трябва също да ги наблюдавате, управлявате и мащабирате.
Тъй като всеки бекенд за съхранение се отличава в различни случаи на употреба, това също означава, че трябва да преоткриете колелото за всеки един от тях.
Познаването на приликите и ключовите разлики ще ви помогне да се потопите в различни стилове на RDBMS.
В тази статия ще преминем през следните точки:
- Кратко въведение в платформата
- Oracle, MSSQL, MySQL, PostgreSQL
- Поддръжка на платформа
- Процес на инсталиране
- Достъп до база данни
- Процес за архивиране
- Контролиране на изпълнението на заявка
- Сигурност
- Опции за репликация
- Поддръжка на общността
Кратко въведение в платформата
PostgreSQL е признат за мнозина като най-модерната база данни с отворен код в света. Това е система за бази данни с напълно отворен код, пусната под собствен лиценз, PostgreSQL License, сравнима с лицензите на MIT или BSD. PostgreSQL общността е активна и непрекъснато подобрява съществуващи и нови функции. Според класацията на популярност на DB-двигателите, PostgreSQL беше СУБД на 2017 и 2018 г. Популярността на DB-Engines показва, че тенденцията не се е променила през годините.
Интересен факт е, че PostgreSQL не поддържа SQL до 1994 г. Езикът QUEL е използван за запитване на данни от него. SQL поддръжката беше добавена по-късно.
PostgreSQL има много разширени функции, които предлагат други системи за управление на бази данни на предприятието, като изгледи, съхранени процедури, индекси и тригери в допълнение към първичния ключ, външния ключ и функциите за атомарност.
PostgreSQL може да бъде разширен от потребителите чрез модифициране на съществуващи функции, добавяне на нови функции и разпространение свободно, тъй като е с отворен код. Работи на основни платформи като UNIX, MacOS, Windows и Linux и др. Поддържа видео, текст, аудио, изображения, програмни интерфейси за различни езици. Списъкът с поддържани езици включва C/C++, Java, Python, Perl и др.
Оракул е един от най-големите доставчици на RDBMS (система за управление на релационни бази данни) в ИТ света. Известно е като база данни на Oracle, Oracle DB или Oracle, предлагана на пазара от Oracle.
Oracle Database се използва от много компании в ИТ индустрията за обработка на транзакции, бизнес анализ, приложение за бизнес разузнаване и др.
Oracle има дълга и много интересна история:
На 16 юни 1977 г. Лабораториите за разработка на софтуер (SDL) са създадени в Санта Клара, Калифорния от Лари Елисън, Боб Майнър и Ед Оутс. През 1977 г. Oracle взе името си от кодовото име на проекта на ЦРУ и първата комерсиализирана RDBMS на Oracle е показана на света през 1979 г.
Базата данни на Oracle е налична в различни издания, като Enterprise Edition Standard Edition, Express edition и Oracle Lite. Най-големият конкурент на базата данни на Oracle е Microsoft SQL сървърът.
Microsoft SQL Server е много популярна RDBMS с ограничително лицензиране и скромна цена на притежание, ако базата данни е със значителен размер или се използва от значителен брой клиенти.
Това е една от трите водещи на пазара технологии за бази данни, заедно с Oracle Database и DB2 на IBM.
Той осигурява много удобен за потребителя интерфейс и лесен за научаване, което е довело до голяма инсталирана потребителска база.
Подобно на друг софтуер за RDBMS, Microsoft SQL Server е изграден върху SQL, стандартизиран език за програмиране, който администраторите на бази данни (DBA) и други ИТ специалисти използват за управление на бази данни и запитване на данните, които съдържат. SQL Server е свързан с Transact-SQL (T-SQL), реализация на SQL от Microsoft, която добавя набор от собствени разширения за програмиране към стандартния език.
MySQL
MySQL е поддържана от Oracle система за управление на релационни бази данни с отворен код, базирана на SQL.
Първоначално замислен от шведската компания MySQL AB, MySQL беше придобит от Sun Microsystems през 2008 г., а след това от Oracle, когато купи Sun през 2010 г.
Разработчиците могат да използват MySQL под GNU General Public License (GPL). Версията Enterprise се предлага с поддръжка и допълнителни функции за сигурност и висока наличност.
Това е втората най-популярна база данни в света според класацията на db-engines и вероятно най-настоящият бекенд на база данни на планетата, тъй като управлява повечето интернет услуги по целия свят. MySQL работи на почти всички платформи, включително Linux, UNIX и Windows.
MySQL е важен компонент на корпоративния стек с отворен код, наречен LAMP.
LAMP е платформа за уеб разработка, която използва Linux като операционна система, Apache като уеб сървър, MySQL като система за управление на релационна база данни и PHP като обектно-ориентиран скриптов език.
Поддръжка на платформа
Оракул
Най-популярната версия на Oracle DB, Oracle 12c, е наистина корпоративна RDBMS система, която се поддържа от различни операционни системи и платформи. Oracle доминира в света на бази данни отчасти, защото работи на десетки платформи, всичко от мейнфрейм, Sparc, Mac до Intel. Списъкът включва следните комбинации от ОС и архитектура:Linux на x86-64 (поддържат се само Red Hat Enterprise Linux, Oracle Linux и SUSE дистрибуции) Microsoft Windows на x86-64. Oracle Solaris на SPARC и x86-64. IBM AIX на POWER Systems. Linux на IBM zEnterprise Systems HP-UX на Itanium.
MSSQL
Като продукт на Microsoft, SQL е проектиран да бъде много съвместим с Windows OS. На 16 ноември 2016 г. Microsoft обяви началото на нова история:SQL Server вече се поддържа в Linux и Docker. Адът замръзва!
MySQL
MYSQL извършва по-плавно изпълнение на всички платформи като Microsoft, UNIX, Linux, Mac и др.
PostgreSQL
Като цяло може да се очаква PostgreSQL да работи на различни (дори екзотични) архитектури на процесора и операционни системи.
Той включва архитектури на процесора като x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, Alpha, ARM, MIPS, MIPSEL, M68K и PA-RISC. Често е възможно да се надгражда на неподдържан тип процесор, като се конфигурира с --disable-spinlocks, но производителността ще бъде слаба.
Може да се очаква PostgreSQL да работи на следните операционни системи:Linux (всички скорошни дистрибуции), Windows (Win2000 SP4 и по-нови), FreeBSD, OpenBSD, NetBSD, Mac OS X, AIX, HP/UX, IRIX, Solaris, Tru64 Unix, и UnixWare.
Процес на инсталиране
Оракул
От всичките четири представени системи за бази данни Oracle има най-сложните системни изисквания, които идват със сложен процес на инсталиране. И на Windows, и на Linux базирани платформи Oracle използва специален инструмент за универсален инсталатор на Oracle (OUI) като основен инсталационен процес. OUI се използва за инсталиране на софтуера Oracle Database. OUI е помощна програма за графичен потребителски интерфейс, която ви позволява да:
- Вижте софтуера на Oracle, който е инсталиран на вашето устройство
- Инсталирайте нов софтуер за база данни на Oracle
- Изтрийте софтуера на Oracle, който вече не е необходим.
По време на инсталационния процес OUI ще стартира помощника за конфигуриране на база данни на Oracle (DBCA), който може да инсталира предварително създадена база данни по подразбиране, която съдържа примерни схеми или може да ви преведе през процеса на създаване и конфигуриране на персонализирана база данни.
Ако не създадете база данни по време на инсталацията, можете да извикате DBCA, след като сте инсталирали софтуера, за да създадете една или повече бази данни.
MSSQL
Започвайки от SQL Server 2016 (13.x), SQL Server е достъпен само като 64-битово приложение.
Инсталирането става чрез съветника за инсталиране, командния ред или чрез инструмента sysprep.
Съветникът за инсталиране изпълнява инсталационния център на SQL Server. За да създадете нова инсталация на SQL Server, изберете опцията Инсталация от лявата страна и след това щракнете върху Нова самостоятелна инсталация на SQL Server или добавете функции към съществуваща инсталация.
Инсталацията, базирана на Linux, е много подобна на метода за инсталиране на база данни с отворен код. Той поддържа опаковки за базирани на Debian и RedHat системи. Стъпките се състоят от конфигурация на хранилището, инсталиране на пакет и конфигурация след инсталация, доста подобна на MySQL. Целият процес е подробно описан в следващата статия.
Съветник за инсталиране на MSSQL
MySQL
Oracle предоставя набор от двоични дистрибуции на MySQL. Те включват общи двоични дистрибуции под формата на компресирани tar файлове (файлове с разширение .tar.gz) за редица платформи и двоични файлове в специфични за платформата пакети. На платформата Windows инсталационният процес се задейства от стандартния съветник за инсталиране чрез GUI.
PostgreSQL
PostgreSQL е наличен в повечето дистрибуции на Linux, така че е много вероятно да го инсталирате чрез проста команда yum или apt-get. За конфигурацията на HA можете да използвате инструмента ClusterControl s9s или GUI. Инструментите на S9S могат да ви помогнат да създадете PostgreSQL клъстер само с една команда на един ред:
$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.91?master;192.168.0.92?slave;192.168.0.93?slave" \
--provider-version='11' \
--db-admin='postgres' \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='PostgreSQL 11 Streaming Replication' \
--wait
Creating PostgreSQL Cluster
\ Job 259 RUNNING [█▋ ] 15% Installing helper packages
За повече информация вижте този блог.
Достъп до базата данни и създаване на БД
Оракул
Oracle разделя процеса на създаване на двоичен файл и база данни. За разлика от други популярни системи за бази данни, създаването на база данни включва много повече стъпки.
Помощникът за конфигуриране на база данни (DBCA) е предпочитаният начин за създаване на база данни, защото може да го направи по много по-автоматизиран подход. DBCA може да се стартира от Oracle Universal Installer (OUI), в зависимост от типа инсталиране, което изберете. Можете също да стартирате DBCA като самостоятелен инструмент по всяко време след инсталирането на Oracle Database.
Можете да стартирате DBCA в интерактивен режим или неинтерактивен/безшумен режим. Интерактивният режим осигурява графичен интерфейс и ръководен работен процес за създаване и конфигуриране на база данни. Неинтерактивният/безшумен режим ви позволява да скриптирате създаването на база данни. Можете да стартирате DBCA в неинтерактивен/безшумен режим, като посочите аргументи на командния ред, файл с отговори или и двете.
Oracle DBCA - създаване на база данниКогато е създадена база данни, можете да получите достъп до нея със специален клиент, наречен sqlplus. SQL*Plus е терминална клиентска програма, с която имате достъп до Oracle Database.
MSSQL
SQL Server Management Studio (SSMS) е основният инструмент за администриране на Database Engine и писане на Transact-SQL код. SSMS се предлага като безплатно изтегляне от Центъра за изтегляне на Microsoft. Най-новата версия може да се използва с по-стари версии на Database Engine.
Management Studio е предпочитан метод за създаване на нова база данни. За да създадете база данни в Microsoft SQL Server, свържете се с компютъра, където е инсталиран Microsoft SQL Server, като използвате администраторски акаунт.
Стартирайте Microsoft SQL Server Management Studio и изберете да създадете опция за база данни. Процесът на съветника ще ви преведе през процеса. Ако предпочитате командния ред, това може да стане със синтаксис CREATE DATABASE.
MySQL
За да получите достъп до вашата MySQL база данни, използвайте mysql клиент. Създаването на база данни е толкова просто, колкото CREATE DATABASE <име>.
PostgreSQL
PostgreSQL базата данни има опция за множество „схеми“, които работят подобно на базите данни в MySQL.
Схемите съдържат таблиците, индексите и т.н. и могат да бъдат достъпни едновременно от същата връзка към базата данни, в която се намират. Методите за достъп за PostgreSQL са дефинирани във файл:pg_hba.conf. Може да се намира на различни места. В Ubuntu 14.04 се намира в /etc/postgresql/9.3/main/pg_hba.conf, на Centos 7 от друга страна се намира по подразбиране в /var/lib/pgsql/data/pg_hba.conf.
Процес за архивиране
Оракул
Oracle има най-сложния, специален вграден инструмент за архивиране от всичките четири сървъра, описани тук; нарича се Recovery Manager (RMAN).
RMAN ви позволява да изпълнявате сложни политики за архивиране и селективно възстановяване. Същите операции обикновено изискват много ръчни стъпки в други RDBMS.
Можем да правим резервни копия по два начина:
- деактивиране на базата данни и копиране на физически файлове (т.нар. студено архивиране)
- използвайки RMAN и направете резервно копие, без да деактивирате базата данни (горещо архивиране)
За да направите горещо архивиране, настройте базата в режим АРХИВЛОГ. Това ще каже на Oracle да не съхранява копията на регистрационните файлове за повторно изпълнение като архивни регистри.
MSSQL
В света на MS SQL можете да използвате вградените T-SQL команди за архивиране и възстановяване на бази данни. Няма нужда да използвате инструменти като mysqlhotcopy и mysqldump.
MS SQL Server предлага три различни онлайн стратегии за архивиране:
- Прост модел за възстановяване (ALTER DATABASE dbname SET RECOVERY SIMPLE)
- Модел за пълно възстановяване (ALTER DATABASE dbname SET RECOVERY FULL)
- Модел за възстановяване с групово регистриране (ALTER DATABASE dbname SET RECOVERY BULK_LOGGED)
Препоръчителният модел е пълното възстановяване, ако загубата на данни не е приемлива. Този режим е подобен на функцията на MySQL, когато двоичният дневник е активиран. Можете да възстановите базата данни по всяко време, но трябва редовно да архивирате дневника на транзакциите, както и базата данни.
Моделът с групово регистриране може да се използва за големи групови операции, като импортиране на данни или създаване на индекси върху големи таблици. Това е доста по-рядко срещан метод за стартиране на база данни, особено производствена. Той не поддържа възстановяване в момента, така че обикновено се използва като временно решение.
Простият модел е полезен, когато базата данни се актуализира рядко или за целите на тестване и разработка. В режим SIMPLE дневникът на транзакциите на базата данни се изрязва всеки път след приключване на транзакцията. В другите режими дневникът се съкращава чрез оператор CHECKPOINT или след архивния файл на транзакцията. В случай, че базата данни е повредена, може да се възстанови само най-новото архивно копие и всички промени след това архивиране се губят.
MySQL
Две най-популярни помощни програми за архивиране са налични за MySQL и MariaDB, а именно mysqldump логическо архивиране и двоично архивиране Percona XtraBackup и MariaBackup (разклонение на Percona XtraBackup). Версията MySQL Enterprise предлага и mysqlbackup, който е подобен на инструментите за горещо архивиране на XtraBackup и MariaBackup.
PostgreSQL
Повечето СУБД предоставят някои вградени инструменти за архивиране. PostgreSQL има pg_dump и pg_dumpall извън кутията. Въпреки това, може да искате да използвате някои други инструменти за вашите производствени бази данни. Повече информация можете да намерите в най-добрите инструменти за архивиране на статията в PostgreSQL.
Контролиране на изпълнението на заявка и поддръжка на едновременност
Оракул
В Oracle всички обекти на базата данни са групирани по схеми. Схемите са колекция от обекти на база данни и всички обекти на базата данни се споделят между всички схеми и потребители. Може да се преведе в MySQL бази данни. Въпреки че всичко е споделено, всеки потребител може да бъде ограничен до определени схеми и таблици чрез роли и разрешения. Тази концепция е доста подобна на MySQL бази данни. Здравей
MSSQL
MS SQL Server организира всички обекти, като таблици, изгледи и процедури, по имена на база данни. Потребителите са присвоени на вход, който получава достъп до конкретната база данни и нейните обекти. Освен това в SQL Server всяка база данни има частен, несподелен дисков файл на сървъра.
MySQL
MySQL има само MVCC поддръжка в InnoDB. Това е машина за съхранение и по подразбиране е достъпна в MySQL. Той също така предоставя функции за оплаквания от ACID, като поддръжка на чужд ключ и обработка на транзакции. По подразбиране всяка заявка се третира като отделна транзакция, което е различен подход от този в Oracle DB.
PostgreSQL
Двигателят на Postgres извършва контрол на едновременност чрез използване на метод, наречен MVCC (Multiversion Concurrency Control). За всеки потребител, свързан към базата данни, базата данни Postgres дава моментна снимка на базата данни в конкретен екземпляр. Когато базата данни трябва да актуализира даден елемент, тя ще добави по-нова версия и ще посочи старата версия като остаряла. Това позволява на базата данни да спестява допълнителни разходи, но изисква регулирано почистване за изтриване на старите, остарели данни.
Сигурност
Оракул
Функциите за сигурност са страхотни, системата осигурява многопластова сигурност, включително контроли за оценка на рисковете, предотвратяване на неоторизирано разкриване на данни, откриване и докладване за дейностите на базата данни и прилагане на контроли за достъп до данни.
MSSQL
Функциите за сигурност са скромни, RDBMS предлага по-малко функции от Oracle, но все пак много повече от системите за бази данни с отворен код.
MySQL
MySQL прилага сигурност, базирана на списъци за контрол на достъпа (ACL) за всички връзки, заявки и други операции, които потребителят може да се опита да изпълни. Има и известна поддръжка за SSL-криптирани връзки между MySQL клиенти и сървъри.
PostgreSQL
PostgreSQL има РОЛИ и наследени роли за задаване и поддържане на разрешения. PostgreSQL има вградена SSL поддръжка за връзки за криптиране на комуникациите клиент/сървър. Той също така има защита на ниво ред.
В допълнение към това, PostgreSQL идва с вградено подобрение, наречено SE-PostgreSQL, което предоставя допълнителни контроли за достъп, базирани на политиката за сигурност на SELinux. Повече подробности тук.
Поддръжка на общността
Оракул
Базата данни на Oracle, подобно на MySQL, има голяма общност, организирана предимно около https://community.oracle.com и страстни групи на всякакви места по света, като например https://poug.org/en/. Платената поддръжка ви дава достъп до групата за поддръжка, известна преди като metalink, а не support.oracle.com.
MSSQL
В сравнение с други системи за бази данни, MSSQL вероятно има най-слабо организираните общностни групи, но все още много активен. Microsoft върши страхотна работа в популяризирането на своите продукти в университетите. Това дава на младите разработчици, разработчици и администратори на данни лесен достъп до технологията (безплатни лицензи) и всички необходими материали.
MySQL
MySQL има голяма общност от сътрудници, които, особено след придобиването от Oracle, се фокусират главно върху поддържането на съществуващи функции с някои нови функции, които се появяват от време на време. Предимството пред други бази данни с отворен код е много силна външна екосистема на доставчик. Компании като MariaDB и Percona не само предлагат страхотна поддръжка, но и допринасят чрез добавяне на корпоративни функции в техните версии с отворен код.
PostgreSQL
PostgreSQL има много силна и активна общност. Неговата общност подобрява съществуващите функции, докато нейните иновативни сътрудници се стремят да гарантират, че тя остава най-модерната база данни с нови функции и сигурност, ограничавайки разстоянието между базите данни Oracle и MSSQL. PostgreSQL е известен с това, че има повече функции от другите RDBMS на пазара.
Опции за репликация
Оракул
Oracle предлага логическа и физическа репликация чрез вграден Oracle Data Guard. Това е корпоративна функция.
Data Guard е технология за корабно повторение/прилагане на повторение, „повторяване“ е информацията, необходима за възстановяване на транзакции.
Производствена база данни, наричана първична база данни, излъчва повторно към една или повече реплики, наричани резервни бази данни. Когато се направи вмъкване или актуализация на таблица, тази промяна се улавя от записващия журнал в архивен дневник и се репликира в системата в режим на готовност.
Резервните бази данни са в непрекъсната фаза на възстановяване, проверка и прилагане на повторно изпълнение за поддържане на синхронизация с основната база данни. Базата данни в режим на готовност също автоматично ще се синхронизира отново, ако временно бъде изключена с основната база данни поради прекъсване на захранването, проблеми с мрежата и т.н.
За по-гъвкави опции за репликация, като многоизточник, селективна репликация, трябва да помислите за допълнително платен инструмент, Oracle Golden Gate.
MSSQL
Microsoft SQL Server предоставя следните типове репликация за използване в разпределени приложения:
- Транзакционна репликация
- Репликация при сливане
- Репликация на моментна снимка
Той може да бъде значително разширен с Microsoft Integration Services, което ви дава възможност да персонализирате потока на репликация извън кутията.
PostgreSQL
PostgreSQL има няколко налични опции, всяка със своите плюсове и минуси, в зависимост от това какво е необходимо чрез репликация. Опциите за изграждане се основават на дневник за запис напред. Файловете се изпращат до сървър в режим на готовност, където се четат и възпроизвеждат отново, или поточно репликация, където сървър в режим на готовност само за четене извлича регистрационни файлове на транзакции през връзка с база данни, за да ги възпроизведе. В случай на по-сложна архитектура на репликация, вероятно бихте искали да проверите Slony (главен към множество подчинени устройства) или Bucardo (мултимастър).
MySQL
MySQL репликацията е може би най-популярното решение с висока достъпност за MySQL,
и широко използвано от най-добрите уеб услуги.
Лесно се настройва, но текущата поддръжка като надстройки на софтуера, промени в схемите, промени в топологията, преодоляване при отказ и възстановяване винаги е била трудна.
Репликацията на MySQL не изисква никакви инструменти на трети страни, както главен-подчинен, така и мултимастер могат да се извършват извън кутията.
Последните версии на MySQL добавиха репликация от няколко източника и глобален идентификатор на транзакцията, което го прави още по-надежден и по-лесен за поддръжка.
Заключение
Приоритетните бази данни като Oracle и MSSQL предлагат стабилни системи за управление и фина поддръжка. Сред дългия списък с поддържани функции потребителите могат да получат успокояващо усещане за достъп до корпоративна поддръжка и платени системи за знания.
От друга страна, цената на лиценза, не толкова голяма разлика в функциите и корпоративните плъгини, ще ви накара да нетърпеливи да преминете към решението с отворен код по-лесно от всякога.
Използването на предварително дефинирани процеси и автоматизация може не само да ви спести време, но и да ви предпази от често срещани грешки.
Платформа за управление, която систематично адресира всички различни аспекти на жизнения цикъл на базата данни, ще бъде по-стабилна от свързването на няколко точкови решения.