سيستم هاي مديريت پايگاه داده رابطه اي ، عنصر اصلي بسياري از وب سايت ها و برنامه ها هستند. آنها روشي ساختاري براي ذخيره ، سازماندهي و دسترسي به اطلاعات را ارائه مي دهند.
PostgreSQL يا Postgres يك سيستم مديريت پايگاه داده رابطه اي است كه اجراي زبان جستجوي SQL را فراهم مي كند. سازگار با استانداردها ميباشد و داراي بسياري از ويژگي هاي پيشرفته مانند تراكنش هاي قابل اعتماد و همزماني بدون قفل خواندن است.
اين راهنما نحوه نصب Postgres را در يك سرور مجازي Ubuntu 20.04 نشان مي دهد. همچنين برخي از دستورالعمل ها براي مديريت عمومي پايگاه داده را ارائه مي نمايد.
پيش نيازها
براي دنبال كردن اين آموزش ، به يك سرور مجازي Ubuntu 20.04 نياز داريد كه با پيروي از راهنماي ستاپ اوليه سرور مجازي براي Ubuntu 20.04 ،پيكربندي شده باشد. بعد از مطالعه اين آموزش پيش نياز ، سرور شما بايد كاربر غير ريشه اي با امتيازات sudo و يك فايروال پايه داشته باشد.
مرحله 1 – نصب PostgreSQL
مخازن پيش فرض اوبونتو شامل بسته هاي Postgres است ، بنابراين مي توانيد با استفاده از سيستم بسته بندي apt آنها را نصب كنيد.
اگر اخيراً اين كار را نكرده ايد ، فهرست بسته محلي سرور مجازي خود را ريفرش كنيد:
$ sudo apt update
سپس ، بسته Postgres را به همراه يك بسته -contrib نصب كنيد كه برخي از امكانات و كاربردهاي ديگر را اضافه مي كند:
$ sudo apt install postgresql postgresql-contrib
اكنون كه نرم افزار نصب شده است ، مي توانيم به نحوه عملكرد آن و چگونگي تفاوت آن با ساير سيستم هاي مديريت پايگاه داده رابطه اي كه ممكن است از آنها استفاده كرده باشيد ، بپردازيم.
مرحله 2 – استفاده از نقشها (roles) و بانكهاي اطلاعاتي PostgreSQL
به طور پيش فرض ، Postgres از مفهومي به نام “role” براي مديريت احراز هويت و اعتباربخشي استفاده مي كند. اين رول ها به نوعي شبيه به اكانت هاي معمولي سبك يونيكس هستند ، اما Postgres بين كاربران و گروه ها فرق نمي گذارد و در عوض اصطلاح انعطاف پذيرتر “role” را ترجيح مي دهد.
پس از نصب ، Postgres براي استفاده از احراز هويت تنظيم ميشود ، به اين معني كه نقش هاي Postgres را با يك حساب كاربري سيستم Unix / Linux مرتبط مي كند. اگر نقشي در Postgres وجود داشته باشد ، يك نام كاربري يونيكس / لينوكس با همين نام قادر به ورود به عنوان آن نقش است.
فرآيند نصب يك حساب كاربري به نام postgres ايجاد كرده است كه با نقش پيش فرض Postgres همراه است. براي استفاده از Postgres مي توانيد وارد آن حساب شويد.
چند روش براي استفاده از اين حساب براي دسترسي به Postgres وجود دارد.
انتقال به حساب Postgres
با تايپ دستور زير به حساب Postgres در سرور مجازي خود سوييچ كنيد:
$ sudo -i -u postgres
اكنون مي توانيد با تايپ دستور زير به اعلان PostgreSQL دسترسي پيدا كنيد:
$ psql
از آنجا مي توانيد در صورت لزوم با سيستم مديريت بانك اطلاعاتي ارتباط برقرار كنيد.
با تايپ دستور زير از اعلان PostgreSQL خارج شويد:
Postgres=# q
اين دستور شما را به خط فرمان postgres Linux بازميگرداند.
دسترسي به يك اعلان Postgres بدون تعويض حساب
همچنين مي توانيد دستور مورد نظر خود را با حساب postgres مستقيماً با sudo اجرا كنيد.
به عنوان نمونه ، در مثال آخر ، به شما گفته شد كه ابتدا با سوييچ كردن به كاربر postgres و سپس اجراي psql به اعلان Postgres برسيد. شما مي توانيد اين كار را در يك مرحله با اجراي يك دستور psql منفرد به عنوان كاربر postgres با sudo انجام دهيد ، به اين شكل:
$ sudo -u postgres psql
با اين كار شما مستقيماً در Postgres وارد مي شويد بدون اينكه پوسته واسطه اي bash در بين آنها باشد.
دوباره مي توانيد با تايپ كردن اين دستور از بخش Postgres تعاملي خارج شويد:
Postgres=# q
بسياري از موارد به بيش از يك نقش Postgres نياز دارند. در ادامه ياد ميگيريد كه چگونه اين موارد را پيكربندي كنيد.
مرحله 3 – ايجاد نقش (رول) جديد
در حال حاضر ، شما فقط نقش Postgres را در پايگاه داده پيكربندي كرده ايد. مي توانيد با استفاده از دستور Createrole نقش هاي جديدي را از خط فرمان ايجاد كنيد. پرچم –interactive نام نقش جديد را از شما ميپرسد و همچنين سؤال ميكند كه آيا مجوزهاي superuser دارد يا خير.
اگر به عنوان حساب postgres وارد شويد ، مي توانيد با تايپ كردن دستور زير كاربر جديدي ايجاد كنيد:
postgres@server:~$ createuser –interactive
در عوض ، اگر ترجيح مي دهيد بدون تغيير حساب كاربري خود از sudo براي هر دستور استفاده كنيد ، تايپ كنيد:
$ sudo -u postgres createuser –interactive
اين اسكريپت انتخاب هاي مختلفي را به شما نشان ميدهد و بر اساس پاسخ هاي شما ، دستورات صحيح Postgres را اجرا مي كند تا كاربر را با مشخصات دلخواه شما ايجاد كند.
Output
Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
با عبور از برخي از پرچم هاي اضافي مي توانيد كنترل بيشتري به دست آوريد. گزينه ها را با مراجعه به صفحه man بررسي كنيد:
$ man createuser
نصب شما در Postgres اكنون كاربر جديدي دارد ، اما شما هنوز هيچ پايگاه داده اي اضافه نكرده ايد. در بخش بعدي اين روند توضيح داده شده است.
مرحله 4 – ايجاد يك پايگاه داده جديد
فرض ديگري كه سيستم تأييد اعتبار Postgres بصورت پيش فرض انجام مي دهد اين است كه براي هر نقشي كه براي ورود به سيستم استفاده مي شود ، آن نقش يك بانك اطلاعاتي با همان نام دارد كه مي تواند به آن دسترسي داشته باشد.
اين بدان معني است كه اگر كاربري كه در آخرين بخش ايجاد كرده ايد ، sammy ناميده شود ، آن نقش سعي خواهد كرد به بانك اطلاعاتي وصل شود كه به طور پيش فرض “sammy” ناميده مي شود. مي توانيد با دستور ايجاد شده ، بانك اطلاعاتي مناسب ايجاد كنيد.
اگر به عنوان حساب postgres وارد شويد ، چيزي مانند اين تايپ ميكنيد:
postgres@server:~$ createdb sammy
از سوي ديگر ، اگر ترجيح مي دهيد بدون تغيير حساب عادي خود ، از sudo براي هر فرمان استفاده كنيد ، تايپ كنيد:
$ sudo -u postgres createdb sammy
اين انعطاف پذيري در صورت نياز چندين مسير ايجاد مي كند.
مرحله 5 – باز كردن اعلان Postgres با نقش جديد
براي ورود با تأييد هويت مبتني بر ident ، به استفاده از كاربر لينوكس با همان نام نقش و پايگاه داده Postgres خود نياز خواهيد داشت.
اگر يك كاربر لينوكس با اين ويژگي ها در دسترس نداريد ، مي توانيد يك كاربر با دستور adduser ايجاد كنيد. شما بايد اين كار را از حساب غير ريشه خود با امتيازات sudo انجام دهيد (به اين معني كه به عنوان كاربر postgres وارد نشويد):
$ sudo adduser sammy
پس از در دسترس بودن اين حساب جديد ، مي توانيد با تايپ كردن اين دستور به پايگاه داده وصل شويد:
$ sudo -i -u sammy
$ psql
يا مي توانيد اين كار را بصورت درون خطي انجام دهيد:
$ sudo -u sammy psql
با فرض اينكه همه مولفه ها به درستي پيكربندي شده اند ، اين دستور شما را به طور خودكار وارد سيستم مي كند.
اگر مي خواهيد كاربر شما به يك پايگاه داده ديگر متصل شود ، مي توانيد با مشخص كردن ديتابيس اين كار را انجام دهيد:
$ psql -d postgres
پس از ورود به سيستم ، مي توانيد اطلاعات مربوط به اتصال فعلي خود را با تايپ كردن بررسي كنيد:
Sammy=# conninfo
Output
You are connected to database “sammy” as user “sammy” via socket in “/var/run/postgresql” at port
اين امر در صورت اتصال به پايگاه داده هاي غير پيش فرض يا با كاربران غير پيش فرض مفيد خواهد بود.
مرحله 6 – ايجاد و حذف جداول
اكنون كه مي دانيد چگونه به سيستم پايگاه داده PostgreSQL وصل شويد ، مي توانيد برخي از وظايف اساسي مديريت Postgres را ياد بگيريد.
تركيب اصلي براي ايجاد جداول به شرح زير است:
CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);
همانطور كه مشاهده مي كنيد ، اين دستورات جدول را نامگذاري ميكنند و سپس ستون ها و همچنين نوع ستون و حداكثر طول داده هاي فيلد را مشخص مي كنند. همچنين مي توانيد محدوديت هاي جدول را براي هر ستون به صورت اختياري اضافه كنيد.
در اينجا مي توانيد درباره نحوه ايجاد و مديريت جداول در Postgres اطلاعات بيشتري كسب كنيد.
براي اهداف نمايشي ، جدول زير را ايجاد كنيد:
Sammy=# CREATE TABLE playground (
Sammy=# equip_id serial PRIMARY KEY,
Sammy=# type varchar (50) NOT NULL,
Sammy=# color varchar (25) NOT NULL,
Sammy=# location varchar(25) check (location in (‘north’, ‘south’, ‘west’, ‘east’, ‘northeast’, ‘southeast’, ‘southwest’, ‘northwest’)),
Sammy=# install_date date
Sammy=#);
اين دستور يك جدول ايجاد مي كند كه تجهيزات زمين بازي را ذخيره مي كند. اولين ستون در جدول شماره شناسه تجهيزات از نوع سريال را نگه مي دارد كه يك عدد صحيح است و به صورت خودكار افزايش مي يابد. اين ستون همچنين داراي محدوديت PRIMARY KEY ميباشد ، بدين معني كه مقادير موجود در آن بايد منحصر به فرد باشند و null (صفر) نباشند.
دو خط بعدي به ترتيب ستون هايي براي نوع و رنگ تجهيزات ايجاد مي كنند كه هيچ يك از آنها نمي تواند خالي باشد. خط بعد از اينها يك ستون موقعيت مكاني و همچنين محدوديتي ايجاد مي كند كه بايد يكي از هشت مقدار ممكن باشد. خط آخر يك ستون تاريخ ايجاد مي كند كه تاريخ نصب تجهيزات را ثبت مي نمايد.
براي دو ستون (equip_id و install_date) ، دستورموجود طول فيلد را مشخص نمي كند. دليل اين امر اين است كه برخي از انواع داده ها به طول مشخص نياز ندارند زيرا طول يا قالب آن بيان ميشود.
مي توانيد جدول جديد خود را با تايپ كردن اين دستور مشاهده كنيد:
Sammy=# d
Output
List of relations
Schema | Name | Type | Owner
——–+————————-+———-+——-
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
جدول زمين بازي شما اينجاست ، اما چيزي به نام playground_equip_id_seq نيز وجود دارد كه از نوع توالي است. در واقع نمايشي از نوع سريال است كه شما به ستون equip_id خود داده ايد. اين ستون شماره بعدي در توالي را دنبال مي كند و به طور خودكار براي ستون هاي اين نوع ايجاد مي شود.
اگر مي خواهيد فقط جدول بدون ترتيب را ببينيد ، مي توانيد تايپ كنيد:
Sammy=# dt
Output
List of relations
Schema | Name | Type | Owner
——–+————+——-+——-
public | playground | table | sammy
(1 row)
اكنون جدول آماده است ، بياييد از آن براي تمرين مديريت داده استفاده كنيم.
مرحله 7 – افزودن ، پرس و جو و حذف داده ها در يك جدول
اكنون كه جدولي داريد ، مي توانيد برخي از داده ها را در آن وارد كنيد. به عنوان نمونه ، با فراخواني جدول مورد نظر براي اضافه كردن ، نامگذاري ستونها و سپس تهيه داده براي هر ستون ، slide و swing اضافه كنيد ، مانند اين:
Sammy=# INSERT INTO playground (type, color, location, install_date) VALUES (‘slide’, ‘blue’, ‘south’, ‘2017-04-28’);
Sammy=# INSERT INTO playground (type, color, location, install_date) VALUES (‘swing’, ‘yellow’, ‘northwest’, ‘2018-08-16’);
بايد هنگام وارد كردن داده ها مراقب باشيد تا از مشكلات و قطعي هاي معمول جلوگيري كنيد. اولا نام ستون ها را در علامت نقل قول قرار ندهيد ، فقط مقادير ستوني كه وارد مي كنيد به نقل قول نياز دارند.
نكته ديگري كه بايد در نظر داشته باشيد اين است كه براي ستون equip_id مقداري وارد نمي كنيد. دليل اين امر اين است كه هر زمان كه يك رديف جديد به جدول اضافه كنيد ، به طور خودكار ايجاد مي شود.
با تايپ كردن اين دستور اطلاعاتي كه اضافه كرده ايد بازيابي كنيد:
Sammy=# SELECT * FROM playground;
Output
equip_id | type | color | location | install_date
———-+——-+——–+———–+————–
1 | slide | blue | south | 2017-04-28
2 | swing | yellow | northwest | 2018-08-16
(2 rows)
در اينجا ، مي بينيد كه equip_id شما با موفقيت پر شده است و تمام داده هاي ديگر شما به درستي سازماندهي شده اند.
اگر اسلايد روي زمين بازي خراب شد و مجبور شديد آن را حذف كنيد ، مي توانيد با تايپ دستور زير آن سطر از جدول خود حذف كنيد:
Sammy=# DELETE FROM playground WHERE type = ‘slide’;
جدول را دوباره پرس و جو كنيد:
Sammy=# SELECT * FROM playground;
Output
equip_id | type | color | location | install_date
———-+——-+——–+———–+————–
2 | swing | yellow | northwest | 2018-08-16
(1 row)
توجه كنيد كه رديف اسلايد ديگر جزئي از جدول نيست.
مرحله 8 – اضافه كردن و حذف ستون ها از يك جدول
پس از ايجاد جدول مي توانيد با اضافه كردن يا حذف ستون ها آن را تغيير دهيد. با تايپ دستور زير، براي نمايش آخرين بازديد از نگهداري از هر قطعه تجهيزات ، يك ستون اضافه كنيد:
Sammy=# ALTER TABLE playground ADD last_maint date;
اگر اطلاعات جدول خود را دوباره مشاهده كنيد ، مي بينيد كه ستون جديد اضافه شده است اما هيچ داده اي وارد نشده است:
Sammy=# SELECT * FROM playground;
Output
equip_id | type | color | location | install_date | last_maint
———-+——-+——–+———–+————–+————
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
اگر متوجه شديد كه خدمه كاري شما از يك ابزار جداگانه براي پيگيري سابقه نگهداري استفاده مي كنند ، مي توانيد ستون را با تايپ دستور زير حذف كنيد:
Sammy=# ALTER TABLE playground DROP last_maint;
اين دستور ستون last_maint و مقادير موجود در آن را حذف مي كند ، اما تمام داده هاي ديگر را دست نخورده نگه ميدارد.
مرحله 9 – بروزرساني داده ها در يك جدول
تاكنون ياد گرفته ايد كه چگونه مي توانيد سوابق را به يك جدول اضافه كنيد و چگونه آنها را حذف كنيد ، اما اين آموزش هنوز نحوه تغيير ورودي هاي موجود را پوشش نداده است.
مي توانيد مقادير ورودي موجود را با جستجوي ركورد مورد نظر خود به روز كنيد و ستون را روي مقدار مورد نظر خود تنظيم كنيد. مي توانيد ركورد swing را درخواست كنيد (با هر swing در جدول شما مطابقت دارد) و رنگ آن را به رنگ قرمز تغيير دهيد. وقتي swing را براي رنگ كاري تنظيم كنيد، اين امر مي تواند مفيد باشد :
Sammy=# UPDATE playground SET color = ‘red’ WHERE type = ‘swing’;
با پرس و جوي دوباره داده ها ، مي توانيد تأييد كنيد كه اين عمليات با موفقيت انجام شد:
Sammy=# SELECT * FROM playground;
Output
equip_id | type | color | location | install_date
———-+——-+——-+———–+————–
2 | swing | red | northwest | 2018-08-16
(1 row)
همانطور كه مشاهده مي كنيد ، اكنون اسلايد به عنوان قرمز ثبت شده است.
نتيجه
اكنون PostgreSQL را روي سرور مجازي Ubuntu 20.04 خود تنظيم كرده ايد. اگر مي خواهيد در مورد Postgres و
نحوه استفاده از آن اطلاعات بيشتري كسب كنيد، توصيه مي كنيم راهنماهاي زير را بررسي كنيد:
• مقايسه سيستم هاي مديريت پايگاه داده رابطه اي
• كار با پرس و جوهاي در حال اجرا با SQL
برچسبها:Postgres, PostgreSQL, Ubuntu 20.04