°³¹ßÀÚ¸¦ À§ÇÑ PostgreSQL FAQ (ÇѱÛÆÇ)

¸¶Áö¸·À¸·Î °íÄ£ ³¯Â¥: 1998³â 5¿ù 25ÀÏ

¿µ¹®ÆÇÀ» °ü¸®ÇÏ´Â »ç¶÷: Bruce Momjian ( maillist@candle.pha.pa.us)
ÇѱÛÆÇÀ» °ü¸®ÇÏ´Â »ç¶÷: Á¤Á÷ÇÑ (honest@hitel.net)

ÀÌ ¹®¼­ÀÇ °¡Àå ÃÖ½ÅÆÇÀº PostgreSQL À¥»çÀÌÆ®, http://postgreSQL.org ¿¡¼­ ãÀ» ¼ö ÀÖ½À´Ï´Ù.


´äÀÌ Á¦½ÃµÈ Áú¹®µé:

1) °³¹ßÀÚµéÀ» À§ÇÑ ÅøµéÀÌ ¾î¶² °ÍÀÌ ÀÖ³ª¿ä?
2) ¾î¶² Ã¥ÀÌ °³¹ßÀڵ鿡°Ô µµ¿òÀÌ µË´Ï±î?
3) ¸Þ¸ð¸®¸¦ ÇÒ´çÇϱâ À§ÇØ ¿Ö palloc() °ú pfree() ¸¦ »ç¿ëÇմϱî?
4) ÀڷᱸÁ¶¸¦ ¸¸µé±â À§ÇØ Node ¿Í List ¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯°¡ ¹¼´Ï±î?
5) ±â´ÉÀ» Ãß°¡Çϰųª ¹ö±×¸¦ ÀâÀ¸·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÏÁÒ?
6) ÇöÀç ¼Ò½º Æ®¸®¸¦ ´Ù¿î·ÎµåÇϰųª °»½ÅÇÏ·Á¸é ¾î¶»°Ô Çմϱî?
7) ³»°¡ º¯°æÇÑ °ÍÀ» ¾î¶»°Ô Å×½ºÆ®Çմϱî?
8) ±¸Á¶Ã¼¿¡ Çʵ带 Çϳª Ãß°¡Çß½À´Ï´Ù. ´õ ÇؾßÇÒ ÀÏÀÌ ÀÖ½À´Ï±î?


1) °³¹ßÀÚµéÀ» À§ÇÑ ÅøµéÀÌ ¾î¶² °ÍÀÌ ÀÖ³ª¿ä?

Á¤±Ô FAQ ¿¡ ¾ð±ÞµÈ »ç¿ëÀÚ¸¦ À§ÇÑ ¹®¼­¸¦ Á¦¿ÜÇÏ°í, °³¹ßÀÚ¸¦ À§ÇÑ µµ±¸µéÀÌ ¸î¸î ÁغñµÇ¾î ÀÖ½À´Ï´Ù. ù¹ø°·Î, /tools µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀϵéÀº °³¹ßÀÚµéÀ» À§ÇÑ °ÍÀÔ´Ï´Ù.

	RELEASE_CHANGES		¸Å ¸±¸®Á´Ù ¹Ù²ï »çÇ×µé
	SQL_keywords		SQL'92 Ç¥ÁØ Å°¿öµå
	backend			¹é¿£µå µð·ºÅ丮ÀÇ È帧µµ
	ccsym			ÄÄÆÄÀÏ·¯µé¿¡ ÀÇÇØ ¸¸µé¾îÁö´Â Ç¥ÁØ define ¹® ã±â
	entab			Åǹ®ÀÚ¸¦ °ø¹é¹®ÀÚ·Î ¹Ù²Ù±â. pgindent °¡ »ç¿ëÇÔ
	find_static		static À¸·Î ¸¸µé¾îÁú ¼ö ÀÖ´Â ÇÔ¼ö ã±â
	find_typedef		¼Ò½ºÄڵ忡¼­ typedef ã±â 
	make_ctags		°¢ µð·ºÅ丮¿¡ vi ¿ë 'tags' ÆÄÀÏ ¸¸µé±â 
	make_diff		*.orig ¿Í ¼Ò½ºÀÇ Â÷ÀÌÁ¡ ¸¸µé±â
	make_etags		emacs ¿ë 'etags' ÆÄÀÏ ¸¸µé±â
	make_keywords.README	Á¦°øµÇ´Â ¿¹¾à¾îµé°ú SQL'92 ÀÇ ¿¹¾à¾î ºñ±³
	make_mkid		mkid ID ÆÄÀÏ ¸¸µé±â
	mkldexport		AIX ÀͽºÆ÷Æ® ÆÄÀÏ ¸¸µé±â 
	pgindent		C ¼Ò½ºÆÄÀÏ µé¿©¾²±â
¸î°¡Áö¸¸ ¾ð±ÞÇÏ°Ú½À´Ï´Ù. ºê¶ó¿ìÀú·Î tools/backend µð·ºÅ丮¸¦ ¿­¾îº¸¸é È帧µµ»ó¿¡ ¸ðµç ¹é¿£µå ÄÄÆ÷³ÍÆ®°¡ ³ªÅ¸³ª´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¾Æ¹«°Å³ª Ŭ¸¯ÇÏ¸é ±×¿¡ ´ëÇÑ ¼³¸íÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ³ª¼­ µð·ºÅ丮À̸§À» Ŭ¸¯ÇÏ¸é ¼Ò½ºµð·ºÅ丮·Î °¡°Ô µÉ °ÍÀÌ°í ½ÇÁ¦ ¼Ò½ºÄڵ带 ºÒ·¯¿Ã ¼ö ÀÖ½À´Ï´Ù. ¼Ò½ºµð·ºÅ丮¿¡ ÀÖ´Â README ÆÄÀÏ¿¡´Â ÇØ´ç¸ðµâÀÇ ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸íÀÌ µé¾î ÀÖ½À´Ï´Ù. µð·ºÅ丮¿¡ µé¾î°¡¸é ºê¶ó¿ìÀú°¡ README ÆÄÀÏÀ» º¸¿©ÁÙ °ÍÀÔ´Ï´Ù. tools/backend µð·ºÅ丮´Â PostgreSQL À¥ÆäÀÌÁö¿¡µµ Backend Flowchard ¶ó´Â Á¦¸ñÀ¸·Î µé¾îÀÖ½À´Ï´Ù.

µÎ¹ø°·Î, ű׸¦ ó¸®ÇÒ ¼ö ÀÖ´Â ÆíÁý±â°¡ ¹Ýµå½Ã ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¡¾ß ÇÔ¼öÈ£ÃâÀ» ű×ó¸®ÇÏ¿© ÇÔ¼öÀÇ Á¤ÀǸ¦ º¼ ¼ö ÀÖ°í, ±× ÇÔ¼ö ¾È¿¡ ¶Ç ÅÂ±× Ã³¸®¸¦ ÇÏ¿© ´õ Àú¼öÁØÀÇ ÇÔ¼ö¸¦ º¼ ¼ö ÀÖÀ¸¸ç µÚ·Î µÎ ¹ø µ¹¾Æ°¡ ¿ø·¡ÀÇ ÇÔ¼ö¸¦ º¼ ¼ö ÀÖ°Ô µË´Ï´Ù. ´ë°³ÀÇ ÆíÁý±âµéÀÌ tags ³ª etags ÆÄÀÏÀ» »ç¿ëÇÏ¿© ÀÌ ±â´ÉÀ» Áö¿øÇÕ´Ï´Ù.

¼¼¹ø°·Î, ftp.postgresql.org ¿¡¼­ mkid ¸¦ ±¸ÇØ¾ß ÇÕ´Ï´Ù. tools/make+mkid ¸¦ ½ÇÇàÇÏ¸é ¼Ò½ºÀÇ ½Éº¼µéÀ» ÃßÃâÇÏ¿© º°µµÀÇ ÆÄÀÏ·Î ¸¸µé¾îÁÖ°í, grep À̳ª ÆíÁý±â¸¦ »ç¿ëÇÏ¿© ½±°Ô ÀÌ°ÍÀ» ÂüÁ¶ÇØ º¼ ¼ö ÀÖ½À´Ï´Ù.

make_diff ¿¡´Â ¹èÆ÷ÆÇ¿¡ µé¾î°¥ ¼ö ÀÖµµ·Ï ÆÐÄ¡¿ë diff ÆÄÀÏÀ» ¸¸µé¾îÁÖ´Â µµ±¸°¡ µé¾îÀÖ½À´Ï´Ù.

pgindent ´Â ¼Ò½ºÆÄÀÏÀ» °ø¹é¹®ÀÚ ³ÝÀ¸·Î ÀÌ·ç¾îÁø ÅÇÀ» »ç¿ëÇÏ´Â PostgreSQL ÀÇ Ç¥ÁØÇü½ÄÀ¸·Î, ±×¸®°í »ç¿ëÀÚÀÇ ¿î¿µÃ¼Á¦¿¡ ÀÖ´Â indent À¯Æ¿¸®Æ¼°¡ »ç¿ëÇÏ´Â µé¿©¾²±â Çü½ÄÀ¸·Î Æ÷¸ËÇØ ÁÝ´Ï´Ù.

2) ¾î¶² Ã¥ÀÌ °³¹ßÀڵ鿡°Ô µµ¿òÀÌ µË´Ï±î?

µÎ ±ÇÀÇ Ã¥À» ÃßõÇÕ´Ï´Ù. An Introduction to Database Systems, by C.J. Date, Addison, Wesley ¿Í A Guide to the SQL Standard, by C.J. Date, et. al, Addison, Wesley ÀÔ´Ï´Ù.

3) ¸Þ¸ð¸®¸¦ ÇÒ´çÇϱâ À§ÇØ ¿Ö palloc() °ú pfree() ¸¦ »ç¿ëÇմϱî?

palloc() °ú pfree() ´Â malloc() °ú free() ´ë½Å »ç¿ëµË´Ï´Ù. ÀÌ°ÍÀº PostgreSQLÀÌ Æ®·£Àè¼ÇÀÌ ³¡³¯ ¶§¸¶´Ù ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ¸ðµÎ ÇØÁ¦½ÃÅ°±â ¶§¹®ÀÔ´Ï´Ù. palloc() °ú pfree() ¸¦ »ç¿ëÇϸé ÇÑ °÷¿¡¼­ ÇÒ´çµÇ°í ÇÑÂü ÈÄ¿¡ ´Ù¸¥ °÷¿¡¼­ ÇØÁ¦µÈ ¸Þ¸ð¸®°¡ ÇØÁ¦µÇ¾ú´Ù´Â °ÍÀ» È®½ÇÇÏ°Ô ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¹®¸Æ»óÀ¸·Î º¸¾Æ ¾î¶² °÷¿¡¼­´Â ¸Þ¸ð¸®°¡ ÇÒ´çµÉ ¼ö ÀÖ´Â °æ¿ì°¡ ÀÖÀ¸¸ç ÇÒ´çµÈ ¸Þ¸ð¸®°¡ ¹é¿£µå¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î ÇØÁ¦µÉ ¶§¸¦ Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.

4) ÀڷᱸÁ¶¸¦ ¸¸µé±â À§ÇØ Node ¿Í List ¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯°¡ ¹¼´Ï±î?

¹é¿£µå¿¡°Ô ÀڷḦ ³Ñ°ÜÁÙ ¶§ À¯¿¬¼ºÀÌ ÀÖÀ¸¸é¼­µµ ÀÏ°üµÈ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ¸ðµç ³ëµå´Â ±× ³ëµå ¾È¿¡ ¾î¶² ÇüÅÂÀÇ ÀڷḦ °¡Áö°í ÀÖ´ÂÁö ¸í½ÃÇØÁÖ´Â NodeTag ¸¦ °¡Áý´Ï´Ù. Lists ´Â Nodes ÀÇ ¸ñ·ÏÀÔ´Ï´Ù. lfirst(), lnext(), ¿Í foreach() ¸¦ »ç¿ëÇÏ¿© ¸ñ·ÏÀ» ¾ò°í,

5) ±â´ÉÀ» Ãß°¡Çϰųª ¹ö±×¸¦ ÀâÀ¸·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÏÁÒ?

¼Ò½ºÄÚµå´Â ´ë·« 250,000 ¶óÀÎ Á¤µµ µË´Ï´Ù. ¸¹Àº ¹®Á¦µé°ú ±â´ÉµéÀÌ ÄÚµåÀÇ Æ¯Á¤ÇÑ ÇÑ ºÎºÐ¿¡ °í¸³µÇ¾î ÀÖ½À´Ï´Ù. ´Ù¸¥ °ÍµéÀº ¼Ò½ºÄڵ忡 ´ëÇÑ »ó´çÇÑ Áö½ÄÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¾îµð¿¡¼­ºÎÅÍ ½ÃÀÛÇؾßÇÒÁö ¸ð¸£°Ú´Ù¸é ÇØÄ¿¸®½ºÆ®¿¡ Áú¹®Çϼ¼¿ä. ±×·¯¸é ¹®Á¦ÀÇ º¹À⼺°ú ¾îµð¿¡¼­ºÎÅÍ ½ÃÀÛÇØ¾ß ÇÏ´ÂÁö¸¦ ¾Ë·ÁÁÙ °Ì´Ï´Ù.

¶Ç ÇÑ°¡Áö ¿°µÎ¿¡ µÎ¾î¾ß ÇÒ °ÍÀº ¸¹Àº ¼öÁ¤»çÇ×°ú ±â´ÉµéÀÌ ¸Å¿ì ÀûÀº Äڵ常À» »ç¿ëÇÏ¿© Ãß°¡µÉ ¼ö ÀÖ´Ù´Â Á¡ÀÔ´Ï´Ù. ÇÊÀÚÀÇ °æÇè¿¡ ÀÇÇϸé Á¾Á¾ ÀÏÀ» ½ÃÀÛÇϸ鼭 Äڵ带 Ãß°¡ÇÏ°Ô µÇ´Âµ¥, ¾ó¸¶ ÈÄ ´Ù¸¥ ºÎºÐÀ» µé¿©´Ù º¸´Ù°¡ ºñ½ÁÇÑ ÀÏÀ» ´©±º°¡ Çسõ¾Ò´Ù´Â °ÍÀ» ¾Ë°Ô µÇ°í ÀÏÀ» ³¡³¾¶§ ÂëÀ̸é ÆÐÄ¡ÇÒ ³»¿ëÀº ¾ÆÁÖ ÀÛ°í ÄÄÆÑÆ® ÇØÁý´Ï´Ù.

Äڵ带 Ãß°¡ÇÒ ¶§¸é, ¼º´É°ú ´Ü¼øÇÔÀ» À§ÇØ ÀÌ¹Ì ¼Ò½º¿¡ Á¸ÀçÇÏ°í ÀÖ´Â ±â´ÉÀ» ÀÌ¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ¸í½ÉÇϽʽÿÀ. ÀÌ¹Ì Á¸ÀçÇÏ°í ÀÖ´ÂÄÚµå Áß ºñ½ÁÇÑ ÀÏÀ» ÇÏ´Â Äڵ带 ¸é¼­ ¸¦ »ìÆ캸¸é ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù.

6) ÇöÀç ¼Ò½º Æ®¸®¸¦ ´Ù¿î·ÎµåÇϰųª °»½ÅÇÏ·Á¸é ¾î¶»°Ô Çմϱî?

¼Ò½ºÆ®¸®¸¦ ¾òÀ» ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¸î °¡Áö ÀÖ½À´Ï´Ù. °¡²û¾¿ Âü¿©ÇÏ´Â °³¹ßÀÚµéÀº ±×³É ftp.postgresql.org ¿¡¼­ °¡Àå ÃÖ±ÙÀÇ ¼Ò½º Æ®¸®¸¦ °¡Á®¿À¸é µË´Ï´Ù. Á¤±Ô °³¹ßÀÚµéÀ̶ó¸é ¿ª½Ã ftp.postgresql.org ¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Â CVSup ¸¦ ¼³Ä¡Çϼ¼¿ä. CVSup ¸¦ »ç¿ëÇÏ¸é ¼Ò½ºÆ®¸®¸¦ ´Ù¿î·ÎµåÇÏ°í, ¶§¶§·Î ¼Ò½º Æ®¸®¿¡ º¯°æµÈ »çÇ×À» ¾÷µ¥ÀÌÆ®ÇØ ÁÝ´Ï´Ù. Àüü ¼Ò½º Æ®¸®¸¦ ¸Å¹ø ´Ù¿î·ÎµåÇÒ ÇÊ¿ä°¡ ¾ø°í, º¯°æµÈ ÆÄÀϸ¸ °¡Á®¿À¸é µË´Ï´Ù. CVSup ´Â °³¹ßÀÚµéÀÌ ¼Ò½º Æ®¸®¸¦ ¾÷µ¥ÀÌÆ®ÇÏÁö ¸øÇÏ°Ô ¸·½À´Ï´Ù.

¼Ò½º Æ®¸®¸¦ ¾÷µ¥ÀÌÆ®ÇÏ·Á¸é µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ¾Õ¼­ ¾ð±ÞµÈ ´ë·Î make_diff µµ±¸¸¦ »ç¿ëÇÏ¿© ÇöÀç ¼Ò½º Æ®¸®¿¡ ´ëÇÑ ÆÐÄ¡¸¦ »ý¼ºÇÑ ÈÄ ÀÌ°ÍÀ» ÆÐÄ¡ ¸®½ºÆ®¿¡ º¸³¾ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº °ËÅä°¡ ÀÌ·ç¾îÁø ÈÄ¿¡ ÀûÀýÇÑ ½Ã±â¿¡ Àû¿ëµÉ °ÍÀÔ´Ï´Ù. ÆÐÄ¡°¡ ²Ï Å« °ÍÀ̶ó¸é, ±×¸®°í ¿ì¸®°¡ º£Å¸Å×½ºÆ® ÁßÀ̶ó¸é °³¹ßÀÚµéÀº ÃÖÁ¾ ¸±¸®Áî°¡ ³ª¿Ã ¶§±îÁö ±â´Ù·Á ÆÐÄ¡¸¦ Àû¿ë½ÃÅ°´Â ÆíÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù.

ÇÙ½É °³¹ßÀڵ鿡°Ô´Â ¸¶Å©(Marc scrappy@postgresql.org) °¡ postgresql.org ¿¡ °èÁ¤À» ¹ß±ÞÇØ ÁÙ °ÍÀÔ´Ï´Ù. ±×·¯¸é °³¹ßÀÚ´Â ÀÚ½ÅÀÇ ÆÄÀÏÀ» °èÁ¤¿¡ ftp ·Î ¿Ã·Á³õ°í ÆÐÄ¡ÇÑ ´ÙÀ½, º¯°æµÈ »çÇ×À» cvs ¸¦ ÀÌ¿ëÇØ ¹Ù·Î ¼Ò½º Æ®¸®¿¡ ¹Ý¿µ½Ãų ¼ö ÀÖ½À´Ï´Ù.

7) ³»°¡ º¯°æÇÑ °ÍÀ» ¾î¶»°Ô Å×½ºÆ®Çմϱî?

¸ÕÀú psql ¸¦ »ç¿ëÇÏ¿© »ý°¢Çß´ø ´ë·Î µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇϼ¼¿ä. ±×¸®°í src/test/regress ¸¦ ½ÇÇà½ÃÅ°°í º¯°æ½ÃÅ°±â Àü°ú ÈÄÀÇ °á°ú¸¦ src/test/regress/checkresults ·Î È®ÀÎÇØ º¸¼¼¿ä. ÆÐÄ¡°¡ ȸ±Í Å×½ºÆ®ÀÇ °á°ú¸¦ ¾û¶×ÇÏ°Ô ¹Ù²Ù¾î ³õÁö´Â ¾Ê¾Ò´ÂÁö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ´Â ÂÊÀÌ Èûµç ÀÏÀ» ¸¹ÀÌ ÁÙ¿©ÁÝ´Ï´Ù. ȸ±Í Å×½ºÆ®´Â °³¹ßÀÚ°¡ ¹Ìó °í·ÁÇÏÁö ¸øÇÒ¸¸ÇÑ ¹æ¹ýµé·Î Äڵ带 Å×½ºÆ®Çϱ⠶§¹®¿¡ ÆÐÄ¡ÀÇ ¸¹Àº ¹ö±×µéÀ» Àâ¾ÆÁÝ´Ï´Ù. ¹®Á¦Á¡À» ã¾Æ³Â´Ù¸é ³ªÁß¿¡ ÀÏÀÌ ¾û¸ÁÀ¸·Î µÇ°í ³­ ÈÄ¿¡ ÇؾßÇÒ ¸¹Àº ¾çÀÇ µð¹ö±ëÀ» Àý¾àÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÏÀÌ ¾ðÁ¦ ¾û¸ÁÀÌ µÉ Áö´Â ¾Æ¹«µµ ¾Ë ¼ö ¾ø´Â ÀÏÀÌÁö¿ä.

8) ±¸Á¶Ã¼¿¡ Çʵ带 Çϳª Ãß°¡Çß½À´Ï´Ù. ´õ ÇؾßÇÒ ÀÏÀÌ ÀÖ½À´Ï±î?

±¸Á¶Ã¼´Â parser, rewrite, optimizer, executor ¸¦ °ÅÄ¡¸é¼­ »ó´çÈ÷ ¸¹Àº Áö¿øÀ» ¹Þ¾Æ¾ß ÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ±¸Á¶Ã¼µéÀº src/backend/nodes ¿¡ Áö¿øÇÏ´Â ·çƾÀ» °¡Áö°í ÀÖ¾î ÇØ´ç ±¸Á¶Ã¼¸¦ ¸¸µé°í, º¹»çÇÏ°í, Àаí, Ãâ·ÂÇϴµ¥ »ç¿ëÇÕ´Ï´Ù. »õ·Î¿î Çʵ忡 ´ëÇÑ Áö¿øÀ» ÀÌ ÆÄÀÏ¿¡ Ãß°¡Çß´ÂÁö È®ÀÎÇϼ¼¿ä. »õ·Î¿î Çʵ带 »ç¿ëÇϱâ À§ÇØ ´õ ÇÊ¿äÇÑ ÄÚµåµéÀÌ ¾ø´ÂÁö È®ÀÎÇϼ¼¿ä. ¾Õ¼­ ¾ð±ÞµÈ mkid °¡ µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù.