¢ÃÈÀÏ󸮽ýºÅÛ
-¿î¿µÃ¼Á¦¸¦ ÅëÇØ¼ µ¥ÀÌÅÍ ÈÀÏÀ» Á¶ÀÛ
-ÈÀÏ¿¡ ´ëÇÑ ±¸Á¶ Á¤ÀÇ´Â »ç¿ëÇÏ´Â ÇÁ·Î±×·¥º°·Î Á¸Àç
*ÈÀÏ(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À» °Å´Â °ÍÀÌ Çã¿ëµÈ´Ù.
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