Real Alternative DBMS ALTIBASE Altibase User Memory Tablespace 알티베이스기술백서 2008 년 6 월
목 차 사용자메모리테이블스페이스의필요성... 3 테이블스페이스종류... 3 사용자메모리테이블스페이스특징... 4 메모리테이블스페이스구조...4 메모리테이블스페이스속성...5 메모리테이블스페이스의상태...5 메모리테이블스페이스활용... 6 메모리객체분산관리...6 백업및완전 / 불완전복구...7 메모리리소스한계상황대처...8 체크포인트시디스크부하분산...9 일부데이터를이용한별도시스템구축...9 메모리테이블스페이스관리... 10 결론... 11 Copyright c 2008 ALTIBASE Corporation. All Rights Reserved. 이문서는정보제공을목적으로제공되며, 사전에예고없이변경될수있습니다. 이문서는오류가있을수있으며, 상업적또는특정목적에부합하는명시적, 묵시적인책임이일체없습니다. 이문서에포함된알티베이스제품의특징이나기능의개발, 발표등의시기는알티베이스재량입니다. 알티베이스는이문서에대하여관련된특허권, 상표권, 저작권또는기타지적재산권을보유할수있습니다. ALTIBASE User Memory Tablespace 2
Altibase 사용자메모리테이블스페이스 효율적인대용량메모리데이터관리솔루션 초기버전의 Altibase 메인메모리 (Main Memory) 상주형 DBMS 는시스템의제한적인메모리용량때문에적은양의데이터를고성능으로처리하는것에만족되었습니다. 그러나기술의발달로점차시스템에서사용가능한메모리용량제한이사라지면서많은기업들이대용량데이터까지도메인메모리 DBMS 를적용하여서비스할수있게되었습니다. 알티베이스는이러한변화에맞춰 DB 관리자가대용량메모리데이터들을보다효율적이고안정적으로관리할수있도록사용자메모리테이블스페이스 (User Memory Tablespace) 를제공합니다. 사용자메모리테이블스페이스의필요성 Altibase 5 이전의 Hybrid DBMS 는기존의메모리 DBMS 형태에추가적으로디스크데이터를지원하기위해논리적으로하나의메모리테이블스페이스와다수의디스크테이블스페이스를지원하는형태로제공되었습니다. 그러나 Hybird DBMS 가점차대용량의메모리데이터지원과보다많은디스크데이터를함께관리하도록도전받으면서, DB 관리자는보다다양한상황에서데이터베이스를관리해야할필요성이증가했습니다. 알티베이스는기업이유연하고효율적으로대용량의데이터베이스를관리할수있도록사용자메모리테이블스페이스의개념을도입했습니다. 데이터베이스관리자는자사에 Altibase 를적용해대량의메모리데이터를여러개의사용자메모리테이블스페이스로구성함으로써보다다양한방법으로백업계획을수립할수있도록했습니다. 또한장애가발생하여도적은비용 ( 시간 ) 으로복구가가능해져데이터베이스관리를위한여러작업들을보다쉽게수행합니다. 테이블스페이스종류 Altibase Hybrid DBMS 는데이터가저장되는위치에따라다음의 3 가지테이블스페이스를지원합니다. 디스크테이블스페이스 메모리테이블스페이스 휘발성 (Volatile) 테이블스페이스디스크테이블스페이스에생성된객체의데이터는파일시스템에기록이되며필요한경우버퍼풀에데이터를적재하여접근합니다. 메모리테이블스페이스에생성된객체의데이터는 DBMS 구동시메모리에적재되며이후해당데이터접근시디스크입출력을유발하지않고메모리에서직접접근이가능합니다. 휘발성테이블스페이스는데이터가메모리상에서보관되는점은메모리테이블스페이스와동일합니다. 그러나메모리테이블스페이스가데 ALTIBASE User Memory Tablespace 3
이터의백업이미지와변경이력을디스크에모두저장하여 DBMS 를재구동시데이터의무결성을보장하는것과달리휘발성테이블스페이스는데이터의변경이력을포함한어떠한정보도디스크에기록하지않습니다. 이러한특징으로휘발성테이블스페이스는 DBMS 구동을종료할때저장된객체들이모두사라집니다. 사용자메모리테이블스페이스특징 사용자메모리테이블스페이스란 Altibase Hybrid DBMS 에서메모리객체를저장할수있는사용자정의테이블스페이스입니다. 사용자메모리테이블스페이스는디스크테이블스페이스와의독립성이보장되며기존디스크테이블스페이스와동일한인터페이스를제공합니다. 사용자는메모리테이블스페이스를생성, 삭제및변경을할수있으며메모리테이블스페이스별로백업및복구가가능합니다. 또한특정테이블스페이스를오프라인상태로변경할수있습니다. 메모리테이블스페이스구조 Altibase 메모리테이블스페이스는시스템메모리상의메모리데이터페이지들의리스트와디스크상의체크포인트이미지로구성됩니다. 메모리데이터페이지들은논리적으로시스템메모리공간상의메모리테이블스페이스에저장되며, 체크포인트를할때각메모리테이블스페이스의체크포인트이미지파일에그변경내용이기록됩니다. < 그림 1> 메모리테이블스페이스구조 체크포인트이미지파일은메모리테이블스페이스내의객체들을백업하기위한메모리테이블스페이스전용파일로 DBMS 재구동시저장된객체들을메모리공간으로올리고백업및복구시간을단축하는용도로사용됩니다. Altibase 메모리테이블스페이스는핑퐁체크포인트방식을사용하기때문에각메모리테이블스페이스는두개의이미지파일과연결됩니다. 메모리데이터에대한인덱스객체는기본적으로운영중변경내용이기록되지않습니다. 메모리데이터의인덱스객체는메모리테이블스페이스가아닌별도의메모리공간에저장되며, DBMS 가재구동시해당인덱스들을다시생성합니다. 그러나 Altibase 는메모리데이터의인덱스객체에대해영구 (Persistence) 적인속성으로변경이가능합니다. 이속성을사용하면정상적으로 DBMS 를종료하거나메모리테이블스페이스를오프라인상태 ALTIBASE User Memory Tablespace 4
로변경할때디스크에인덱스의내용을저장할수있어, DBMS 를재구동시저장된이미지를메모리로빠르게적재합니다. 메모리테이블스페이스속성 처음데이터베이스를생성하면시스템테이블스페이스를제외하고사용자의데이터저장을위하여 SYS_TBS_MEM_DATA 라는이름의기본메모리테이블스페이스와 SYS_TBS_DISK_DATA 라는이름의기본디스크테이블스페이스가자동으로생성됩니다. 사용자는이두개의기본테이블스페이스이외에추가적으로메모리테이블스페이스나디스크테이블스페이스를생성하여사용할수있습니다. 메모리테이블스페이스는여러개의데이터파일로구성되는디스크테이블스페이스에서데이터파일별로속성이적용되는것과달리모든객체들이하나의선형적인메모리공간에저장됩니다. 또한체크포인트이미지파일만을가지고있어속성이테이블스페이스전체에적용됩니다. 메모리테이블스페이스는생성할때다음의몇가지속성들을지정할수있습니다. 초기테이블스페이스의크기 자동확장여부및확장크기 테이블스페이스의최대크기 체크포인트이미지파일저장경로및파일분할여부생성된메모리테이블스페이스에대해초기크기와체크포인트이미지파일의분할여부를제외하고는속성변경이가능합니다. 메모리테이블스페이스의상태 사용자메모리테이블스페이스는디스크테이블스페이스와마찬가지로다음의 3 가지상태를가질수있습니다. 온라인상태 오프라인상태 폐기 (Discard) 상태메모리테이블스페이스는운영상태에서온라인 / 오프라인상태로전환이가능하며, DBMS 컨트롤 (Control) 단계에서폐기상태로전환할수있습니다. 온라인상태는테이블스페이스내에저장된객체들에정상적으로접근할수있는상태로모든테이블스페이스는일반적으로이상태에서운영됩니다. 온라인상태의메모리테이블스페이스는모든객체및데이터가메모리에적재되어있습니다. 오프라인상태는해당테이블스페이스가메모리에적재되지않은상태이며해당테이블스페이스에속한객체들에접근하지못합니다. 메모리테이블스페이스를오프라인상태로전환하면그때까지변경된페이지내용을연결된체크포인트이미지파일에기록하고해당테이블스페이스메모리공간을해제하고시스템에반납합니다. 폐기상태는테이블스페이스를삭제하기위한상태로한번폐기상태가되면다른상태로전환이불가능합니다. 예를들어체크포인트이미지파일이손상된경우 DBMS 가정상적으로구동되지않을때, 이를해결 ALTIBASE User Memory Tablespace 5
하기위해 DBMS 컨트롤단계에서문제의테이블스페이스를폐기상태로전환합니다. 이후서버를다시정상적으로구동하여나머지데이터를복구하고, 손상된테이블스페이스를삭제합니다. 메모리테이블스페이스활용 Altibase 의메모리테이블스페이스는디스크테이블스페이스와는구조적인차이가있습니다. 그러나사용자가메모리테이블스페이스와디스크테이블스페이스를구분하지않고동일한인터페이스로동일한작업을할수있도록설계하고구현했습니다. 따라서사용자가메모리테이블스페이스를생성하면이후사용은디스크테이블스페이스와크게다르지않습니다. 다만특정객체를메모리테이블스페이스에생성하면해당객체는서버구동시메모리공간으로적재되며이후해당객체에접근시에디스크입출력없이빠르고일정한응답속도를보장합니다. 데이터베이스관리자는사용자메모리테이블스페이스를사용하여다음과같이보다안정적이고효율적으로데이터베이스를관리할수있습니다. 메모리객체분산관리 메모리테이블스페이스별백업및완전 / 불완전복구 메모리리소스한계상황에서데이터베이스관리자의적극적이고유연한대처 체크포인트이미지경로분산을통한디스크부하분산 일부메모리객체만을이용하여별도의시스템구축 메모리객체분산관리 사용자메모리테이블스페이스를지원하지않을경우모든메모리객체는하나의체크포인트이미지파일로관리되기때문에해당체크포인트이미지파일이손상되면전체메모리객체를사용할수없게됩니다. 사용자는메모리객체의중요도나접근빈도에따라각기다른테이블스페이스로구성하여데이터베이스를운영할수있습니다. 이와같이메모리객체를특정기준에따라분산하여관리함으로써예측하지못한장애발생시그피해를최소화할수있습니다. < 그림 2> 메모리테이블스페이스분산으로데이터보호 분산된테이블스페이스중일부에문제가발생한경우문제가된테이블스페이스를제외하고나머지테이블스페이스만을이용하여구동하는것이가능합니다. 이러한방법으로전체데이터베이스의데이터중일 ALTIBASE User Memory Tablespace 6
부를복구할수있습니다. 어떤경우불필요한데이터의증가로인해전체데이터베이스가영향을받는문제가발생할수있습니다. 업무중요도에따라객체들을구분하고각각다른테이블스페이스를이용하여데이터베이스를분산하여구축한경우상대적으로중요도가낮은객체들을저장하고있는테이블스페이스에크기제한을설정함으로써이와같은문제를사전에예방할수있습니다. 불필요한데이터가증가하면해당테이블스페이스는크기제한에걸려더이상데이터가쌓이지않으며해당객체를접근하는응용애플리케이션이외에나머지의응용애플리케이션들은중요한업무에대해정상적으로서비스를계속수행할수있습니다. 이외에도전체메모리테이블스페이스에대한크기를제한함으로써문제가더크게악화되는것을방지할수있습니다. 분산되어구축된모든메모리테이블스페이스크기의합은 Altibase 데이터베이스의속성인 MEM_MAX_DB_SIZE 속성의설정값이상으로확장될수없습니다. Altibase 는사용자메모리테이블스페이스를지원하면서, 데이터베이스운영중에필요한메타데이터는시스템테이블스페이스중하나인딕셔너리 (Dictionary) 테이블스페이스에별도로저장하여보호합니다. 백업및완전 / 불완전복구 Altibase 에서는사용자메모리테이블스페이스를지원하면서기존의디스크테이블스페이스와동일한백업방법및복구방법을지원합니다. 데이터베이스관리자는디스크와메모리의테이블스페이스구분없이원하는일부의데이터를테이블스페이스단위로백업하는것이가능합니다. 그리고백업받은이미지들을이용하여완전복구또는불완전복구를수행할수있습니다. 사용자메모리테이블스페이스가지원되기전에는 Altibase 운영시필요한메타정보가논리적인하나의메모리테이블스페이스에저장되었습니다. 그렇기때문에일부디스크테이블스페이스만백업을받고이후해당백업이미지로데이터베이스를복구하는것이불가능했습니다. < 그림 3> 메타테이블스페이스만으로테이블스페이스복구가능 따라서복구시반드시전체메모리테이블스페이스가필요하였으며점점메모리데이터가대용량화되면서데이터베이스관리자는많은어려움을겪어야했습니다. Altibase 는사용자메모리테이블스페이스를지원하면서시스템딕셔너리테이블스페이스를별도로분리함으로써사용자메모리데이터가증가하는것과별도로다수의백업및복구정책을수행할수있도록지원합니다. 이제 DB 관리자는모든메모리객체를함 ALTIBASE User Memory Tablespace 7
께백업할필요없이시스템딕셔너리테이블스페이스만을백업하여일부데이터의복구계획을수립할수있습니다. 메모리테이블스페이스에대해서도 DBMS 를아카이브 (Archive) 방식으로운영한다면완전복구뿐만아니라아카이브트랜잭션로그들을이용하여특정트랜잭션로그의위치혹은특정시점으로불완전복구하는것이가능합니다. 데이터베이스관리자는이제메모리객체에대해서도시스템고장으로인한사고뿐만아니라사용자실수에의한사고에대해서도백업된데이터를이용하여복구하는것이가능합니다. 메모리리소스한계상황대처 모든메모리객체는 DBMS 구동시시스템메모리상으로적재되어야하며운영시에도항상메모리상에존재하여야하기때문에시스템의메모리공간이부족해지면서비스장애상황이발생할수있습니다. 불필요한데이터가쌓임으로인해시스템메모리가부족해진다면불필요한데이터를삭제하고 DBMS 를재구동하든지전체데이터베이스를재구성하여메모리공간을확보해야합니다. 그러나대용량데이터베이스의경우전체데이터베이스를재구성하는데소요되는시간이상당히많이필요하기때문에작업자체가불가능할수있습니다. 또한작업도중전체데이터베이스에대한접근이불가능하기때문에서비스가계속중지된상태로작업을수행해야하는어려움이있습니다. Altibase 에서제공하는사용자메모리테이블스페이스를이용하여데이터베이스를구축할경우, 시스템의메모리부족이예상된다면특정테이블스페이스의상태를오프라인상태로변경하였다가다시온라인상태로만들어불필요한메모리공간을줄일수있습니다. 이때기업은서비스를중단없이할수있습니다. < 그림 4> 오프라인으로전환하여부족한메모리공간확보 또한메모리공간이부족하여 DBMS 가비정상적으로종료된경우이미커져버린메모리데이터때문에시스템에메모리증설없이는구동을못하는경우가발생할수있습니다. 이러한경우삭제가능한테이블스페이스를폐기상태로변경하는방법으로시스템메모리증설없이 DBMS 를정상적으로구동할수있습니다. 이와같이일부테이블스페이스만을이용하여구동시킨후필요한작업을수행하여불필요한메모리자원을해제하고 DBMS 를정상적인상태로만들수있습니다. ALTIBASE User Memory Tablespace 8
체크포인트시디스크부하분산 시스템에사용가능한물리적인디스크가여러개존재한다면메모리테이블스페이스의체크포인트이미지경로를나누어지정하여메모리테이블스페이스체크포인트시발생하는디스크입출력부하를분산할수있습니다. 메모리테이블스페이스의체크포인트의경우퍼지 (Fuzzy) 체크포인트기법과핑퐁 (Ping-pong) 체크포인트기법을적용하여구현하였기때문에특별히트랜잭션수행에영향을미치지는않습니다. 하지만데이터변경에대한트랜잭션로그가기록되는디스크또는디스크테이블스페이스의저장공간과혼용하여사용하는경우디스크입출력경합이발생하여전체 DBMS 성능에영향을줄수있으므로데이터베이스구축시이러한점을반드시고려해야합니다. 가능한한트랜잭션로그저장용디스크와시스템테이블스페이스, 사용자디스크테이블스페이스, 사용자메모리테이블스페이스저장공간은분리하여구축하는것을권장합니다. < 그림 5> 적절한분산으로구축된데이터베이스구성예 하나의메모리테이블스페이스를사용하는경우에도체크포인트이미지경로를여러개지정하여물리적으로디스크를분산시키는것이가능합니다. 이경우해당메모리테이블스페이스의파일분할속성에따라새로분할되는체크포인트이미지가주어진체크포인트이미지경로들에차례로생성됩니다. 일부데이터를이용한별도시스템구축 종종운영중인시스템과별도로백업시스템을구축하든지테스트시스템을구축하기위해사용중인데이터베이스로부터데이터를이관할필요가있습니다. 만일대용량의메모리데이터를사용하고별도로구축해야하는시스템이충분한메모리리소스를가지지못한경우라면일부메모리데이터만을사용하여이러한시스템을구축해야합니다. 그러나 Altibase 사용자메모리테이블스페이스를이용하여메모리객체들을서로다른사용자메모리테이블스페이스에분산시켜놓았다면데이터베이스관리자는쉽게일부데이터만을이관하여시스템을구축할수있습니다. 데이터베이스관리자는이관대상메모리객체들을확인하고해당객체들이포함된메모리테이블스페이스의체크포인트이미지를복사합니다. 그리고 DBMS 의컨트롤단계에서나머지메모리테이블스페이스들에 ALTIBASE User Memory Tablespace 9
대해폐기상태로전환하여구동한다음옮겨지지않은테이블스페이스들을삭제하는것으로주어진목적을달성할수있습니다. 마찬가지로메모리객체를제외한디스크객체들만필요한경우에도전체메모리객체를모두이관할필요없이필요한디스크테이블스페이스와딕셔너리테이블스페이스만을이관하여구축하는것이가능합니다. 메모리테이블스페이스관리 Altibase 에서제공되는성능뷰 (Performance View) 를통하여테이블스페이스의정보를확인하는것이가능합니다. 테이블스페이스관련되어다음과같은성능뷰가제공됩니다. V$TABLESPACES V$MEM_TABLESPACES V$MEM_TABLESPACE_CHECKPOINT_PATHS V$MEM_TABLESPACE_STATUS_DESC 데이터베이스관리자는 DBMS 를컨트롤단계로구동한후 V$TABLESPACES 성능뷰를이용하여각테이블스페이스들의종류와상태를확인할수있습니다. 또한특정테이블스페이스의상태를폐기상태로변경할수있습니다. < 그림 6> V$TABLESPACES 성능뷰조회쿼리와결과값 DBMS 가구동되어서비스중이라면 V$MEM_TABLESPACES 성능뷰를이용하여메모리테이블스페이스에대한할당받은크기와사용량등의여러속성정보를확인할수있습니다. 또한 V$MEM_TABLESPACE_STATUS_DESC 성능뷰와의조인 (Join) 으로메모리테이블스페이스들의구체적인상태를확인하는것이가능합니다. ALTIBASE User Memory Tablespace 10
< 그림 7> 메모리테이블스페이스상태및크기조회 V$MEM_TABLESPACE_CHECKPOINT_PATHS 성능뷰는메모리테이블스페이스들의지정된체크포인트이미지경로를확인할수있습니다. 메모리테이블의정보를알려주는 V$MEM_TBL_INFO 성능뷰와메모리테이블에생성되어있는인덱스정보를알려주는 V$ MEM_BTREE_HEADER, V$ MEM_BTREE_NODEPOOL 성능뷰를조합하여특정메모리테이블스페이스에포함된메모리객체들과각객체들의크기를확인할수있습니다. < 그림 8> 특정메모리테이블스페이스에저장된테이블객체정보및크기조회 < 그림 9> 특정메모리테이블스페이스에소속된인덱스객체정보및크기조회 결론 대부분의기업들은고객들로부터더욱빠르고정확한서비스를요구받고있으며그에따라처리해야하는데이터의양은점차증가하고있습니다. 기업들은다양한고객의요구에맞춰좀더빠른서비스를제공하면서데이터를안전하게관리하기위해메인메모리데이터베이스에관심을갖게되었습니다. 초기의메인메모리 DBMS 가적은데이터를사용하는일부서비스에만적용하는수준에만족했으나, 점차그활용범위가넓어져이제는대용 ALTIBASE User Memory Tablespace 11
량의메모리데이터를관리하고서비스하는것도보편화되었습니다. 알티베이스는기존디스크기반 DBMS 에서데이터관리에활용하던테이블스페이스의개념을메인메모리 DB 에도동일하게확장적용하여대용량메모리데이터를관리하는데어려움을겪는기업들을효과적으로관리하도록도와줍니다. 기업들은대용량의데이터를메인메모리 DBMS 로처리할수있어빠른응답시간을보장하면서도안정적이고효율적으로데이터를관리할수있습니다. 각기업의데이터베이스관리자는 Altibase 에서제공하는사용자메모리테이블스페이스를이용하여메모리데이터를보다효율적으로구성하고운영할수있으며여러예기치못한장애에보다효과적으로대응할수있습니다. ALTIBASE User Memory Tablespace 12
알티베이스 서울특별시구로구구로3동 182-13 대륭포스트 2차 1008호대표전화 : 02-2082-1000 FAX : 02-2082-1099 대전사무소 대전광역시서구둔산동 921 주은리더스텔 901호대표전화 : 042-489-0330 FAX : 042-489-0081 제품구입및기술지원 02-2082-1114 support@altibase.com http://www.altibase.com http://adc.altibase.com ALTIBASE User Memory Tablespace 13