Функции и случаи на употреба на PostgreSQL
PostgreSQL е система за управление на обектно-релационни бази данни (СУБД) с отворен код. Това е усъвършенствана система за управление и анализ на база данни, която се използва главно за платформи за електронна търговия, платежни транзакции и различни решения за съхранение на данни. Той съществува повече от 30 години и се актуализира редовно всяка година, поддържа различни SQL функции като тригери, дефинирани от потребителя типове и функции, подзаявки и т.н.
PostgreSQL е една от най-модерните бази данни с отворен код в света. Подходящ е за няколко случая на използване в производството и разработката. Той предоставя многобройни предимства като подобрена производителност на разделяне и заявка (особено при големи набори от данни), подобрения в B-дървото за оптимално използване на пространството, статистика за най-често срещаните стойности в няколко колони (MCV), общи изрази на таблици с вграждане на заявка и контрол на контролната сума.
Няколко думи за Ubuntu 20.04 на DigitalOcean
Ubuntu е популярна настолна операционна система с отворен код. Ubuntu 20.04 включва многобройни авангардни функции, като инструмент за управление на моментни снимки на ZFS, голяма промяна в ядрото и подобрения в сигурността. Облачната платформа DigitalOcean осигурява стабилна инфраструктура и глобална достъпност за разработване, управление и мащабиране на приложения в облака. Със своите продукти за изчисление, съхранение, бази данни и мрежови продукти, разработчиците могат да създават уеб и мобилни приложения, стрийминг услуги, игри, SaaS решения и др. Предлагайки функции като споделена частна мрежа, инструменти за DevOps с едно щракване и SSD твърди дискове, DigitalOcean е гъвкав, сигурен и прост избор за критични решения.
Този урок предоставя подробни инструкции как да инсталирате PostgreSQL на DigitalOcean Ubuntu 20.04. Без повече приказки, нека да започнем!
|
Предварителни условия за инсталиране на PostgreSQL
Преди да се потопим в действителната инсталация на PostgreSQL 12 на DigitalOcean Ubuntu 20.04, трябва да се уверите, че вашата система отговаря на следните предпоставки.
- Сървърът трябва да има поне основна UFW защитна стена, за да гарантира, че са разрешени само връзки към определени услуги.
- Системата трябва да бъде актуализирана за нов екземпляр на сървъра и да се рестартира. За да направите това, използвайте следните команди:
sudo apt update && sudo apt upgrade –y
sudo reboot
Инсталиране на PostgreSQL на Ubuntu 20.04 DigitalOcean
Можете да инсталирате PostgreSQL 12, като използвате официални/стандартни хранилища на Ubuntu 20.04, като използвате системата за мениджър на пакети apt. Преди да направите това, вече трябва да сте опреснили индекса на локалния пакет на вашия сървър (вижте предпоставките по-горе).
Хранилището съдържа различни пакети (включително добавки на трети страни), като например:
- postgresql-клиент
- postgresql
- libpq-dev
- postgresql-server-dev
- pgadmin пакети
След това инсталирайте пълния пакет PostgreSQL 12 заедно с модула postgresql-contrib, който предоставя допълнителни помощни програми и функционалност. Това може да бъде инсталирано, като изпълните следната команда:
sudo apt install postgresql postgresql-contrib –y
След това стартирайте услугата PostgreSQL при рестартиране на системата, като изпълните следната команда:
sudo systemctl start postgresql
За да стартирате автоматично услугата PostgreSQL при стартиране на системата, изпълнете:
sudo systemctl enable postgresql
Проверете дали услугата PostgreSQL работи според очакванията, като стартирате systemctl status postgresql:
sudo systemctl status postgresql
Това трябва да върне състоянието на услугата PostgreSQL и да се покаже активно, подобно на екранната снимка по-долу.
Персонализиране на инициализацията на PostgreSQL
След инсталацията може да се създаде клъстер на база данни с помощта на командата initdb. Командата initdb трябва да се изпълнява от потребителя на базата данни, а не от root потребителя. Потребителят root може да създаде празна директория, която може да бъде chowned (команда за промяна на собственика) от потребителя на postgres. Тази директория ще съдържа данните като шаблон, който ще бъде копиран във всички бази данни по подразбиране. От потребителя на postgres може да се извика следната команда с подходящата опция и име на директория.
initdb [option...] [ --pgdata | -D ] directory
Командата initdb може да се изпълнява като удостоверен потребител с различни флагове, за да се създаде db шаблон в дадена директория.
По-долу е предоставен списък с конкретни флагове, както се вижда на екранната снимка по-горе:
--encoding UTF8
(може да бъде всяка въз основа на Locale).- Флагът за кодиране задава кодирането на шаблона на базата данни. Всички бази данни, създадени с помощта на този шаблон, също ще използват един и същ метод на кодиране, освен ако не е посочен отделно. Има много налични методи за кодиране за различни езици.
--pgdata test
(този флаг създава директория с име “test” за съхраняване на данните от базата данни).- Указва директорията, в която клъстерът на базата данни записва своите данни.
-A peer
(това определя метода за удостоверяване, използван във файла pg_hba.conf).- Указва метода за удостоверяване по подразбиране за локални потребители, използван в pg_hba.conf (хост и локални линии). initdb ще попълни предварително записи pg_hba.conf, използвайки посочения метод за удостоверяване за нерепликация, както и връзки за репликация.
-k
(използва контролна сума на данните за проверка на I/O грешки)- Указва контролната сума на данните на всички страници с данни за откриване на повреда на I/O системата. Това обаче забавя скоростта на обработка на базата данни).
Обезопасяване на вашата PostgreSQL база данни
По време на инсталацията по подразбиране автоматично се създава нов потребител с име postgres. Този потребител има пълни системни привилегии, така че е важно да защитите потребителския акаунт със силна парола.
sudo passwd postgres
Сега преминете към потребителския акаунт на postgres. Потребителят трябва да има привилегии sudo.
sudo su – postgres
Версията на PostgreSQL може да бъде потвърдена, като стартирате
psql -c "SELECT version();"
За да промените паролата на postgres
команда за използване на потребителя:
psql -c "ALTER USER postgres WITH PASSWORD 'MyNewPassword'";
Забележка:Тази парола е приложима само когато postgres
потребителят се свързва с PostgreSQL през мрежата.
За достъп до базата данни Postgres можете да влезете в базата данни PostgreSQL с:
psql postgres
По подразбиране PostgreSQL не изисква удостоверяване с парола от потребители на локалната система за достъп до базата данни. Това се нарича „peer authentication“. Въпреки това, удостоверяването с парола може да бъде активирано от pg_hba.conf
файл.
За да редактирате този pg_hba.conf
файл, използвайте \q
команда за излизане от обвивката на postgres и за влизане в обвивката на Linux. От вътрешността на обвивката на Linux редактирайте pg_hba.conf
файл. Уверете се, че сте направили резервно копие, преди да редактирате файла.
sudo cp /etc/postgresql/12/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf.bak
След това редактирайте файла с помощта на nano редактор,
nano /etc/postgresql/12/main/pg_hba.conf
Намерете локалния ред под „Само връзки със сокет на Unix домейн“ и променете METHOD
атрибут от peer
към md5
.
Презаредете услугата PostgreSQL, за да приложите новите настройки.
sudo systemctl reload postgresql
Моля, имайте предвид, че има двама потребители с името postgres; единият е потребителят на Linux за свързване и достъп до базата данни, а другият е потребителят на базата данни, който се използва за изпълнение на административни роли в базата данни.
Конфигуриране на вашата PostgreSQL база данни
PostgreSQL може да се конфигурира ръчно за слушане адреси и портове чрез промяна на необходимите параметри във файла postgresql.conf.
По подразбиране се използва PostgreSQL порт 5432 и слуша на localhost. Това може да се промени чрез редактиране на конфигурационния файл.
sudo nano /etc/postgresql/12/main/postgresql.conf
Услугата ще бъде рестартирана след извършване на промени.
sudo systemctl restart postgresql
Създаване на нова роля в PostgreSQL 12
Удостоверяването и упълномощаването в PostgreSQL 12 се осъществяват чрез концепцията за „роля“. Тук ролята е гъвкав термин, който се отнася както за потребители, така и за групи.
Влезте в потребителя на postgres, като използвате следната команда:
sudo su postgres
Нови роли могат да се създават интерактивно от командния ред с командата createrole –interactive. Тук използването на флага –interactive ще създаде подкана за името на новата роля и дали на тази роля трябва да бъдат присвоени разрешения на суперпотребител.
Нов потребител може да бъде създаден с нова роля извън обвивката на потребителя postgresql като:
createuser –interactive
Резултатът от новата потребителска команда трябва да изглежда така.
Създаване и изтриване на база данни във вашия PostgreSQL сървър
В PostgreSQL 12, когато се създаде нова роля, трябва да съществува нова база данни със същото име, тъй като ролята се опитва да се свърже с базата данни по подразбиране. Така, както в предишния раздел, където е създаден потребителският liam, може да се създаде база данни с това име с помощта на следната команда:
createdb liam
В PostgreSQL 12 има множество пътища за създаване на бази данни според изискванията:
- Когато сте влезли от акаунта на postgres:
postgres@server:~$ createdb liam
- Използвайте
sudo
,sudo –u postgres created liam
За да изтрием базата данни, можем да използваме
dropdb liam
Отваряне на подкана на Postgres с новата роля
Потребител на Linux със същото име като базата данни и роля на Postgres може да бъде създаден за влизане с удостоверяване, базирано на идентификация.
Потребител на Linux може да бъде създаден (ако вече не съществува) от командния ред, като напишете:
sudo adduser noah
След като потребителят бъде създаден, той може да влезе в системата с помощта на следната команда;
sudo -u noah psql
Текущата база данни и потребителска информация могат да бъдат достъпни с помощта на;
\conninfo
Управление на PostgreSQL
Създаване и изтриване на таблици
SQL командата CREATE TABLE
може да се използва за създаване на всяка таблица в база данни. В командата трябва да се посочи списък с колони и тип данни за всяка колона.
CREATE TABLE customers (customer_id int, first_name varchar(80), last_name varchar(80));
Тази команда ще създаде таблица с име „клиенти“. Първата колона ще съдържа идентификатора на клиента от типа цяло число. Втората и третата колона са от тип символ и ще съдържат собствените и фамилните имена на клиентите с максимална дължина от 80 знака.
Тази нова таблица може да се види, като напишете \d
.
Таблицата може да бъде изтрита, като напишете:
DROP TABLE customers;
Вмъкване, избиране и изтриване на данни в таблица
Данните се добавят в таблиците на PostgreSQL под формата на редове. Всеки ред представлява отделен набор от данни. Данните могат да бъдат вмъкнати в реда с помощта на командата INSERT INTO. Името на командата е последвано от „име на таблица“ (в следващия пример клиенти), ключовата дума VALUES, списък със стойности, разделени със запетая.
INSERT INTO customers VALUES (1, 'Owen', 'Buyer');
INSERT INTO customers VALUES (2, 'Luke', 'Seller');
Съдържанието на таблицата може да се види с помощта на командата SELECT.
SELECT * FROM customers;
Ред може да бъде изтрит с помощта на DELETE
команда. WHERE
ключова дума се използва за условно избиране на редовете.
DELETE FROM customers WHERE last_name = 'Seller';
За да изтриете всички редове, въведете:
SELECT * FROM customers;
Добавяне и изхвърляне на колони от таблица
PostgreSQL 12 предоставя възможността да добавяте или изтривате колони от съществуващите таблици с лекота.
ALTER TABLE
командата се използва заедно с ADD
ключова дума, за да добавите колона към съществуваща таблица. Това поле е празно за съществуващите редове в таблицата.
ALTER TABLE customers ADD branch_id int;
Същата команда се използва с DROP
ключова дума, за да изтриете посочената колона от таблицата.
ALTER TABLE customers DROP first_name;
Актуализиране на данни в таблица
Освен добавяне и изтриване на записи в таблица, ние също можем да ги модифицираме. Това може да стане с помощта на UPDATE
команда. Трябва да посочим колоните, които трябва да бъдат редактирани с новите стойности.
UPDATE customers SET last_name= 'Buyer' WHERE customer_id = '1';
Съображения за производствената среда
PostgreSQL 12 може да се използва безопасно в производствена среда. Тази база данни е толкова стабилна, че не трябва да има проблеми с нейното внедряване в голям мащаб. За повече информация, моля, вижте предишната ни статия тук.
Заключение
Този урок ви показа как да настроите PostgreSQL 12 на сървър на Ubuntu 20.04, работещ на DigitalOcean. PostgreSQL 12 е сложно приложение с много нови и усъвършенствани функции, като подобрено управление на пространството на стандартни индекси на B-дърво и поддръжка за едновременно възстановяване на индекси и покриване на създаване на индекси. Версия 12 също така поддържа вградени WITH заявки и съпоставяния, предоставени от ICU, подобрява разделянето на дялове и предоставя интерфейс за съхранение на таблици с възможност за добавяне за създаване и използване на различни методи за съхранение на таблици.
Сега, когато знаете основите на настройката и използването на PostgreSQL сървър, защо не изпробвате управлявана алтернатива? С управлявана услуга като ScaleGrid можете да завършите целия процес на настройка, инсталиране и конфигуриране с едно натискане на бутон. Започнете своя безплатен 30-дневен пробен период днес и се уверете сами! Не се изисква кредитна карта и можете да настроите първата си база данни за броени минути.
Тук разгледахме основите на инсталацията и също така предоставихме някои инструкции за общо администриране на база данни. Надяваме се, че сте намерили това ръководство за полезно.