[�ۡ���] -> [Aache + PHP + PostgreSQL �¸���]

PostgreSQL ������

�ӥ塼

�ǡ����١����ˤϡ��ӥ塼�ȸƤФ���Τ�¸�ߤ��ޤ������̡��ơ��֥뤫��ǡ�����ɽ������Ȥ��ˤϡ�select ʸ��Ȥ��ޤ����������ӥ塼�Ȥ�����Ͽ���Ƥ������Ȥ�����ޤ����������Ѥ��� meibo �ơ��֥�򸵤ˡ�ǯ�� 23 �ͤΥǡ����������򤹤� select ʸ�����ä��Ȥ��ޤ���

=> insert into meibo values ('Jangon Source', 23, 'Public');
INSERT 16607 1
=> insert into meibo values ('Splint Coocer', 23, 'Onittor');
INSERT 16608 1
=> select * from meibo;
      name       | age |      address
-----------------+-----+--------------------
 Atsuzaki Hizuya |  23 | Tokyo dokoka 1-2-3
 Ryouma Sakamoto |  31 | Kouchi Tosa
 Jangon Source   |  23 | Public
 Splint Coocer   |  23 | Onittor
(4 rows)

=> select * from meibo where age = 23;
      name       | age |      address
-----------------+-----+--------------------
 Atsuzaki Hizuya |  23 | Tokyo dokoka 1-2-3
 Jangon Source   |  23 | Public
 Splint Coocer   |  23 | Onittor
(3 rows)

�����Ƥ��� select ʸ�� age23 �Ȥ���̾���Υӥ塼�ˤ��ޤ���

=> create view age23 as select * from meibo where age = 23;
CREATE

�ӥ塼�ϡ��ơ��֥��Ʊ���褦��������ޤ���

=> select * from age23;
      name       | age |      address
-----------------+-----+--------------------
 Atsuzaki Hizuya |  23 | Tokyo dokoka 1-2-3
 Jangon Source   |  23 | Public
 Splint Coocer   |  23 | Onittor
(3 rows)

=> select * from age23 where name like '%o%';
      name       | age |      address
-----------------+-----+--------------------
 Jangon Source   |  23 | Public
 Splint Coocer   |  23 | Onittor
(2 rows)

���Τ褦�ˡ��������ξ����դ��� SQL ʸ�򡢥ӥ塼�Ȥ�����Ͽ���Ƥ��������Υӥ塼�� select ���뤳�Ȥˤ�ꡢ��������ꤷ�ʤ��Ƥ⤹��褦�ˤʤ�ޤ�����ηи��Ǥ������������Τ褦�ʡ�where ����դ����ӥ塼��ꡢ���䤤��碌�䡢�������ʸ���������ޤ��ˤʤɤ�Ȥä� select ʸ��ӥ塼�Ȥ�����Ͽ���륱������¿���褦�Ǥ���

����ǥå���

���ơ�PostgreSQL ��ǡ����١����Ǥ����顢��������Υǡ�������Ͽ�����礬����Ȼפ��ޤ����ǡ����١��������ϳ�줺���������ä���祤��ǥå�����ĥ��ɬ�פ��ФƤ��ޤ������Ȥ��С�where ��� code = 1 �ȸ��ä������򤹤�Ȥ���code �Υ���ǥå������äƤ����С�����ǥå����򸵤˸����򤷤ޤ����⤷����ǥå������ʤ����ϡ����Υơ��֥�γ����������ƤΥ�����õ��ɬ�פ��ФƤ��ޤ�������Ͽ�ɴ��Ȥ����ǡ����̤ʤ���Ф��Ƶ��ˤʤ�ޤ��󤬡�������Ȥ���ñ�̤ˤʤ�ȡ����ʤ��äƤ��ޤ����������äơ������˻Ȥ��Ƥ��륫���ˤϡ�����ǥå�������Τ����ܤǤ����㳰�ˤĤ��Ƥϸ�Ҥ��ޤ��ˡ��Ǥϡ��ºݤ˥���ǥå������äƤߤޤ��礦��

=> create index profile_code on profile (code);

������Ǥϡ�profile �Ȥ����ơ��֥�� code �Ȥ��������˥���ǥå������äƤ��ޤ���profile_code �ȸ����Τϡ�����ǥå���̾�Ǥ����ºݤˤϲ��Ǥ⤫�ޤ��ޤ��󡣤����������ˡ�����ǥå������äƤ����ȡ�where ��Ǥθ����κݤˡ�����ǥå�����ȤäƸ����򤷤Ƥ���ޤ���

����ǥå����ˤϡ���ˡ�������ǥå����ȸƤФ���Τ�����ޤ�������ϡ�����ǥå����˳�Ǽ�����ͤ���ʣ���ʤ��Τ��ݾڤ��ޤ������Τ褦�˥���ǥå������ä���硢��ˡ�������ǥå����ˤʤ�ޤ���

=> create unique index profile_code on profile (code);

����������ϡ��ǡ�����������insert�ˤ���Ȥ��ˡ�code ��Ʊ���ͤ����äƤ�����硢���顼�Ȥʤä���Ͽ�Ǥ��ʤ��ʤ�ޤ���Ʊ���ǡ�������Ͽ�������ʤ��Ȥ��ϡ����Υ�ˡ�������ǥå�������������Ǥ����ޤ���®���̤Ǥ⡢�����Υ���ǥå�����ꡢ����®��������Ԥ����Ȥ��Ǥ��ޤ���

�¹�®��

�ǡ����̤�¿���ʤäƤ���ȡ�SQL �μ¹�®�٤�����ȤʤäƤ����礬����ޤ�������β����ˡ�Ȥ��ơ�����ǥå������뤳�Ȥ��������ޤ����������������դ��ʤ���Ф����ʤ��Τϡ�ɬ�����⥤��ǥå��������®���ʤ�櫓�ǤϤʤ��Ȥ������ȤǤ����ɤ������뤳�ȤǤ������ͤ�ʬ�ۤ��������Ȥ��ˤϥ���ǥå�������٤��ǤϤ���ޤ����㤨�С����̤Υե�����ɤ����ä��Ȥ��ޤ������Υ����ˤϡ������פȡ����פȤ�����������ͤ������äƤ��ʤ��ä��Ȥ��ޤ����������ä��þ��ϡ��ְ㤤�ʤ�����ǥå���������٤��ʤäƤ��ޤ��ޤ����դˡ���ˡ�������ǥå����Τ褦���ͤν�ʣ���ʤ��������Ф��ƤϤ�äȤ���̤��⤤�ΤǤ���

����ǥå�����ͭ���˻Ȥ��ˤϡ����Ū�� vacuumdb ���ޥ�ɤ�¹Ԥ���ɬ�פ�����ޤ�������ϡ�Oracle �ʤɤǤϤʤ��ߤο������׾�����������륢�ʥ饤���Ǥ��ʤ���ʳ��ˡ��������Ѥ���ơ����϶����Ƥ�����¸�ΰ������ѤǤ���褦�ˤ⤷�ޤ��ˡ��ä˥��ץ�������ꤷ�ʤ��ȡ��ơ��֥뤴�Ȥ˥ǡ�������ʤɴ�ñ�����׾�����������ޤ�����-z���ץ�������ꤹ��ȡ����󤴤Ȥ˥ǡ���ʬ�ۤ����׾�����������褦�ˤʤ�ޤ����������-z ���դ��Ƽ¹Ԥ����ۤ��������Ȼפ��ΤǤ������ǡ��������¿������ vacuumdb ���ޥ�ɤμ¹ԤˤȤƤ���֤������äƤ��ޤ��ޤ���vacuumdb ���ޥ�ɤ�Ȥ����ɤ�����-z ���ץ������դ��뤫�ɤ������Ȥ����Τϡ��¹Ի��Υѥե����ޥ󥹤ȥǡ����١����α�����ˡ������Ǥ��Τǡ��褯��Ƥ���Ƥ���������

vacuumdb ���ޥ�ɤϡ��ºݤˤ� vacuum �Ȥ��� SQL ʸ��¹Ԥ��Ƥ��ޤ����¹ԴĶ��ˤ�äơ�vacuumdb ���ޥ�ɤ� vacuum SQL ʸ�ι����ʤۤ���Ȥ����Ȥ�����ޤ���PostgreSQL 7.2 ���顢vacuum ʸ�� analyze ʸ��ʬΥ����Ƥ��ޤ���vacuum analyze ʸ�� analyze ʸ�������Τ褦�Ǥ����ޤ��������� vacuum ʸ�μ¹���ϡ��ơ��֥���å���ȯ�����ޤ�������7.2 ����ϥ��å�����ޤ��󡣤��Τ���ꡢ�ơ��֥륵�����⾮�����ʤ�ʤ��ʤä��Τǡ�������Ʊ���褦�˥ơ��֥륵������̤᤿�����ϡ�vacuum full ʸ��vacuumdb -f ���ޥ�ɡˤ�Ȥ�ɬ�פ�����ޤ��ʤ��ξ�硢�ơ��֥���å���ȯ�����ޤ��ˡ�

���� vacuumdb �ˤ�ä��������׾���ϡ������κݤ����Ѥ���ޤ������׾���ϡ��ǡ������ɲá�������������Ƥ��������˸Ť��ʤäƤ��ޤ��Τǡ�vacuum �ʳ��Ǥ����׾��󤬹�������ʤ����ᡢ�ºݤΥǡ��������׾��󤬰�äƤ���ˡ����˰��٤䡢���˰��٤ʤɡ����Ū�˼¹Ԥ���褦�ˤ��ޤ��礦��cron �ˤʤ���Ͽ���Ƥ������ɤ����⤷��ޤ����cron �ˤĤ��Ƥϡ�man 5 crontab �ʤɤȤ��ơ��ޥ˥奢����ɤ�Ǥ��������ˡ�

> crontab -l
00 04 * * * /usr/local/pgsql/bin/vacuumdb -t �ơ��֥�̾ �ǡ����١���̾

vacuumdb �ϡ�-t ���ץ�������ꤷ�ơ��ơ��֥�̾��Ĥ��ʤ���С����ơ��֥���Ф��Ƽ¹Ԥ�Ԥ��ޤ���

������Ρ�SQL ���塼�˥��Ǥ⤦�����ܤ����������Ƥ��ޤ���

�����ƥ५������

PostgreSQL �������Τ��Ȥʤ��顢¿���Υ����ƥ५������������ޤ���¾�� RDBMS �ʤɤǤϡ������ƥ�ǥ�������ʥ�ȸ��äƤ��뤫���Τ�ޤ��󡣥����ƥ५�������Ȥϡ��ǡ����١���������Ū�ʾ�����Ǽ���Ƥ����ü�ʥơ��֥�ʥӥ塼�ξ��⤢��ˤǡ��ǡ����١�����ɬ��¸�ߤ����ΤǤ����ǡ����١����ξ��֤��Ѥ��ȡ���ưŪ�ˤ�����˳�Ǽ����Ƥ����ͤ��ѹ�����ޤ����������äơ����Υ����ƥ५�������򸫤뤳�Ȥˤ�ꡢ�ǡ����١�������������򻲾Ȥ��뤳�Ȥ������ΤǤ���

PostgreSQL �Ǥϡ������ƥ५�������� ��pg_�פǻϤޤꡢ���Τ褦�ʤ�Τ�����ޤ���

���פʥ����ƥ५������
�ơ��֥�̾ ����
pg_database ¸�ߤ������ƤΥǡ����١���
pg_class ���ƤΥ��饹�ʥơ��֥롦�������󥹡�����ǥå������ӥ塼�ˤ˴ؤ������
pg_type ���ƤΥǡ������˴ؤ������
pg_proc ���Ƥδؿ��˴ؤ������
pg_user ��Ͽ����Ƥ�桼������
pg_tables ���ƤΥơ��֥�˴ؤ����ñ�ʾ���
pg_indexes ���ƤΥ���ǥå����˴ؤ������
pg_views ���ƤΥӥ塼�˴ؤ������

����ʳ��ˤ⥷���ƥ५�������Ϥ���ޤ�����pg_class �򸫤�С��ɤ�ʤ�Τ����뤫�狼��ޤ����ơ��֥�Υ����ʤ䡢�ؿ��ΰ����Υǡ������ʤɤ�Ĵ�٤뤳�Ȥ��Ǥ��ޤ�������Ǥ���Ф����ɡ������ˡ��ɥ�����Ȥ�õ���Ƥ⡢���פʥ����ƥ५���������Ф������������ʤ��褦�ǡ�����äȤ狼��ʤ���ʬ�⤢��ޤ�������ɬ�פˤʤäƤ���ΤdzФ��Ƥ�����»�Ϥʤ��Ǥ��礦��pg_proc �� pg_type �ʤ󤫤ϡ����������ʤ�Τ����äơ��ȤäƤߤ����ʤ�ޤ��͡��Ǥ⡢�ɥ�����Ȥ����Ĥ���ʤ��ΤǤ����ɡ�������

¾�Υ桼���ȥǡ����ζ�ͭ

�ؤ�ɤΥǡ����١����ϡ��������ƥ��γ�ǰ����äƤ��ޤ����������PostgreSQL ���㳰�ǤϤʤ����������������¡����ݡ���������Ԥ����Ȥ��Ǥ��ޤ��������������������դ��ʤ���Фʤ�ʤ��Τϡ��ǥե���Ȥ�����Ǥϡ�PostgreSQL ���Ȥ��ä˥桼��������ԤäƤ��ʤ����Ǥ�����createuser ���ޥ�ɤǥ桼�����ä����פȡ����������⤤�뤫���Τ�ޤ��󡣤������������ UNIX ��Ρ֤��Υ桼�������ѵ��Ĥ�Ϳ����פȸ��ä����٤Τ�ΤǤ���PostgreSQL ���Ȥ��ѥ���ɤ���������������������ԤäƤ���櫓�ǤϤ���ޤ��󡣥�����������ϡ�OS ��Ǥ����OS �˥������󤷤��桼���ǡ�PostgreSQL ����Ͽ���줿�桼���Ǥ���С����ѤǤ��ޤ����������ä���̣�Ǥϡ�PostgreSQL ���桼��������ԤäƤ���Ȥϸ����ʤ��Ǥ��礦���Ǥϡ�����ʳ��Υ������ƥ��Ȥϲ�����äƤ���ΤǤ��礦��

PostgreSQL �ξ�硢���ƤΥ��饹�ʥơ��֥�ˤ˥����������¤�����ޤ�������ϡ�SQL ʸ�� grant ʸ�ȡ�revoke ʸ�ˤ�äƴ������뤳�Ȥ��Ǥ��ޤ������饹�ϡ�����Ū�ˡ���ä��ͤ�������ˤʤꡢ�����ơ����Υ��饹�δ����Ԥˤʤ�ޤ�����ä��ͤϡ����Υ��饹�κǹ⸢�¤���äƤ��ơ����Υ��饹�˥ǡ�������Ͽ�����ꡢ����������ѹ�������Ǥ��ޤ����Ȥ�������¾�Υ桼���ϡ����Υ��饹����Ͽ����Ƥ���ǡ������Τ򸫤뤳�Ȥ��Ǥ��ޤ��󡣤�������ѹ�������Ԥ����ȤϤǤ��ޤ��󡣤Ǥϡ��ɤ������顢¾�Υ桼���˥ǡ���������������ɤ��ΤǤ��礦�����λ�����ۤ�̾����Ф�����grant ʸ��Ȥ��ޤ���grant ʸ�ι�ʸ�ϡ���ñ�˽񤯤ȼ��Τ褦�ˤʤ�ޤ���

=> grant ��� on ���饹 to �桼��;

���פ���������ȡ��֥��饹�פ��Ф�������פ�֥桼���פ˵��Ĥ��롣�ȡ�������̣�ˤʤ�ޤ��������פ���ʬ�ˤϡ���all, select, insert, update, delete, rule, references, trigger�פΤ����줫�����뤤�ϡ�����ޡ�,�פǶ��ڤä�ʣ������Ǥ��ޤ�������ϡ��ޤ��狼���̤ꡢ�¹Ԥ���Ĥ��� SQL ʸ�Ǥ���all �����Ƶ��Ĥ��ޤ����֥��饹�פˤϡ�������󥯥饹����ꤷ�ޤ�������ϡ�����ޤǶ��ڤä�ʣ������Ǥ��ޤ����Ǹ�Ρ֥桼���פϡ�public�פ����桼��̾���ޤ��ϡ�group ���롼��̾�ʸ���������ޤ��ˡפ����Ǥ��ޤ���public �ϡ����桼�����оݤˤʤ�ޤ����桼��̾�ϡ�������󡢥ǡ����١�������Ͽ���Ƥ���桼��̾�Ǥ��������ƥ५�������� pg_user �ˤϡ���Ͽ����Ƥ���桼���ΰ�������Ǽ����Ƥ��ޤ���psql �ʤɤǡ�select * from pg_user; �Ȥ���ȡ������ޤ����ˡ�

�ۡ����