DB°³³ä

DB³í¸®±¸Á¶

Tablespace

 Oracle°í±Þ  

µ¥ÀÌÅÍ ¿¢¼¼½º¿Í °»½Å

µ¥ÀÌÅÍ µñ¼Å³Ê¸®

¹é¾÷°úº¹±¸

PL/SQL½Ç½À

Cluster ½Ç½À

Index½Ç½À  

Sequence ½Ç½À

 View½Ç½À

SQL½Ç½À

                                                                        ¸ÞÀÎ

¢ÃÈ­ÀÏÀÇ ±¸¼º°ú ó¸®

¢ÃÈ­ÀÏ󸮽ýºÅÛ

-¿î¿µÃ¼Á¦¸¦ ÅëÇØ¼­ µ¥ÀÌÅÍ È­ÀÏÀ» Á¶ÀÛ

-È­ÀÏ¿¡ ´ëÇÑ ±¸Á¶ Á¤ÀÇ´Â »ç¿ëÇÏ´Â ÇÁ·Î±×·¥º°·Î Á¸Àç

*È­ÀÏ(file): µ¿ÀÏ ¸ñÀûÀÇ µ¥ÀÌÅÍ ÁýÇÕü, ·¹ÄÚµåµé·Î ±¸¼º

*·¹ÄÚµå(record): ó¸® ´ë»óÀÌ µÇ´Â ÇÑ °Ç ºÐÀÇ µ¥ÀÌ

                      

¢Ãµ¥ÀÌÅͺ£À̽º½Ã½ºÅÛ

-DBMS¸¦ ÅëÇØ¼­ È­ÀÏ Á¶ÀÛ

-DBMS¿¡ È­ÀÏÀÇ ±¸Á¶¸¦ Á¤ÀÇÇÏ¿© °øµ¿ »ç¿ë

-

DBMS´Â µ¥ÀÌÅÍ¿¡ ´ëÇÑ ¹«°á¼º, º¸¾È, ¹é¾÷/ȸº¹ µîÀ» °ü¸®

¢Ãµ¥ÀÌÅͺ£À̽ºÀÇ ±âº» °³³ä

¢Ãµ¥ÀÌÅͺ£À̽º °ü¸® ½Ã½ºÅÛ

-µ¥ÀÌÅͺ£À̽º °ü¸® ½Ã½ºÅÛ(DBMA: DataBase Management System)Àº µ¥ÀÌÅͺ£À̽º¸¦ ±¸ÃàÇϰí ÀÌ¿ëÇÏ´Â ±â´ÉÀ» Á¦°øÇϴµ¥ ±âº»ÀÌ µÇ´Â ½Ã½ºÅÛ ¼ÒÇÁÆ®¿þ¾îÀÌ´Ù.

-´Ù¼öÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÇÊ¿ä·Î ÇÏ´Â ¿©·¯ °¡Áö µ¥ÀÌÅÍ ±¸Á¶¸¦ Á¦°øÇÏ°í µ¥ÀÌÅÍÀÇ Áߺ¹¼ºÀ» ÅëÁ¦ÇÏ¿© °¡Àå È¿À²ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô Çϱâ À§ÇØ, ¼­·Î °ü·ÃµÈ µ¥ÀÌÅ͸¦ ÀúÀå, °Ë»ö, Á¦¾î ±â´ÉÀ» ¼öÇàÇÏ´Â ¼ÒÇÁÆ®¿þ¾îÀÌ´Ù.

¢Ãµ¥ÀÌÅͺ£À̽º °ü¸® ½Ã½ºÅÛÀÇ Æ¯Â¡

¢Ãµ¥ÀÌÅÍÀÇ °øÀ¯

¢ÃÁ¶Á÷ü ³»ÀÇ °ü·Ã ¾÷¹«¿¡ ´ëÇÑ µ¥ÀÌÅͺ£À̽º¸¦ ±¸ÃàÇÏ¿© ºÐ¾ß/»ç¿ëÀÚº° ±ÇÇÑ ¹üÀ§³» »ç¿ë

¢ÃÀÀ¿ë ÇÁ·Î±×·¥ÀÌ µ¥ÀÌÅÍ ±¸Á¶¸¦ °øÀ¯ÇÏ¿© »ç¿ë

¢Ã¹°¸®Àû/³í¸®Àû µ¥ÀÌÅÍ µ¶¸³

¢Ã¹°¸®ÀûÀÎ µ¥ÀÌÅÍ ±¸Á¶°¡ º¯ÇÏ´õ¶óµµ ÀÀ¿ë ÇÁ·Î±×·¥Àº ¿µÇâÀ» ¹ÞÁö ¾È´Â´Ù.

¢Ãµ¥ÀÌÅÍÀÇ ³í¸®Àû ±¸Á¶ º¯È­¿¡ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¿µÇâ ÃÖ¼ÒÈ­

¢Ãµ¥ÀÌÅÍ ¹«°á¼º À¯Áö

¢Ãµ¥ÀÌÅÍÀÇ Á¶ÀÛÀ¸·Î »óÈ£°£¿¡ ¸ð¼øÀÌ ¹ß»ýµÇÁö ¾Êµµ·Ï ¹æÁö

¢Ã½Å·Ú¼º

¢Ã½Ã½ºÅÛÀÇ ¿¹±âÄ¡ ¾ÊÀº »ç°í·ÎºÎÅÍ º¸È£ (back-up°ú recovery)

¢Ãµ¥ÀÌÅͺ£À̽º °ü¸® ½Ã½ºÅÛÀÇ ÀåÁ¡

¢Ãµ¥ÀÌÅÍÀÇ °øÀ¯

¢Ãµ¥ÀÌÅÍÀÇ Áߺ¹ ¹æÁö

¢Ãµ¥ÀÌÅÍÀÇ »óÈ£¸ð¼ø ¹æÁö

¢Ãµ¥ÀÌÅÍÀÇ ¾ÈÁ¤¼º

¢ÃÇÁ·Î±×·¥ ÀÛ¼ºÀÌ ¿ëÀÌ

¢ÃEntity, Attribute, Field

-Entity´Â À¯Çü ¶Ç´Â ¹«ÇüÀ¸·Î ¼­·Î ±¸ºÐµÇ´Â °³Ã¼·Î¼­ ´Ù¸¥ °Í°ú ±¸ºÐÀÌ µÇ´Â Á¤º¸ÀÇ ±Ù¿ø (ÀÚ·áöÀÇ Record¿¡ ÇØ´ç)

-Entity´Â Çϳª ÀÌ»óÀÇ ¼Ó¼º(Attribute)À¸·Î Ư¡Áö¾îÁú ¼ö ÀÖ´Ù.

-Entity¸¦ ÄÄÇ»ÅÍÀÇ µ¥ÀÌÅÍ ±¸Á¶·Î ÀúÀåÇÒ ¶§, µ¥ÀÌÅÍÀÇ °¡Àå ÀÛÀº ³í¸®Àû ´ÜÀ§¸¦ data item ¶Ç´Â Field¶ó ÇÑ´Ù.

*DomainÀº Attribute¿¡ ³ªÅ¸³¯ ¼ö ÀÖ´Â °ªÀÇ ÁýÇÕÀÌ´Ù. (¿¹, ¼ºº°Àº '³²'°ú '¿©')

¢ÃLogical data, Physical data

-TableÀº Entity¸¦ ÄÄÇ»ÅÍ¿¡ ÀúÀåÇÏ´Â ±âº»ÀûÀÎ µ¥ÀÌÅÍ ÀúÀ屸Á¶ÀÌ´Ù.

-Physical data´Â ÀúÀå¸Åü¿¡ ¹°¸®ÀûÀ¸·Î ±â·ÏµÇ¾î ÀÖ´Â ½ÇÁ¦ÀÇ µ¥ÀÌÅͺ£À̽º ÀڷḦ ¸»ÇÑ´Ù.

-Logical data´Â »ç¿ëÀÚ°¡ DBMS¸¦ ÅëÇØ Physical data¿¡ Á¢±ÙÇϱâ À§ÇØ ÀÌ¿ëÇÏ´Â µ¥ÀÌÅͺ£À̽ºÀÇ ³í¸®Àû Ç¥ÇöÀÌ´Ù.

-»ç¿ëÀÚ´Â Logical data¸¦ ´Ù·ç°Ô µÇ°í, Physical data´Â DBA¿¡ ÀÇÇØ °ü¸®µÈ´Ù.

-Physical data ±¸Á¶´Â µ¥ÀÌÅÍ ·®ÀÇ Áõ°¨ÀÌ ÀϾ¿¡ µû¶ó DBMSÀÇ È¿À²¼º¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù.

¢ÃEntity instance, Entity set

-Entity instance´Â EntityÀÇ ½ÇÁ¦ °ªÀ» ¸»ÇÑ´Ù. Entity occurrence¶ó°íµµ ÇÑ´Ù.

¿¹, Çлý½Å»ó TableÀÇ ¼Ó¼ºÀÌ (Çйø,¼º¸í,Çаú,Çгâ)À̶ó¸é Entity instance´Â <9828000,È«±æµ¿,Á¤º¸Åë½Å°è¿­,2>ÀÌ µÉ ¼ö ÀÖ´Ù.

-Entity instanceÀÇ ÁýÇÕÀ» °³Ã¼ ÁýÇÕ(Entity set)À̶ó ÇÑ´Ù.

¢ÃEntity Relationship

-Entity RelationshipÀº °³Ã¼ ÁýÇÕ°ú °³Ã¼ ÁýÇÕ »çÀÌÀÇ °ü°è¸¦ ¸»ÇÑ´Ù.

¢ÃSchema

-Schema´Â µ¥ÀÌÅͺ£À̽ºÀÇ ³í¸®Àû Á¤ÀÇ Áï, µ¥ÀÌÅÍ ±¸Á¶¿Í Á¦¾àÁ¶°Ç¿¡ ´ëÇÑ ¸í¼¼¸¦ ±â¼úÇÑ °ÍÀ» ¸»ÇÑ´Ù.

-Schema¿¡´Â µ¥ÀÌÅÍ °³Ã¼(entity), °³Ã¼ÀÇ Æ¯¼ºÀ» Ç¥ÇöÇÏ´Â ¼Ó¼º(attribute), À̵鰣¿¡ Á¸ÀçÇÏ´Â °ü°è(relationship)¿¡ ´ëÇÑ Á¤ÀÇ¿Í À̵éÀÌ À¯ÁöÇØ¾ß µÉ Á¦¾àÁ¶°Ç(constraints)ÀÌ Æ÷ÇԵȴÙ.

-µ¥ÀÌÅͺ£À̽º´Â ³í¸®ÀûÀÎ ºÎºÐ°ú ¹°¸®ÀûÀÎ ºÎºÐÀ¸·Î ³ª´©¾î °ü¸®Çϰí, ±â°ü Àüü°¡ ºÎºÐÀûÀ¸·Î °øÀ¯ÇÏ°Ô µÇ¹Ç·Î »ç¿ëÀÚº°·Î µ¥ÀÌÅͺ£À̽ºÀÇ Schema¸¦ º¸´Â °üÁ¡ÀÌ ¼­·Î ´Ù¸¦ ¼ö ÀÖ´Ù.

¢Ã¿ÜºÎ ½ºÅ°¸¶(external schema)

.°³º° »ç¿ëÀÚ°¡ º¸´Â µ¥ÀÌÅͺ£À̽ºÀÇ ±¸Á¶·Î¼­ Àüü µ¥ÀÌÅͺ£À̽ºÀÇ ÇÑ ³í¸®Àû ºÎºÐÀÌ µÇ±â ¶§¹®¿¡ ¼­ºê½ºÅ°¸¶(subschema)¶ó°íµµ ÇÑ´Ù.

¢Ã°³³ä ½ºÅ°¸¶(conceptual schema)

.Àüü µ¥ÀÌÅͺ£À̽º ÀÔÀå¿¡¼­ µ¥ÀÌÅͺ£À̽º¸¦ Á¤ÀÇÇÑ °ÍÀ¸·Î ´Ü¼øÈ÷ Schema¶ó°íµµ ÇÑ´Ù..

.»ç¿ëÀÚ³ª ÀÀ¿ë ÇÁ·Î±×·¥Àº °³³ä½ºÅ°¸¶ÀÇ ÀϺθ¦ »ç¿ëÇÏ°Ô µÇ°í, ÀÌ °³³ä ½ºÅ°¸¶·ÎºÎÅÍ ¸ðµç ¿ÜºÎ ½ºÅ°¸¶°¡ »ý¼ºµÇ°í Áö¿øµÈ´Ù.

.µ¥ÀÌÅͺ£À̽º Àüü¿¡ ´ëÇÑ °³Ã¼, °ü°è, Á¦¾àÁ¶°ÇÀ» Æ÷ÇÔÇÒ »Ó¸¸ ¾Æ´Ï¶ó Ãß°¡ÀûÀ¸·Î À̵éÀ» È¿À²ÀûÀ¸·Î °ü¸®Çϴµ¥ ÇʼöÀûÀÎ Á¤º¸ÀÎ Á¢±Ù ±ÇÇÑ, º¸¾È Á¤Ã¥, ¹«°á¼º ±ÔÄ¢¿¡ ´ëÇÑ ¸í¼¼¸¦ Æ÷ÇÔÇÑ´Ù.

¢Ã³»ºÎ ½ºÅ°¸¶(internal schema)

.ÀúÀå ÀåÄ¡ÀÇ ÀÔÀå¿¡¼­ Àüü µ¥ÀÌÅͺ£À̽º°¡ ÀúÀåµÇ´Â ¹æ¹ýÀ» ¸í¼¼ÇÑ °ÍÀ¸·Î, °³³ä ½ºÅ°¸¶¿¡ ´ëÇÑ ÀúÀå ±¸Á¶¸¦ Á¤ÀÇÇÑ °ÍÀÌ´Ù.

.¹°¸®ÀûÀÎ ´Ü°èº¸´Ù ÇÑ ´Ü°è À§¿¡ ÀÖ´Â ¹°¸®Àû ±¸Á¶¿¡ ´ëÇÑ ¸í¼¼ÀÌ´Ù.

.½ÇÁ¦·Î ÀúÀåµÉ ³»ºÎ ·¹ÄÚµåÀÇ Çü½Ä, Index À¯¹«, ÀúÀå µ¥ÀÌÅÍÀÇ Ç¥Çö ¹æ¹ý, ±×¸®°í ³»ºÎ ·¹ÄÚµåÀÇ ¹°¸®Àû ¼ø¼­¿¡ °üÇÑ ¸í¼¼¸¦ Æ÷ÇÔÇÑ´Ù.

.DBA°¡ ½Ã½ºÅÛÀÇ È¿À²¼ºÀ» °í·ÁÇÏ¿© °ü¸®ÇÑ´Ù.

¢Ãµ¥ÀÌÅͺ£À̽ºÀÇ ³»ºÎÀû ¿î¿µ

¢Ãµ¥ÀÌÅͺ£À̽ºÀÇ Á¢±Ù °úÁ¤

¢Ã»ç¿ëÀÚ°¡ ÇÁ·Î±×·¥À̳ª SQL ÁúÀǾ ÅëÇØ DBMS¿¡°Ô ÀڷḦ ¿ä±¸

¢ÃDBMS´Â Á¢±Ù ±ÇÇÑ µîÀ» °Ë»çÇÑ ÈÄ¿¡ ¿î¿µÃ¼Á¦ÀÇ È­Àϰü¸®ÀÚ¿¡°Ô ÇØ´ç ÀÚ·á¿¡ ´ëÇÑ Á¢±ÙÀ» ¿ä±¸, ¸¸¾à ÁÖ±â¾ïÀåÄ¡¿¡ ÇØ´ç ·¹Äڵ尡 ÀÖ´Ù¸é DBMS¿¡°Ô ÇØ´ç ·¹Äڵ带 Á¦°ø

¢ÃÈ­Àϰü¸®ÀÚ´Â ÁÖ±â¾ïÀåÄ¡¿¡ ÇØ´ç ·¹Äڵ尡 ¾ø´Ù¸é µð½ºÅ©°ü¸®ÀÚ¿¡°Ô ÇØ´ç ·¹Äڵ尡 À§Ä¡ÇÑ ÆäÀÌÁö¸¦ ÁÖ±â¾ïÀåÄ¡¿¡ ¿Ã·ÁÁÙ °ÍÀ» ¿ä±¸

¢Ãµð½ºÅ©°ü¸®ÀÚ´Â ÇØ´ç ÆäÀÌÁö¸¦ ÁÖ±â¾ïÀåÄ¡¿¡ ¿Ã·ÁÁØ´Ù.

µ¥ÀÌÅͺ£À̽ºÀÇ ÀúÀå ¿¬»ê

-µ¥ÀÌÅÍ ÀúÀåÀåÄ¡

¢Ãºñ¼Ò¸ê¼º(nonvolatile) ÀúÀåÀåÄ¡: °©ÀÛ½º·± ½Ã½ºÅÛ down¿¡µµ µ¥ÀÌÅÍÀÇ ¼Õ½ÇÀÌ ¾ø´Â ÀÚ±âÀûÀÎ ÀúÀåÀåÄ¡ (HDD)

¢Ã¼Ò¸ê¼º(volatile) ÀúÀåÀåÄ¡: °©ÀÛ½º·± ½Ã½ºÅÛ downÀÌ ÀÖÀ» ½Ã¿¡ µ¥ÀÌÅÍ ¼Õ½ÇÀÌ ÀÖ´Â Àü±âÀûÀÎ ÀúÀåÀåÄ¡(RAM)

-µ¥ÀÌÅÍ ÀúÀå °ü¸®

µ¥ÀÌÅÍ ÀúÀåÀåÄ¡¿¡¼­ÀÇ µ¥ÀÌÅÍ °ü¸®´Â µ¥ÀÌÅÍ ÆäÀÌÁö(page)¶ó´Â ÀÏÁ¤ ´ÜÀ§·Î ÀúÀå °ü¸®µÈ´Ù.

*ÆäÀÌÁö(page)´Â ÁÖ±â¾ïÀåÄ¡¿Í º¸Á¶±â¾ïÀåÄ¡°£ÀÇ µ¥ÀÌÅÍ Àü¼Û ´ÜÀ§·Î º¸Åë 1KB, 2KB, 4KB Å©±â

*Oracle¿¡¼­´Â ÆäÀÌÁö¸¦ BlockÀ¸·Î ºÎ¸¥´Ù.

-µð½ºÅ©¿¡ À§Ä¡ÇÑ BlockÀ» µð½ºÅ© ºí·Ï(disk block)À̶ó Çϰí, ÁÖ±â¾ïÀåÄ¡¿¡ ÀÖ´Â Àӽà ºí·ÏÀ» ¹öÆÛ ºí·Ï(buffer block)À̶ó ÇÑ´Ù.

-µ¥ÀÌÅÍÀÇ Ã³¸®

.ÀϹÝÀûÀ¸·Î ¿øº» µ¥ÀÌÅÍ´Â ºñ±³Àû ¾ÈÁ¤¼ºÀÌ ÀÖ´Â ÀÚ±âÀûÀÎ º¸Á¶ ±â¾ïÀåÄ¡¿¡ À§Ä¡Çϰí, °Ë»ö, °»½Å, »èÁ¦ 󸮸¦ À§ÇØ ÀüÀÚÀûÀÎ ÁÖ±â¾ïÀåÄ¡·Î º¹Á¦µÇ¾î °¡°øµÇ¾î Áø´Ù.

.ÁÖ±â¾ïÀåÄ¡¿¡¼­ °¡°øµÈ µ¥ÀÌÅͰ¡ º¸Á¶ ±â¾ïÀåÄ¡ÀÇ ±¸ µ¥ÀÌÅ͸¦ ´ëüÇÒ ¶§ ºñ·Î¼­ ¿ÏÀüÇÑ µ¥ÀÌÅÍ Ã³¸®°¡ Á¾·áµÇ´Â °ÍÀÌ´Ù.

-µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇØ º¸Á¶ ±â¾ïÀåÄ¡¿¡¼­ ÁÖ±â¾ïÀåÄ¡·ÎÀÇ µ¥ÀÌÅÍ À̵¿Àº ÇÊ¿äÇÑ µ¥ÀÌÅ͸¸ À̵¿ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÇÊ¿äÇÑ µ¥ÀÌÅͰ¡ À§Ä¡ÇÑ ÆäÀÌÁö°¡ ÇÔ²² À̵¿ÇÑ´Ù.

-Read(Y,y): µ¥ÀÌÅÍ Item(RecordÀÇ Æ¯Á¤ Field value) YÀÇ °ªÀ» º¯¼ö yÀÇ °ªÀ¸·Î ÁöÁ¤ÇÑ´Ù.

¿¹> Read(STUDENTS(ST_NAME,ST_NO), (name,no))ÀÇ Àǹ̴Â

SELECT ST_NAME, ST_NO INTO NAME, NO

FROM STUDENTS;

-WRITE(X,x): º¯¼ö xÀÇ °ªÀ» µ¥ÀÌÅÍ Item XÀÇ °ªÀ¸·Î ÁöÁ¤ÇÑ´Ù.

¿¹> Read(STUDENTS(ST_NAME,ST_NO='9828000'))

Write(STUDENTS(ST_NAME='±èÀÏÀÌ'))ÀÇ Àǹ̴Â

UPDATE STUDENT SET ST_NAME='±èÀÏÀÌ'

WHERE ST_NO='9828000';

-Input(X): µ¥ÀÌÅÍ Item X°¡ Æ÷ÇԵǾî ÀÖ´Â µð½ºÅ© ºí·ÏÀ» ÁÖ±â¾ï °ø°£À¸·Î À̵¿½ÃŲ´Ù.

>SQL¿¡¼­ SELECT, UPDATE, DELETE ¿¬»ê½Ã DBMS°¡ ¼öÇàÇÏ°Ô µÈ´Ù.

-Output(X): µ¥ÀÌÅÍ Item X°¡ Æ÷ÇԵǾî ÀÖ´Â ¹öÆÛ ºí·ÏÀ» µð½ºÅ© ºí·ÏÀ¸·Î À̵¿½ÃŲ´Ù.

>SQL¿¡¼­ INSERT, UPDATE, DELETE ¿¬»ê½Ã DBMS°¡ ¼öÇàÇÏ°Ô µÈ´Ù.

?µ¥ÀÌÅͺ£À̽º¿¡¼­ÀÇ Block³»¿¡ ·¹ÄÚµå °ü¸®

-DBMS´Â Block³»¿¡ ·¹ÄÚµåµéÀ» linked-list·Î ¿¬°áÇÏ¿© ÀúÀå °ü¸®ÇÑ´Ù.

-·¹ÄÚµåÀÇ »èÁ¦ ¹× Ãß°¡´Â linked-listµÈ Æ÷ÀÎÅÍ(pointer)ÀÇ À̵¿À¸·Î 󸮵ȴÙ.

-·¹ÄÚµåÀÇ »èÁ¦

(98002,±èÀÌ) ·¹ÄÚµåÀÇ Á¦°Å´Â (98001,±èÀÏÀÌ) ·¹ÄÚµåÀÇ Æ÷ÀÎÅ͸¦ 56À¸·Î ¹Ù²Ù¸é µÈ´Ù.

-·¹ÄÚµå Ãß°¡

»õ·Î¿î ·¹Äڵ带 Ãß°¡Çϱâ À§Çؼ­´Â ºó °ø°£ÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ ÀúÀåÁÖ¼Ò·Î Çϰí, ¸¶Áö¸· (98004,±è»ç)ÀÇ Æ÷ÀÎÅͰ¡ Ãß°¡µÈ ·¹ÄÚµåÀÇ ÀúÀåÁÖ¼Ò¸¦ °¡¸®Å°µµ·Ï ÇÏ¸é µÈ´Ù.

¸¸¾à, ÆäÀÌÁö °ø°£ÀÌ ¸ðÀÚ¶ó¸é »õ·Î¿î ÆäÀÌÁö¸¦ ÇÒ´çÇÏ¿© ¸¶Áö¸· ÆäÀÌÁö¿Í ¿¬°áÇÏ¸é µÈ´Ù.

-Index °ü¸®

.¸¸¾à, ¼º¸í¼ø Index¸¦ ST_NAME_IDX¶ó´Â À̸§À¸·Î »ý¼ºÇÏ¿´´Ù¸é, DBMS´Â ST_NAME_IDX¶ó´Â Index È­ÀÏÀ» <Ű °ª, À妽º Æ÷ÀÎÅÍ, µ¥ÀÌÅÍ ·¹ÄÚµå Æ÷ÀÎÅÍ> ÇüÅ·Π±¸¼ºÇÏ¿© À妽º Æ÷ÀÎÅÍ °ªÀ» ¼º¸í¼øÀ¸·Î ¿¬°áµÇ°Ô °ü¸®ÇÑ´Ù.

¢Ãµ¥ÀÌÅͺ£À̽ºÀÇ Àå¾Ö¿Í ȸº¹

¢ÃÀå¾Ö¿Í ȸº¹

¢ÃÀå¾Ö(failure)

.Á¤ÇØÁø ¸í¼¼´ë·Î ½Ã½ºÅÛÀÌ ÀÛµ¿ÇÏÁö ¾ÊÀº »óÅ·μ­ ÀÌÀü »óÅ·Πȸº¹ÇÒ Çʿ伺ÀÌ ÀÖ´Â °æ¿ì

.Àå¾Ö À¯Çü

¢ÃÆ®·£Àè¼Ç Àå¾Ö: Æ®·£Àè¼Ç³»ÀÇ ³í¸®Àû ¿À·ù³ª ³»ºÎ Á¶°Ç, Áï ÀÔ·Â µ¥ÀÌÅÍÀÇ ºÒ·®, µ¥ÀÌÅÍÀÇ ºÒ¸íÈ®, ½Ã½ºÅÛ ÀÚ¿øÀÇ °ú´Ù »ç¿ë ¿ä±¸ µîÀ¸·Î Á¤»óÀûÀÎ ½ÇÇàÀ» °è¼ÓÇÒ ¼ö ¾ø´Â »óÅÂ

¢Ã½Ã½ºÅÛ Àå¾Ö: Çϵå¿þ¾îÀÇ ¿Àµ¿ÀÛÀ¸·Î ¸ÞÀÎ ¸Þ¸ð¸®¿¡ ÀÖ´Â Á¤º¸ÀÇ ¼Õ½ÇÀ̳ª ±³Âø »óŰ¡ ¹ß»ýÇÏ¿© ´õ ÀÌ»ó ½ÇÇàÀ» °è¼ÓÇÒ ¼ö ¾ø´Â »óÅÂ

¢Ã¸Åü Àå¾Ö: µð½ºÅ© ÀåÄ¡ÀÇ °íÀåÀ¸·Î ÀÎÇØ ÀúÀå ÀåÄ¡ÀÇ µ¥ÀÌÅͺ£À̽º ÀϺΠ¶Ç´Â ÀüºÎ°¡ ¼Õ»óµÈ »óÅÂ

¢Ãȸº¹(recovery)

.Àå¾Ö°¡ ÀϾÀ» ¶§ µ¥ÀÌÅͺ£À̽º¸¦ Àå¾Ö ¹ß»ý ÀÌÀüÀÇ ¸ð¼øÀÌ ¾ø´Â »óÅ·Πº¹¿ø½ÃŰ´Â °ÍÀ» ¸»ÇÑ´Ù.

.DBMS´Â ȸº¹ °ü¸®ÀÚ(recovery management)¸¦ µÎ°í ½Å·Ú¼º Àִ ȸº¹À» À§ÇØ ´ýÇÁ(dump)¿Í ·Î±×(log)¸¦ ¼öÇàÇÑ´Ù.

*Dump: ÁÖ±âÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º¸¦ ¾ÈÀüÇÑ ´Ù¸¥ ÀåÄ¡(µð½ºÅ© ¶Ç´Â Å×ÀÌÇÁ)¿¡ º¹»çº»À» À¯ÁöÇÏ´Â °Í

*Log: ó¸® °úÁ¤¿¡¼­ µ¥ÀÌÅͺ£À̽º°¡ º¯°æµÉ ¶§¸¶´Ù ÀÌÀü °ª(old value)°ú º¯°æµÈ °ª(new value)À» º°µµÀÇ È­ÀÏ¿¡ ±â·ÏÇØ µÎ´Â °Í

.ȸº¹À» À§ÇØ ÃëÇÒ ¼ö ÀÖ´Â Á¶Ä¡

¢ÃRedo(): µ¥ÀÌÅͺ£À̽º ³»¿ë ÀÚü°¡ ¼Õ»óµÈ °æ¿ì¿¡ °¡Àå ÃÖ±ÙÀÇ º¹»ç º»À» ÀûÀç½ÃŲ µÚ ÀÌ º¹»ç º» ÀÌÈÄ¿¡ ÀϾ º¯°æ¸¸À» ·Î±×¸¦ ÀÌ¿ëÇÏ¿© Àç½ÇÇàÇÔÀ¸·Î¼­ µ¥ÀÌÅͺ£À̽º¸¦ º¹¿øÇÏ´Â °Í

¢ÃUndo(): µ¥ÀÌÅͺ£À̽º ³»¿ë ÀÚü´Â ¼Õ»óµÇÁö ¾Ê¾ÒÁö¸¸ º¯°æ ÁßÀ̰ųª º¯°æµÈ ³»¿ë¿¡ ´ëÇÑ ½Å·Ú¼ºÀ» ÀÒ¾î¹ö¸° °æ¿ì¿¡ ·Î±×¸¦ ÀÌ¿ëÇÏ¿© º¯°æ ³»¿ëÀ» Ãë¼ÒÇϰí ó¸® ÀÌÀü »óÅ·Πº¹¿øÇÏ´Â °Í

¡ØÀ§ÀÇ µÎ ¹æ¹ýÀº ÀϹÝÀûÀΠȸº¹ Á¶Ä¡À̸ç, ÀÌ ¿Ü¿¡ ÀÌÁß µ¥ÀÌÅͺ£À̽º ±¸Á¶¸¦ ¿î¿µÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù.

¢ÃÆ®·£Àè¼Ç °ü¸®

¢ÃÆ®·£Àè¼Ç(transaction)

.Æ®·£Àè¼ÇÀº ÇϳªÀÇ ³í¸®Àû ±â´ÉÀ» ¼öÇàÇϱâ À§ÇÑ ÀÛ¾÷ ´ÜÀ§·Î¼­ µ¥ÀÌÅͺ£À̽ºÀÇ ÀϰüµÈ »óŸ¦ À¯ÁöÇØ¾ß ÇÏ´Â ´ÜÀ§ÀÌ´Ù.

¢ÃÆ®·£Àè¼ÇÀÇ Æ¯¼º

¢Ã¿øÀÚ¼º(automicity): Æ®·£Àè¼ÇÀº ¿ÏÀüÈ÷ ¼öÇàµÇ°Å³ª ¾Æ´Ï¸é ¾Æ¿¹ ½ÇÇàµÇÁö ¾ÊÀº »óÅ¿©¾ß ÇÑ´Ù. Áï, ÀϺÎÀÇ ¼öÇàÀº Àǹ̰¡ ¾ø´Ù.

¢ÃÀϰü¼º(consistency): Æ®·£Àè¼ÇÀÌ ½ÇÇàÀ» ¼º°øÀûÀ¸·Î ¿Ï·áÇÏ¸é µ¥ÀÌÅͺ£À̽ºÀÇ Àϰü¼ºÀÌ À¯ÁöµÈ´Ù. Áï, µ¥ÀÌÅͺ£À̽º »óŰ¡ ¸ð¼øµÇÁö ¾Ê´Â´Ù.

¢Ã°Ý¸®¼º(isolation): Æ®·£Àè¼ÇÀÌ ½ÇÇà Áß¿¡ ÀÖ´Â Áß°£ °á°ú¸¦ ´Ù¸¥ Æ®·£Àè¼ÇÀÌ Á¢±ÙÇÒ ¼ö ¾ø´Ù.

¢Ã¿µ¼Ó¼º(durability): Æ®·£Àè¼ÇÀÌ ÀÏ´Ü ½ÇÇàÀ» ¼º°øÀûÀ¸·Î ¿Ï·áÇÏ¸é ±× °á°ú´Â ¿µ¼ÓÀûÀÌ´Ù.

¿¹>BEGIN_TRANSACTION:

UPDATE ACCOUNT

SET BAL=BAL-100

WHERE ACCNT='A';

IF ERROR GO TO UNDO;

UPDATE ACCOUNT

SET BAL=BAL+100

WHERE ACCNT='B';

IF ERROR GO TO UNDO;

COMMIT;

GO TO FINISH;

UNDO:

ROLLBACK;

FINISH:

RETURN;

END_TRANSACTION

¢Ã·Î±× ÀÌ¿ë ȸº¹

¢Ãµ¥ÀÌÅͺ£À̽º ·Î±× ·¹ÄÚµå ±¸¼º

-<Ti, Start>: Æ®·£Àè¼Ç Ti°¡ ½ÇÇà ½ÃÀÛ

-<Ti, Xj, V1, V2>: Æ®·£Àè¼Ç Ti°¡ µ¥ÀÌÅÍ ¾ÆÀÌÅÛ XjÀÇ °ªÀ» V1¿¡¼­ V2·Î º¯°æ

-<Ti, Commit>: Æ®·£Àè¼Ç Ti°¡ ½ÇÇà ¿Ï·á

¢ÃÁö¿¬ °»½Å ȸº¹

-Áö¿¬°»½Å(deferred update) ȸº¹ ±â¹ýÀº Æ®·£Àè¼ÇÀÌ ¿Ï·áµÇ±â ÀÌÀü±îÁö Output() ¿¬»êÀ» Áö¿¬½Ã۰í, µ¥ÀÌÅÍÀÇ º¯°æ ³»¿ëÀ» ·Î±×¿¡ ÀüºÎ ±â·ÏÇØ µÎ¾ú´Ù°¡ <Ti, Commit>µÈ Æ®·£Àè¼Ç¸¸ Output()À» ¼öÇàÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡ ¹Ý¿µÇÏ´Â ¹æ¹ýÀÌ´Ù.

-·Î±× ·¹ÄÚµå´Â Æ®·£Àè¼ÇÀÇ »õ·Î º¯°æµÈ °ª¸¸À» °®°í ÀÖÀ¸¸é µÈ´Ù. Áï, <Ti, Xj, V2>

¿¹> ·Î±× µ¥ÀÌÅͺ£À̽º

T1 :Read(A,a)<T1, Start>A=1000, B=2000

a=a-100

Write(A,a)<T1, A, 900>A=1000, B=2000

Read(B,b)

b=b+100

Write(B,b)<T1, B, 2100>A=1000, B=2000

<T1, Commit>A=900, B=2100

-¸¸¾à Àå¾Ö°¡ ÀϾ¸é ȸº¹ °ü¸®ÀÚ´Â ·Î±× <Ti, Start>¿Í <Ti, Commit> ·¹Äڵ尡 ÀÖ´Â Æ®·£Àè¼Ç Ti¿¡ ´ëÇØ¼­¸¸ Àç½ÇÇà(Redo) ½ÃŲ´Ù.

-ȸº¹ °ü¸®ÀÚ°¡ ·Î±×¸¦ ÀÌ¿ëÇÏ¿© Redo(Ti)¸¦ ½ÇÇàÇÏ´Â µµÁß¿¡ Àå¾Ö°¡ ¹ß»ýÇϸé Redo(Ti)¸¦ ´Ù½Ã ½ÇÇàÇÏ°Ô µÈ´Ù. Áï, ·Î±×¸¦ ÀÌ¿ëÇÏ¿© Redo(Ti)¸¦ ¿©·¯ Â÷·Ê ½ÇÇàÇØµµ ±× °á°ú´Â µ¿ÀÏÇÏ´Ù.

¢ÃÁï½Ã °»½Å ȸº¹

-Áï½Ã°»½Å(immediate update) ±â¹ýÀº Æ®·£Àè¼ÇÀÌ ½ÇÇàÇϰí Àִ Ȱµ¿ »óÅ¿¡¼­ µ¥ÀÌÅÍÀÇ º¯°æ °á°ú¸¦ µ¥ÀÌÅͺ£À̽º¿¡ Áï½Ã ¹Ý¿µÇÏ´Â ¹æ¹ýÀ¸·Î¼­, ¸¸¾à ¹®Á¦°¡ ¹ß»ýÇÏ¸é ·Î±×¸¦ ÀÌ¿ëÇÏ¿© Æ®·£Àè¼Ç ÀÌÀüÀÇ °ªÀ¸·Î µ¥ÀÌÅͺ£À̽º¸¦ º¹¿øÇÑ´Ù.

¿¹> ·Î±× µ¥ÀÌÅͺ£À̽º

T1 :Read(A,a)<T1, Start>A=1000, B=2000

a=a-100

Write(A,a)<T1, A, 1000, 900>A=900, B=2000

Read(B,b)

b=b+100

Write(B,b)<T1, B, 2000, 2100>A=900, B=2100

<T1, Commit>A=900, B=2100

-¸¸¾à, Àå¾Ö°¡ ÀϾ¸é ȸº¹ °ü¸®ÀÚ´Â ·Î±×¸¦ °Ë»çÇØ º¸°í ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î Redo(Ti)³ª Undo(Ti)¸¦ ½ÇÇàÇÒ Æ®·£Àè¼ÇÀ» °áÁ¤ÇÑ´Ù.

¢ÃUndo(Ti): ¸¸¾à ·Î±×¿¡ <Ti, Start>·¹Äڵ常 ÀÖ°í <Ti, Commit>´Â ¾øÀ» ¶§

.·Î±× ·¹Äڵ带 ¿ª¼øÀ¸·Î ÂüÁ¶ÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ ÀÌÀü °ªÀ¸·Î º¹¿øÇÑ´Ù.

¢ÃRedo(Ti): ¸¸¾à ·Î±×¿¡ <Ti, Start>¿Í <Ti, Commit> ·¹Äڵ尡 ¸ðµÎ ÀÖÀ» ¶§

.·Î±× ·¹Äڵ带 Â÷·Ê·Î ÂüÁ¶ÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ º¯°æµÈ °ªÀ¸·Î º¹¿øÇÑ´Ù.

-Undo(Ti) ¿ª½Ã ¿©·¯ Â÷·Ê ½ÇÇàÇØµµ ±× °á°ú´Â µ¿ÀÏÇÏ´Ù.

¢Ãµ¥ÀÌÅͺ£À̽ºÀÇ º´Çà Á¦¾î

¢Ãº´Çà Á¦¾î ¾øÀ» ½Ã ¹®Á¦Á¡

-Æ®·£Àè¼Ç°£ °£¼·À¸·Î ¹ß»ýµÇ´Â ¹®Á¦µé

¢Ã°»½Å ºÐ½Ç(lost update)

T1

T2

Read(X,x)

x=x +100

Write(X,x)

Output(X)



Read(X,x)

x=x * 2

Write(X,x)

Output(X)

-Æ®·£Àè¼Ç T1°ú T2°¡ µ¥ÀÌÅͺ£À̽º X¿¡ µ¿½Ã¿¡ Á¢±ÙÇÏ¿© °»½Å ¿¬»êÀ» ¼öÇàÇÏ¿´À¸³ª ½ÇÁ¦·Î´Â T2¸¸ °»½ÅµÈ °á°ú°¡ µÇ°í T1Àº ¹«È¿°¡ µÇ¾ú´Ù.

?¸ð¼ø¼º(inconsistency)

T1

T2

Read(X,x)

x=x -100

Write(X,x)







Read(Y,y)

y=y +100

Write(Y,y)

Output(X)

Output(Y)




Read(X,x)

x=x * 2

Write(X,x)

Read(Y,y)

y=y * 2

Write(Y,y)

Output(X)

Output(Y)

-Æ®·£Àè¼Ç T1°ú T2¿¡¼­ µ¥ÀÌÅͺ£À̽º °»½Å °á°ú X¿Í Y´Â µÎ Æ®·£Àè¼ÇÀÌ ¿øÇÏ´Â °á°ú°¡ ¾Æ´Ñ ¸ð¼øµÈ °á°ú·Î ³²°Ô µÈ´Ù.

¢Ã¿¬¼â º¹±Í(cascading rollback)

T1

T2

Read(X,x)

x=x +100

Write(X,x)



Read(Y,y)

Rollback T1




Read(X,x)

x=x * 2

Write(X,x)

Output(X)

-Æ®·£Àè¼Ç T1ÀÌ X¸¦ °»½ÅÇÑ ÈÄ¿¡ Y¸¦ Àдٰ¡ rollback(T1)À» ÇϰԵǸé ÀÌ¹Ì ¼º°øÀûÀ¸·Î °»½ÅÀÌ ³¡³­ T2´Â rollbackÀÌ ¾ÈµÇ¹Ç·Î °á°úÀûÀ¸·Î T1¿¡ ÀÇÇØ ¹«È¿°¡ µÈ´Ù.

¢Ã·ÎÅ· ±â¹ý

-·ÎÅ·(locking)Àº Æ®·£Àè¼ÇÀÌ Æ¯Á¤ µ¥ÀÌÅͺ£À̽º ¾ÆÀÌÅÛ¿¡ ´ëÇØ LockÀ» °É¾î ´Ù¸¥ Æ®·£Àè¼ÇÀ¸·ÎºÎÅÍ °£¼·À» ¹æÁöÇÏ´Â ¹æ¹ýÀÌ´Ù.

-LockÀÌ °É¸° ¾ÆÀÌÅÛÀº LockÀ» °ÉÀº Æ®·£Àè¼Ç¿¡ ÀÇÇØ¼­¸¸ UnlockÇÒ ¼ö ÀÖ´Ù.

¢Ã·ÎÅ· ±Ô¾à

¢ÃÆ®·£Àè¼Ç T°¡ Read(X)³ª Write(X) ¿¬»êÀ» ÇÏ·Á¸é ¹Ýµå½Ã ¸ÕÀú Lock(X) ¿¬»êÀ» ½ÇÇàÇØ¾ß ÇÑ´Ù.

¢ÃÆ®·£Àè¼Ç T°¡ ½ÇÇàÇÑ Lock(X)¿¡ ´ëÇØ¼­´Â T°¡ ¸ðµç ½ÇÇàÀ» Á¾·áÇϱâ Àü¿¡ ¹Ýµå½Ã Unlock(X) ¿¬»êÀ» ½ÇÇàÇØ¾ß ÇÑ´Ù.

¢ÃÆ®·£Àè¼Ç T´Â ´Ù¸¥ Æ®·£Àè¼Ç¿¡ ÀÇÇØ ÀÌ¹Ì X¿¡ LockÀÌ °É·Á ÀÖÀ¸¸é ´Ù½Ã Lock(X)¸¦ ½ÇÇà½ÃŰÁö ¸øÇÑ´Ù.

¢ÃÆ®·£Àè¼Ç T´Â X¿¡ LockÀ» ÀڱⰡ °É¾î ³õÁö ¾Ê¾Ò´Ù¸é Unlock(X)¸¦ ½ÇÇà½ÃŰÁö ¸øÇÑ´Ù.

*ÀϹÝÀûÀ¸·Î Æ®·£Àè¼Ç ³»¿¡¼­ °É¾î ³õÀº ¸ðµç LockÀº Æ®·£Àè¼ÇÀÌ Á¤»óÀûÀ¸·Î Á¾·áµÇ¸é ÇØÁ¦°¡ µÈ´Ù.

¢Ã·ÎÅ· À¯Çü

¢ÃShared-lock(S-lock, °ø¿ë ·ÎÅ©): Æ®·£Àè¼Ç T°¡ ¾ÆÀÌÅÛ X¿¡ ´ëÇØ S-lockÀ» °É¸é T´Â ÀÌ ¾ÆÀÌÅÛ¿¡ ´ëÇØ ÂüÁ¶ÇÏ´Â ±ÇÇÑÀº °®Áö¸¸ º¯°æÇÒ ¼ö´Â ¾ø´Ù. À̶§ ÀÌ X¿¡ ´ëÇØ ´Ù¸¥ Æ®·£Àè¼ÇÀÌ µ¿½Ã¿¡ S-lockÀ» °Å´Â °ÍÀÌ Çã¿ëµÈ´Ù.

LockÀÇ ¾ç¸³¼º

Ti Tj

S-lock

X-lock

S-lock

T

F

X-lock

F

F

?Exclusive-lock(X-lock, Àü¿ë ·ÎÅ©): Æ®·£Àè¼Ç T°¡ ¾ÆÀÌÅÛ X¿¡ ´ëÇØ X-lockÀ» °É¸é T´Â X¿¡ ´ëÇØ ÂüÁ¶¿Í º¯°æÀ» ¸ðµÎ ÇÒ ¼ö ÀÖ´Ù. À̶§ ´Ù¸¥ Æ®·£Àè¼ÇÀº ÀÌ X¿¡ ´ëÇØ ¾î¶² Lockµµ °É ¼ö ¾ø´Ù.

¢Ã·ÎÅ· ¿ä·É

µ¥ÀÌÅͺ£À̽º

|

±¸¿ª

|

È­ÀÏ

|

µð½ºÅ© ºí·Ï

|

·¹ÄÚµå

|

ÇÑ ·¹ÄÚµåÀÇ Çʵå

-

¨ç·ÎÅ· ¿ä·ÉÀ» µû¸£Áö ¾ÊÀº ½ºÄÉÁÙ ¨è·ÎÅ· ¿ä·ÉÀ» µû¸¥ ½ºÄÉÁÙ

T1

T2


T1

T2

X-lock(X)

Read(X,x)

x=x +100

Write(X,x)

Unlock(X)









X-lock(Y)

Read(Y,y)

y= y + 100

Write(Y,y)

Unlock(Y)






X-lock(X)

Read(X,x)

x=x * 2

Write(X,x)

Unlock(X)

X-lock(Y)

Read(Y,y)

y= y * 2

Write(Y,y)

Unlock(Y)


X-lock(X)

Read(X,x)

x=x +100

Write(X,x)

X-lock(Y)

Unlock(X)



Read(Y,y)

y= y + 100

Write(Y,y)

Unlock(Y)







X-lock(X)

Read(X,x)

x=x * 2

Write(X,x)



X-lock(Y)

Unlock(X)

Read(Y,y)

y= y * 2

Write(Y,y)

Unlock(Y)

Æ®·£Àè¼Ç ³»¿¡¼­ ù ¹øÂ° UnlockÀÌ ¼öÇàµÈ ÈÄ¿¡´Â LockÀ» ¼öÇàÇÏÁö ¾Ê´Â´Ù.

¢Ã·ÎÅ· ´ÜÀ§

-·ÎÅ· ´ÜÀ§¶õ ·ÎÅ· ´ë»óÀÌ µÇ´Â µ¥ÀÌÅÍ °´Ã¼ÀÇ Å©±â¸¦ ¸»ÇÑ´Ù.

-·ÎÅ· ´ÜÀ§°¡ Å©¸é º´Çà ¼öÇà ¼öÁØÀÌ ³·¾ÆÁö°Ô µÇ¾î µ¥ÀÌÅͺ£À̽ºÀÇ °øÀ¯ Á¤µµ°¡ ¶³¾îÁöÁö¸¸ º´Çà Á¦¾î´Â °£´ÜÇØÁö°í, ·ÎÅ· ´ÜÀ§°¡ ÀÛÀ¸¸é µ¥ÀÌÅͺ£À̽ºÀÇ °øÀ¯ Á¤µµ°¡ ¿Ã¶ó°¡´Â ¹Ý¸é ·ÎÅ©ÀÇ ¼ö°¡ ¸¹¾ÆÁö°Ô µÇ¾î °ü¸®°¡ º¹ÀâÇØÁø´Ù.

-ÀϹÝÀûÀ¸·Î ·¹ÄÚµå ´ÜÀ§·Î ·ÎÅ· ¼öÇà

¢ºº´·Ä ¿¬»ê °á°ú´Â <T1, T2>¼øÀ¸·Î ¼öÇàÇÑ °á°ú³ª <T2, T1>¼øÀ¸·Î ¼öÇàÇÑ °á°úÁß¿¡ ÇϳªÀÏ ¶§°¡ ÀÌ»óÀÌ ¾ø´Â Æ®·£Àè¼Ç ½ºÄÉÁÙÀÌ µÇ´Â °ÍÀÌ´Ù.

¢Ã<T1, T2> ?<T2, T1>

x=1100 x=2000

y=2100 y=4000

x=2200 x=2100

y=4200 y=4100

¨ç·ÎÅ·±Ô¾à ¹ÌÁؼö¨è·ÎÅ·±Ô¾à Áؼö

x=1100 x=1100

x=2200 x=2200

y=4000 y=2100

y=4100 y=4200