سیستم مدیریت پایگاه داده PostgreSQL

سیستم مدیریت پایگاه داده رابطه ای جز اصلی وب سایت ها و برنامه های کاربردی می باشد. این سیستم یک روش ساختاری برای ذخیره سازی، سازمان بندی و دسترسی به اطلاعات را فراهم می نماید. در اینجا به بررسی روش نصب و استفاده از سیستم مدیریت پایگاه داده PostgreSQL در توزیع لینوکس Ubuntu 16.04 و برخی دستورهای اولیه این پایگاه داده می پردازیم. PostgreSQL یا Postgre یک سیستم مدیریت پایگاه داده رابطه ای است از زبان SQL Query می باشد PostgreSQL .یک پایگاه داده بسیار محبوب برای پروژه های کوچک و بزرگ است و مزیت آن سازگاری با استاندارد ها است و دارای ویژگی های پیشرفته مانند ارتباطات پایدار با دیتابیس و همزمانی بدون خواندن قفل ها است.

نصب PostgreSQL

خوشبختانه بسته پیش فرض Ubuntu شامل بسته Postgres می باشد و که با مدیریت بسته aptبه راحتی می توانیم آن را نصب کنیم. از آنجایی که در این آموزش از apt برای اولین بار استفاده می کنیم، نیاز است اطلاعات بسته های آن را به روز نماییم، و بعد از آن می توانیم بسته Postgre و بسته های-contrib را برای اضافه کردن برخی ابزارها و عملکرد ها نصب کنیم:

# sudo apt-get update
# sudo apt-get install postgresql postgresql-contrib

پس از نصب این برنامه می توانیم به بررسی نحوه استفاده از آن پرداخته و تفاوت های آن را با سیستم های مدیریت پایگاه داده های مشابه دیگر بررسی نماییم.

استفاده از نقش ها ودیتابیسPostgreSQL

به صورت پیش فرض PostgreSQL از مفهومی به نام Roles برای مدیریت احراز هویت و مجوزهای دسترسی استفاده می کند. که شبیه به حسابهای معمولی یونیکس می باشد، که بین کاربران و گروه ها تمایزی قائل نیست بدین منظور PostgreSQL واژه ی Roles را ترجیح می دهد. نقش ها می توانند برای یک یا چند کاربر یا گروه مجوزهای دسترسی متفاوتی تعریف نمایند. همراه با نصب Postgre احراز هویت identنیز راه اندازی می شود، که نقش های Postgre را به کاربران لینوکس / یونیکس متصل می کند. اگر یک Roles در Postgre وجود داشته باشد، کاربر لینوکس می تواند با آن Roles وارد شود. چند روش دیگر برای ورود کاربران به لینوکس جهت استفاده از Postgreوجود دارد.

ورود به حساب کاربری postgres

در فرآیند نصب یک کاربر با نام postgres ساخته می شود که به Role پیش فرض postgres متصل است. با دستور زیر می توانید به این کاربر منتقل یا جا به جا شوید :

$ sudo -i -u postgres

با دستور زیر می توانید به خط فرمان postgres دسترسی داشته باشید و از این طریق به سیستم وارد شده و با مدیریت پایگاه داده ارتباط برقرارنمایید.

$ psql

برای خروج از خط فرمان PostgreSQL می توانید از دستور زیر استفاده نمایید که بعد از اجرای این دستور باید به محیط خط فرمان لینوکس برگردانده شوید.

postgres=# \q

 دسترسی به خط فرمان postgres بدون انتقال کاربر

شما می توانید مطابق دستور زیر مستقیما و بدون واسط shell به خط فرمان postgresدسترسی داشته باشید:

$ sudo -u postgres psql

همچنین با دستور زیر می توانید از نشست postgresفعالی که در آن هستید خارج شوید:

postgres=# \q

ایجاد یک نقش جدید

در حال حاضر فقط یک postgres در پایگاه داده وجود دارد. با دستور createrole می توانیمRole جدید ایجاد کنیم. که گزینه --interactive مقادیر مورد نیاز را از شما می گیرد. اگر با کاربر postgres وارد می شوید می توانید برای ساخت نقش جدید دستور زیر را وارد نمایید:

postgres@server:~$ createrole --interactive

اگر به جای تغییر کاربر ترجیح می دهید از sudo استفاده کنید دستور زیر را وارد نمایید:

$ sudo -u postgres createrole --interactive

در ادامه اجرای اسکریپت، سوالاتی از شما پرسیده می شود که با پاسخ مناسب می توانید مشخصات Role جدید را تنظیم نمایید:

Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y

همچنین با مطالعه راهنما man می توانید اطلاعات بیشتری در مورد گزینه های دیگر این دستور بدست آورید:

$ man createrole

ساخت یک دیتابیس جدید

به صورت پیش فرض، در سیستم احراز هویت postgresیک دیتابیس هم نام با نام Role ایجاد شده، وجود دارد که آن Role به دیتابیس متصل است و برای ورود از آن استفاده می شود. در قسمت قبل یک کاربر با نام sammy ایجاد کردیم، و در اینجا باید یک دیتابیس با نام Sammy نیز ایجاد کنیم که Role کاربر sammy به آن دسترسی داشته باشد. برای ایجاد دیتابیس جدید از دستور created استفاده می کنیم اگر با کاربر postgres وارد شده اید دستور زیر را وارد نمایید:

postgres@server:~$ createdb sammy

اگر می خواهید مانند قبل بدون تغییر کاربر وارد شوید دستور sudo را مطابق زیر وارد نمایید:

$ sudo -u postgres createdb sammy

باز کردن خط فرمان با نقش جدید

برای وارد شدن به سیستم احراز هویت ident باید یک کاربر لینوکسی هم نام با نقش و دیتابیس ایجاد شده داشته باشید. اگر کاربری با این نام ندارید با دستور adduser می توانید یک کاربر جدید در لینوکس بسازید. برای اجرای این دستور باید دسترسی کاربر با مجوز sudo را داشته باشید (کاربری به غیر از postgres)

$ sudo adduser sammy

وقتی که کاربر مورد نظر را ایجاد کردید می توانید با دستور زیر وارد شوید:

$ sudo -i -u sammy
$ psql

همچنین می توانید از دستور زیر هم استفاده نمایید:

$ sudo -u sammy psql

با فرض اینکه همه چیز درست تنظیم شده باشد، شما می توانید وارد سیستم شوید. اگر می خواهید به دیتابیس دیگری متصل شوید به صورت زیر عمل نمایید:

$ psql -d postgres

پس از اتصال، می توانید اطلاعات خود را با دستور زیر بررسی نمایید:

sammy=# \conninfo
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

اگر با کاربر یا دیتابیس پیش فرض وارد نشده اید، اطلاعات بالا می تواند مفید باشد.

ایجاد و حذف جداول

اکنون وارد PostgreSQL شده و به دیتابیس هم متصل شده اید، حال می توانید وظایف اصلی دیگری را انجام دهید. در ابتدا یک جدول برای ذخیره برخی داده ها ایجاد نمایید. دقت کنید که در ابتدا باید به PostgreSQL وارد شوید و همانطور که قبلا گفتیم، دیتابیس مورد نظر را انتخاب و سپس اقدام به ایجاد جدول در آن دیتابیس نمایید. برای شروع یک جدول ایجاد می کنیم که اطلاعات یک زمین بازی را ذخیره می کند. شکل عمومی برای این کار شبیه دستور زیر می باشد:

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

با توجه به دستور زیر یک نام برای جدول انتخاب نمایید و ستون هایی در آن تعریف کردیم، همچنین نوع ستون و بیشترین طول هر رشته داده را تعیین کردیم و همچنین می توانیم برای هر ستون به صورت دلخواه محدودیت هایی را قراردهیم.

CREATE TABLE playground (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    install_date date
);

اکنون یک زمین بازی را با مشخصات مد نظرمان ایجاد کردیم که این مشخصات با یک ID از نوع serial شروع می شود. نوع داده serial، یک عدد integer می باشد که به صورت خودکار افزایش می یابد همچنین این ستون را به صورت primery key با یک مقدار تعریف کرده ایم، که این مقدار حتما باید منحصر به فرد و غیر تکراری باشد. مقدار بیشترین طول را برای دو تا از ستون ها equip_id و install_date تعیین نکردیم، به این دلیل که محدودیت اندازه طول به صورت ضمنی در نوع داده ای این ستون ها تعریف شده است. برای ستون های type و color باید مقدار مشخص کنیم.

یک ستون با نام location که مقادیر آن به هشت مقدار ممکن محدود شده است ایجاد می نماییم،که فقط باید یکی از این مقادیر را داشته باشد. . آخرین ستون نیز برای تاریخ است که هنگام ایجاد مشخصات زمان سیستم را گرفته و ذخیره می کند.

جدول ایجاد شده را به صورت زیر می توانیم مشاهده نماییم:

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 و نوع داده sequence را نیز می توانید مشاهده نمایید، که این جدول نماینده نوع داده serial است که برای ستون equip_id تعیین کرده ایم. این جدول به صورت خودکار برای ستون هایی از نوع serial ایجاد می شود که یک دنباله عددی را ایجاد و شماره بعدی این سری را نگهداری می کند. اگر می خواهید که جدول را بدون دنباله مشاهده کنید، دستور زیر را وارد نمایید:

sammy=# \dt
          List of relations
 Schema |    Name    | Type  | Owner 
--------+------------+-------+-------
 public | playground | table | sammy
(1 row)

اضافه کردن، گزارش گرفتن و حذف داده در جدول

اکنون یک جدول داریم که می توانیم داده هایی را به آن اضافه کنیم. در ادامه می خواهیم که یک تاب و یک سرسره به این جدول اضافه کنیم. برای این کار باید نام جدولی را که می خواهیم به آن داده اضافه کنیم را فراخوانی کنیم، سپس نام ستون ها را انتخاب کنیم و داده هایی که به هر ستون باید اضافه شود را قرار دهیم. تاب و سرسره ای که می خواهیم اضافه کنیم به صورت زیر است:

sammy=# INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
sammy=# INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

دقت کنید که هنگام وارد کردن داده ها از اشتباهات رایج جلوگیری نمایید. مثلا نام ستون ها نباید در کوتیشن قرار گیرند ولی داده ها باید در کوتیشن قرار گیرند. نکته مهم دیگر این که به ستون equip_idنباید مقدار بدهید. زیرا هر ردیف جدید که در جدول ایجاد می شود این ستون به صورت خودکار مقدار دهی می شود. با وارد کردن دستور زیر می توانید اطلاعاتی که وارد کرده اید را مشاهده نمایید:

sammy=# SELECT * FROM playground;
 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2014-04-28
        2 | swing | yellow | northwest | 2010-08-16
(2 rows)

در اینجا مشاهده می کنید که ستون equip_id به درستی مقدار دهی شده و بقیه داده ها نیز به درستی در ستون های خود قرار دارند.

اگر در زمین بازی، سرسره خراب شود و بخواهیم آن را حذف کنیم، با دستور زیر اطلاعات آن را از جدول حذف می کنیم:

sammy=# DELETE FROM playground WHERE type = 'slide';

اگر مجددا از جدول گزارش بگیریم، مشاهده می کنید که دیگر سرسره وجود نخواهد داشت:

sammy=# SELECT * FROM playground; equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2010-08-16 (1 row)

چطور ستون های یک جدول را اضافه و حذف کنیم

بعد از ساختن یک جدول به راحتی می توانیم ستونی را به آن اضافه کنیم. برای مثال یک ستون که نشان دهنده آخرین بازدید تعمیرات و نگهداری هر وسیله است را با دستور زیر اضافه می نماییم:

;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 | 2010-08-16   | 
(1 row)

برای حذف یک ستون نیز به راحتی می توانیم این کار را انجام دهیم. فرض کنید که کارمندان زمین بازی از ابزار دیگری برای نگهداری تاریخچه زمان های بازدید تعمیرات و نگهداری استفاده می کنند و دیگر نیازی به این ستون نیست. با دستور زیر می توانیم این ستون را حذف می کنیم:

sammy=# ALTER TABLE playground DROP last_maint;

چطور داده های یک جدول را به روز رسانی کنیم

الان می دانیم که چطور ردیف ها را به یک جدول اضافه و حذف کنیم ولی درباره تغییر و یا اصلاح ورودی های موجود صحبتی نکردیم. بوسیله یک Query می توانید مقدار ورودی موجود بر روی یک ردیف را به روز رسانی کرده و آن را تغییر دهید. برای مثال یک Query بر روی ردیف swing انجام می دهیم ( این تغییر برای تمام ردیف هایی که مقدار swing دارند اعمال می شود ) و رنگ آن را به red تغییر می دهیم. برای این کار به صورت زیر عمل می کنیم:

sammy=# UPDATE playground SET color = 'red' WHERE type = 'swing';

با گزارش گیری از جدول ، صحت عملکرد دستور را مشاهده می کنیم:

sammy=# SELECT * FROM playground;
 equip_id | type  | color | location  | install_date 
----------+-------+-------+-----------+--------------
        2 | swing | red   | northwest | 2010-08-16
(1 row)

همانطور که مشاهده می کنید رنگ تاب به قرمز تغییر کرده است.

نتیجه گیری:

در این مطلب به نصب و راه اندازی پایگاه داده PostgreSQL بر روی Ubuntu 16.04 پرداختیم و دستورات و نحوه کار کردن با آن را بیان کردیم. مطالب بسیار زیاد دیگری برای یادگیری PostgreSQL وجود دارد که سعی می کنیم در مطالب بعدی آن ها را عنوان کنیم.

دانلود فایل PDF این آموزش

  • با خدمات ابری پارس آشنا شوید

    اولین ارائه‌دهنده خدمات رایانش ابری در ایران هستیم

    سرور ابری

    سرور ابری

    چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد

    سرور هیبردی

    سرور هیبردی

    چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد

    سرور ماکرو

    سرور ماکرو

    چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد

    میزبانی ابری

    میزبانی ابری

    چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد

    هاست دانلود

    هاست دانلود

    چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد

    مطالعه این مطالب نیز پیشنهاد می‌شود

    مقالات و نظرات اعضای تیم ما درباره تکنولوژی، روزهای کاری و چیزای دیگر…

  • کلیه حقوق برای شرکت دانش بنیان پارس پک محفوظ می باشد.

    Copyright © 2019 Pars Parva System Ltd. ParsPack Cloud Computing Technology ® , All Rights Reserved.