Background Image
조회 수 396 추천 수 2 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

이전글: CUBRID Internal: 큐브리드의 저장공간관리 (DIsk Manager, File Manager)

 

볼륨은 어떻게 관리될까?

- 볼륨 헤더(Volume Header)와 섹터 테이블(Sector Table) -


 앞선 글에서 디스크 매니저(Disk Manager)가 섹터의 예약(reservation)을 관리한다고 이야기하였다. 이번 글에서는 볼륨 내의 섹터들이 어떻게 관리되는지에 대한 구체적인 이야기와 이를 위해 볼륨이 어떻게 구성되어 있는지를 다룬다. 여기서 다루어지는 볼륨의 구조는 그대로 non-volatile memory (SSD, HDD 등)에 쓰여진다.

 

볼륨 구조


 디스크 매니저의 가장 큰 역할은 파일생성과 확장을 위해 섹터들을 제공해주는 것이다. 이를 위해 각 볼륨은 파일들에 할당해줄 섹터들과 이를 관리하기 위한 메타(meta)데이터로 이루어져 있다. 메타데이터들이 저장된 페이지를 볼륨의 시스템 페이지(System Page)라고 하며, 볼륨에 대한 정보와 각 섹터들의 예약 여부를 담고 있다. 시스템 페이지는 다음과 같이 두가지로  분류할 수 있다.

  • 볼륨 헤더 페이지 (Volume Header Page, 이하 헤더 페이지): 페이지 크기, 볼륨 내 섹터의 전체/최대 섹터, 볼륨 이름 등, 볼륨에 대한 정보를 지니고 있는 페이지

  • 섹터 테이블 페이지 (Sector Table Page, 이하 STAB 페이지): 볼륨 내의 각 섹터의 예약여부를 비트맵으로 들고 있는 페이지

이러한 시스템페이지들은 볼륨이 생성될 때 미리 볼륨 내의 정해진 공간에 쓰이고, 이 페이지들이 포함된 섹터를 제외한 나머지 섹터들이 파일 매니저로부터의 섹터 예약요청을 처리하기 위해 사용된다. 볼륨 헤더는 볼륨의 첫 번째 페이지에 할당되고, STAB 페이지는 헤더 페이지의 바로 다음 페이지부터 볼륨의 크기를 모두 커버할 수 있는 만큼의 양이 연속적으로 할당된다(disk_stab_init()). 이를 도식화하면 다음과 같다.

volume_format.png

첫 섹터가 시스템 페이지들을 위해 할당된 모습을 볼 수 있다. 시스템 페이지들의 수가 한 섹터를 못 채울 경우 그림처럼 시스템페이지들을 위해 할당된 섹터 내의 페이지들이 일부 사용되지 않을 수 있고, 볼륨에 크기가 커지면 이에 따라 시스템페이지들을 위한 섹터가 둘 이상 할당될 수도 있다.

 

볼륨 헤더 (Volume Header)


볼륨 헤더(DISK_VOLUME_HEADER)는 볼륨의 첫 번째 페이지에 쓰이며, 기본적으로 볼륨에 대한 정보들이 고정 크기로 들어가고 나머지 공간에는 가변길이 변수들이 들어간다. 볼륨 헤더가 담고 있는 정보는 크게 5가지 정도로 분류할 수 있다.

- 볼륨 정보: 볼륨 자체에 대한 정보로 볼륨 전체에 공통으로 적용되는 정보이다. 볼륨의 타입, 캐릭터 셋(set), 생성 시간, 섹터당 페이지 수, 페이지의 크기 등이 저장된다.

- 섹터 정보: 볼륨의 현재 섹터의 정보이다. 볼륨 내에 몇 개의 섹터가 있는지, 얼마나 확장될 수 있는지 등이 저장된다.

- 시스템페이지 정보: 앞서 이야기한 시스템페이지에 대한 정보들이 저장된다.

- 체크포인트 정보: 마지막으로 체크포인트가 성공 시 체크포인트의 시작 지점의 로그 레코드 LSA 정보가 저장된다. 이는 리커버리과정에서 사용된다.

- 가변길이 변수: 볼륨 헤더 페이지 내에서 볼륨 헤더의 모든 고정변수를 제외한 나머지 공간은 가변길이 변수들을 위한 공간이다. 볼륨의 full path나 사용자 정의 comment 등이 저장된다.

- 기타: reserved 등 동작과 무관한 특수목적 변수들이 저장된다.

구체적으로 볼륨 헤더 구조체(DISK_VOLUME_HEADER)가 담고 있는 정보(변수)들은 다음과 같다.

 

분류 변수 타입 변수명 설명
볼륨 INT8 db_charset 데이터베이스의 캐릭터 셋
INT16 volid 해당 볼륨의 볼륨 식별자
DB_VOLTYPE type 볼륨의 타입, 볼륨이 어떻게 관리될지를 결정
Permanent: 영구적으로 볼륨유지
Temporary: 서버 종료/재시작시 제거. 임시데이터를 저장하는데 기존 볼륨의 공간이 부족할 경우 생성된다.
DB_VOLPURPOSE purpose 볼륨의 이용목적, 볼륨을 어떻게 사용할지를 결정
Permanent: 영구적인 데이터를 저장할 것.
Temporary: 임시적인 데이터를 저장할 것. 임시데이터를 저장할 때에 임시타입의 볼륨을 만들기전에 임시목적의 영구타입볼륨이 있을 경우 먼저 사용한다.
INT64 db_creation 데이터베이스 생성시간
INT16 next_volid 여러 볼륨이 있을 경우 그들을 연결하는 포인터, 다음 볼륨의 식별자를 담음
DKNPAGES sect_npgs 한 섹터당 페이지 수
INT16 iopagesize 한 페이지의 크기
HFID boot_hfid 볼륨 부팅과 멀티 볼륨관련된 정보를 담고있는 힙(Heap)파일의 식별자
섹터 DKNPAGES nsect_total 볼륨의 현재 총 섹터 수, 볼륨파일의 크기를 결정
DKNPAGES nsect_max 볼륨이 확장될 수 있는 최대 크기의 섹터 수
SECTID hint_allocsect 섹터예약시 섹터테이블의 어디부터 탐색할지 캐싱해둔 값
시스템 페이지 DKNPAGES stab_npages 섹터테이블이 차지하는 페이지 수
PAGEID stab_first_page 섹터테이블의 시작페이지
PAGEID sys_lastpage 마지막 시스템 페이지 (현재 stab_first_page+stab_npages -1)
체크포인트 LOG_LSA chkpt_lsa 체크포인트 시작점의 LSA, 리커버리분석의 시작점 (ARIES의 master record)
가변길이 변수 char [1] var_fields 가변길이 변수들의 시작점, var_fileds + offsetto* 가 각 가변변수의 위치
INT16 offset_to_vol_fullname 볼륨의 절대경로 이름의 offset
INT16 offset_to_next_vol_fullname next_volid 볼륨의 절대경로 이름의 offset
INT16 offset_to_vol_remarks 볼륨에 대한 코멘트의 offset
코멘트는 볼륨포맷(disk_format())시에 적히는 것으로 유저가 addvoldb를 실행하면서 적는 코멘트나 볼륨의 공간이 가득차 자동으로 새로운 볼륨을 만들어질 경우 적히는 코멘트("Automatic Volume Extension") 등이 들어간다.
기타 INT32 reserved0/1/2/3 미래 확장성을 위한 예약변수들
INT8/32 dummy1/2 alignment를 위한 더미변수들
char [] magic 볼륨파일의 매직넘버

* 각 변수에 대한 설명을 달아두었긴 했지만, 명확한 이해를 위해서는 각 변수의 값이 언제 설정되고, 어떻게 사용되는지 등을 알아야 한다. 이에 대한 자세한 내용은 각 변수가 이용되는 부분을 설명할 때 다시 살펴보도록 한다.

 

섹터 테이블 (Sector Table)


 섹터 테이블(STAB)은 볼륨 내 모든 섹터들의 사용 여부(예약 여부)를 저장하고 있는 비트맵이다. 섹터 테이블 페이지의 하나의 비트는 하나의 섹터의 예약 여부를 나타낸다. 섹터 테이블은 볼륨 헤더 페이지의 바로 다음 페이지(볼륨의 두번째 페이지, stab_first_page)부터 시작하여 볼륨의 최대 크기(nsect_max)를 커버할 수 있는 만큼의 페이지(stab_npages)를 사용한다. 섹터예약에 관한 연산을 수행할 때, 각 비트를 하나씩 순회하며 연산을 수행할 수도 있지만 큐브리드는 비트들을 DISK_STAB_UNIT (이하 unit, 유닛)이라는 단위로 묶어 관리, 연산하고 불가피할 경우에만 비트를 순회한다. 비트연산을 할 때에 CPU 아키텍쳐등을 고려하여 효율적인 방법으로 처리 할 수 있도록 이러한 처리단위를 제공한다. 정리하자면 섹터 테이블의 비트맵은 여러페이지로 구성되며 각 페이지는 다시 유닛으로 나뉘고, 유닛의 비트들은 각각의 하나의 섹터의 예약 여부를 나타낸다. 섹터 테이블을 읽거나 조작하는 등의 연산은 모두 이 유닛을 기반으로 이루어진다.

* 현재 유닛은 다음과 같이 UINT64형이다. CPU아키텍처나 디자인에 맞춰 이 값을 변경시키면 STAB의 관리 단위를 변경 시킬 수 있다. 주석 또한 이 값의 변경을 통해 유닛단위를 쉽게 변경할 수 있을 것이라 이야기하고 있다.

만약 sector_id가 32100인 섹터에 대한 예약여부를 확인하려할 때, STAB에서 해당 비트의 위치는 어떻게 구할 수 있을까? 이는 마치 초에서 (시,분,초)를 구하듯 (page_id, offset_to_unit, offset_to_bit) 으로 다음과 같이 계산된다.

page_id: (볼륨헤더의 stab_first_page) + sector_id / (페이지의 비트 수)
offset_to_unit: sector_id % (페이지의 비트 수) / (페이지내 유닛의 수)
offset_to_bit: sector_id % (페이지의 비트 수) % (페이지내 유닛의 수)

만약 1KB 페이지, 64bit unit이라면 sector_id 32100인 (3, 117, 36)이 된다. 안타깝게도 페이지의 크기가 2^n형태가 아니기 때문에 OS의 페이지 테이블이나 CPU 캐시처럼 단순 비트 쉬프트연산으로 유닛과 오프셋등을 구할 수 없다. 때문에 비싼 /, % 연산이 사용된다.

* IO 페이지의 크기는 4KB, 16KB 등 2^n형태이더라도 모든 페이지가 공통적으로 페이지타입, LOG_LSA 등의 공간을 이미 예약해두었기 때문에 실제 사용가능한 크기는 이 영역을 제외한 크기이다.

 

섹터 테이블의 연산

 섹터의 예약정보를 조회하거나 예약하려면 섹터테이블의 비트맵을 조작해야한다. 이러한 연산들은 앞서 말한 유닛 단위를 기반으로 이루어지며, 하나의 섹터 비트나 유닛을 참조할 일 보다는 여러 유닛들을 참조하는 경우가 대부분이기 때문에 커서(Cursor, DISK_STAB_CURSOR)와 이터레이션 인터페이스(disk_stab_iterate_units())를 제공한다. 커서는 볼륨 내 한 섹터의 STAB에서의 위치(page_id, offset_to_unit, offset_to_bit)를 가리킨다. 또, 커서가 가리키는 유닛에 대한 연산을 위해 커서가 가리키고 있는 유닛의 포인터(page, unit)를 들고 있다.

typedef struct disk_stab_cursor DISK_STAB_CURSOR;                 
struct disk_stab_cursor
{
    const DISK_VOLUME_HEADER *volheader;    /* Volume header */

    PAGEID pageid;      /* Current page ID */
    int offset_to_unit;     /* Offset to current unit in page. */
    int offset_to_bit;      /* Offset to current bit in unit. */

    SECTID sectid;      /* Sector ID */     

        // 위의 변수들은 모두 현재 커서가 가리키는 섹터에 대한 정보와 STAB내에서 섹터의 위치
        // 아래의 변수들은 위의 변수들이 가리키는 STAB내의 유닛을 참조하기 위한 포인터

    PAGE_PTR page;      /* Fixed table page. */                   
    DISK_STAB_UNIT *unit;       /* Unit pointer in current page. */
};

이터레이션 함수인 disk_stab_iterate_units() 의 선언부는 다음과 같다. (설명에 필요하지 않은 인자들은 제외하였다.)

static int disk_stab_iterate_units (..., DISK_STAB_CURSOR * start, DISK_STAB_CURSOR * end, DISK_STAB_UNIT_FUNC f_unit, void *f_unit_args)

앞서 이야기한 커서 자료형의 start, end와 이터레이션하면서 유닛에 적용할 함수(DISK_STAB_UNIT_FUNC)와 함수의 인자를 매개변수로 받는 것을 볼 수있다. 이 함수는 [start, end) 범위의 유닛을 순회하면서 각 유닛마다 DISK_STAB_UNIT_FUNC함수를 적용 시킨다. 여타 프로그래밍언어에 있는 map() 함수를 생각하면 이해가 쉽다. start, end 커서는 disk_stab_cursor_setat\()) 류의 함수를 통해 STAB의 시작이나 끝, 특정 sector ID로 설정된다. DISK_STAB_UNIT_FUNC* 는 함수포인터로 다음과 같다.

typedef int (*DISK_STAB_UNIT_FUNC) (..., DISK_STAB_CURSOR * cursor, bool * stop, void *args);

disk_stab_iterate_units()에서 이터레이션되어 만나는 각 유닛에 대한 커서를 인자로 받아 사용자가 정의한 작업을 진행한다. 이 때 stop에 true를 넣고 함수를 종료하면, disk_stab_iterate_units() 의 이터레이션이 종료된다. 예를 들어 30개의 섹터를 예약하려 할 때, 이번 유닛에서 30개의 섹터 예약을 모두 완료했다면 더 이상의 작업을 중지하는 종료 조건으로 활용할 수 있다. 이러한 유닛 이터레이션을 통한 연산에는 섹터들 예약, 섹터들 예약 해제, 가용 섹터들의 갯수 확인 등이 있다. 좀 더 확실한 이해를 위해 가용 섹터들의 갯수확인에 사용되는 DISK_STAB_UNIT_FUNCdisk_stab_count_free() 와 이에 대한 호출부를 살펴보자.

// free sector의 갯수를 구하는 함수 정의
static int disk_stab_count_free (THREAD_ENTRY * thread_p, DISK_STAB_CURSOR * cursor, bool * stop, void *args)
{   
    DKNSECTS *nfreep = (DKNSECTS *) args;

    /* add zero bit count to free sectors total count */
    *nfreep += bit64_count_zeros (*cursor->unit);
    return NO_ERROR;
}

// 함수 호출부
int disk_rv_volhead_extend_redo (THREAD_ENTRY * thread_p, LOG_RCV * rcv)
{
      ...
      disk_stab_cursor_set_at_sectid (volheader, volheader->nsect_total - nsect_extend, &start_cursor); 
      disk_stab_cursor_set_at_end (volheader, &end_cursor);
        error_code = disk_stab_iterate_units (thread_p, volheader, PGBUF_LATCH_READ, &start_cursor, &end_cursor, disk_stab_count_free, &nfree);
      ...
    disk_cache_update_vol_free (volheader->volid, nfree);
      ...
}

호출부의 예는 recovery의 redo phase에 사용되는 함수중 하나인 disk_rv_volhead_extend_redo() 로, 실제로 확장된 볼륨 내의 free setor의 갯수를 디스크 캐시에 업데이트하기 위한 코드이다. 확장하기 전의 위치(volheader->nsect_total - nsect_extend)에 start커서를 두고, stab의 끝에 end커서를를 두고 disk_stab_iterate_units()함수를 호출하여 [start, end)를 순회하며 모든 유닛들에서 0인 비트들의 갯수를 구하는 것을 볼 수 있다.

* 이러한 이터레이션 방식은 파일매니저와 디스크매니저의 여러 곳에서 사용된다. 대표적으로 나중에 살펴볼 파일 매니저의 파일 테이블과 유저 테이블 등에서도 이러한 패턴으로 데이터를 접근, 조작한다.


이어서 다룰 디스크 매니저 내용은 다음과 같다.

- 섹터 예약 및 예약 해제

- 볼륨 확장


  1. No Image

    Y2K38, "UNIX Millennium Bug"

    시작하며 당신은 소프트웨어 엔지니어 입니까.  정보시스템 매니저 입니까, 아니면 평범한 회사원 입니까? 당신이 무엇을 하던지간에 50세 이하라면 당신은 Y2K Millennium Bug를 만나실 수 있습니다. 1990년대 후반의 Y2K 이슈 1990년대 후반에 전 세계가 떠들석했던 이슈가 있었는데 연도를 2자리로 표기해서 생긴 “Y2K”입니다.  1997-12-23이 아니라 97-12-23 형태로 말입니다.  90년대 이전 대부분의 정보시스템은 연도를 ‘1997’과 같이 4자리로 표기하지 않고 ‘97’과 같이 2자리로 표현했는데,  이런 관행이 정보시스템이 2000년과 1900년을 구분을 못하는 문제의 원인이 되었던 것이지요.  2000년 10월 23일에 태어난 신생아의 주민등록번호는 001023로 시작되는데 이것은 1900년에 태어난 100살의 노인도 마찬가지 입니다,  주민번호가 고유하지 않을 가능성이 생긴 것입니다.  정보시스템에서는 치명적이라 할 수 있지요.  온 세계의 정보 시스템 관리자가 자기의 시스템에서 사용하는 날짜가 4자리로 되어있는지 검사하고 감리하느라고 분주했고 “Y2K 비즈니스”라는 사업분야가 생길 정도였습니다.  Y2K의 위력에 버금가는 아니 그것보다 클 수 있는 이슈가 Y2K38 Uni...
    Date2017.12.07 Category나머지... By한기수 Views1577 Votes0
    Read More
  2. CUBRID contribute의 첫걸음, CUBRID 빌드하기

    CUBRID는 open source DBMS로 모든 소스코드가 www.github.com/cubrid에 공개되어 있으며, CUBRID에 관심있는 누구든지 프로젝트에 참여할 수 있습니다. 그리고 CUBRID 제품 이슈는 http://jira.cubrid.org에서 관리되고 있습니다. 이 곳에서 자유롭게 CUBRID 이슈사항 등록 및 커뮤니케이션이 가능합니다. open source에 contribute하는 방법에는 소스코드 수정 외에도 프로젝트 문서 수정, 이슈에 대한 정리 활동 등 다양한 방식이 있습니다. 이 중 소스코드 수정의 1단계인 CUBRID 빌드에 대해 소개하도록 하겠습니다. 이하 절차는 CentOS 6.9 x86_64에서 진행하였습니다. 1. 필수 패키지 설치 CUBRID 빌드를 수행하려면 아래의 패키지가 필요합니다. > git(1.7.6이상), cmake(2.8이상), gcc-c++, systemtap, systemtap-sdt-devel, bison, flex, ncurses-devel, ant, elfutils-libelf-devel, libtool, rpm-build CUBRID빌드를 위한 필수 패키지를 아래 명령어로 설치할 수 있습니다. sudo yum install cmake gcc-c++ systemtap systemtap-sdt-devel bison flex ncurses-devel ant elfutils-libelf-devel libtool rpm-build 2. git설치 git은 CentOS 6.9에서 base repository...
    Date2017.12.01 Category제품 여행 By이동현 Views1428 Votes0
    Read More
  3. 제16차 동북아 공개SW활성화포럼 참관기

    11월 15일 ~ 16일 중국 톈진에서 개최된 제16차 동북아 공개SW활성화포럼 행사에 다녀왔습니다.   동북아 공개SW활성화포럼은 한중일 협력체를 구성하여 글로벌 시장에서의 영향력을 확보하기 위한 목적으로 2004년 4월 출범하였으며, 금년까지 총 16차에 걸쳐 포럼 행사가 개최되었습니다. (작년에는 제주도에서 개최됨) 또한, 정부 차원의 IT 국장급 회의도 병행해서 운영이 되는데, 한중일 IT국장회의에서 수립된 IT 분야 협력 기본 방향에 맞춰 동북아 공개SW활성화포럼에서는 3국간 협력사업 및 자국 내 공개SW 활성화 활동을 수행하게 됩니다.   한중일 3국에는 각각 한국공개SW활성화포럼(KOPF), 중국공개SW활성화포럼(COPF), 일본공개SW활성화포럼(JOPF)이 구성되어 있으며, 각 포럼에는 4개의 워킹그룹이 - WG1 기술개발분과, WG2 인력양성분과, WG3 표준화분과, WG4 비즈니스분과 - 활동을 하고 있습니다.   [1일차]   오전에는 워킹그룹별로 1년 동안의 각 분과 활동에 대한 정리 및 2018년 계획을 수립하는 회의가 진행되었으며, 오후에는 한중일 국장 합의문과 포럼 의장 합의문에 대한 논의가 진행되었습니다. 또한, 주최국인 중국에서 환영만찬을 제공해 주었...
    Date2017.11.22 Category오픈소스 이야기 By정병주 Views1421 Votes0
    Read More
  4. 오픈소스 CMS XE3, CUBRID 연동 지원

    최근 XE 오픈소스 개발팀으로부터 이메일을 수신했습니다. 현재 진행 중인 XpressEngine 3.0 (XE3) 프로젝트에서 CUBRID 연동 개발 및 배포가 완료되었다는 내용으로, XE3의 Laravel 프레임워크(PHP 프레임워크)에서 사용할 수 있는 CUBRID 용 DB 드라이버를 개발한 것입니다. 개발된 코드는 GitHub 등을 통해 공개가 되었으며, XE3에 포함되어 배포 중에 있다고 합니다.   -> https://packagist.org/packages/xpressengine/laravel-cubrid -> https://github.com/xpressengine/laravel-cubrid   XE3의 전신은 고영수 개발자가 1999년 말에 배포한 게시판(BBS) 프로그램 ‘제로보드(Zeroboard)’로서, 2000년대 초반 닷컴 열풍과 더불어 많은 사용자 층을 확보하게 되었습니다. 이후 2007년 3월에 NHN (현, 네이버)에서 인수하여 오픈소스 프로젝트로 전환을 하였으며, 브랜드명도 XpressEngine (XE)로 변경되었습니다.   -> NHN, ‘제로보드XE’ 공개 (머니투데이, 2007-08-13)   2000년대 말 당시 NHN 기술부문에서 대외적으로 역점을 두었던 사안이 국내 오픈소스 소프트웨어 생태계 기여 및 독립사이트 활성화를 위한 NHN 정보플랫폼 확산이었는데, XE는 이러한 활동에 중심적...
    Date2017.11.03 Category알려요~ By정병주 Views2146 Votes0
    Read More
  5. Oracle Database SE2 살펴보기

    오라클의 FY 2016 3사분기 시작일인 2015년 12월 1일을 기점으로 Oracle Database Standard Edition 1과 Standard Edition 제품 판매가 중단되었으며, Standard Edition 2가 새롭게 추가 되었습니다. 또한, 2016년 8월 31일자를 기해서 Oracle SE1, SE에 대한 서포트와 보안 패치, 업그레이드 서비스가 종료되었습니다.   DBMS 시장의 강자인 Oracle Database 제품군에 변화가 생긴 것으로, 이러한 정책 변화는 다수의 사용자들에게 직접적인 영향을 주는 사안이라 국내 IT 매체에서도 이슈화를 할 것으로 생각했었습니다. 그런데, 당시 관련 기사를 검색해 보면 CIO Korea의 외신 번역기사와 데이터넷 기사 외에는 전무한 상태였으며, 개인적으로는 ‘왜 관련 기사를 쓰지 않을까?’하고 약간 의아한 생각이 들기도 했었습니다.   -> "오라클 데이터베이스 만료일에 주의하라" 애널리스트 경고 (CIO Korea, 2015-11-13) -> “SMB 시장에서 脫 오라클 바람 예고” (데이터넷, 2016-03-02)   어느덧 2년 가까운 시간이 지났기 때문에 대부분의 사용자 분들이 Oracle Database SE2 관련 정보를 습득하고 계시겠지만, 간략하게 정리를 해 보도록 하겠습니다.   구분 SE1 SE SE2 릴리...
    Date2017.10.27 Category시장 살펴보기 By정병주 Views12892 Votes0
    Read More
  6. ‘시작하세요! 큐브리드’ 전자책 다운로드 1천건 돌파!!!

    '시작하세요! 큐브리드' 전자책 다운로드 수가 1,000건을 넘었습니다(10월 20일 기준 1,007건). 금년 2월 8일부터 무료 다운로드가 시작되었으니 약 8개월 10일 정도 걸렸으며, 일 평균 다운로드 수는 4건입니다. 원래 ‘시작하세요! 큐브리드’ 도서는 2015년 5월 출간된 이후 하드 카피와 전자책(PDF) 형태로 유료 판매를 했었으며, 금년 2월에 출판사인 위키북스의 도움으로 전자책을 무료로 전환했습니다. CUBRID 사용자 확산을 위한 조치였는데, 기대 이상으로 많은 분들이 다운로드를 받아가셨습니다.  [도서 다운로드: http://www.cubrid.com/notice/3808747]  참고로, 2008년 2월에는 ‘큐브리드 7.3을 이용한 데이터베이스 이해와 실습’이라는 도서를 출간한 적이 있습니다. 당시 도서 출간 목적은 대학에서 데이터베이스 이론을 가르치면서 DBMS 실습 과정에 CUBRID를 활용하도록 하기 위함 이었습니다. 따라서, 데이터베이스의 이론적인 배경이 부족한 학생들에게 데이터베이스에 대한 기초적인 지식을 습득할 수 있도록 콘텐츠가 구성되어 있습니다. 얼마전 10월 황금연휴 기간에 교보문고 강남점에 간 적이 있었는데, 아직도 책장에 꽂혀 있어서 깜짝 놀랐습니다. 출...
    Date2017.10.20 Category알려요~ By정병주 Views1283 Votes0
    Read More
  7. 국가정보자원관리원 G-클라우드

    G-클라우드 추진 배경 대한민국 전자정부의 심장 역할을 수행하는 국가정보자원관리원(구, 정부통합전산센터)는 47개 중앙행정기관의 IT 인프라를 위탁 운영하는 행정안전부 산하기관으로 약 22,000개 SW와 24,000개 HW 정보자원의 효율적 운용을 통해 24시간 365일 중단 없는 행정 서비스를 제공하고 있으며, 제1센터(대전)와 제2센터(광주)에 각 기관의 업무시스템이 입주하고 있습니다. 국가정보자원관리원에서는 새로운 IT 서비스 패러다임으로 클라우드 컴퓨팅이 부각 되면서 정보자원의 효율적 도입 및 구축을 통한 비용절감과 대국민 서비스 향상의 동시 실현이 가능한 정부 클라우드컴퓨팅 센터 구현을 추진하고 있으며, 2017년까지 1) 전자정부 업무의 클라우드 환경 60% 전환, 2) 공개 소프트웨어 50% 도입, 3) IT 운영 예산 40% 절감이라는 세부적인 목표 하에 G-클라우드 구축사업을 단계적으로 추진해 오고 있습니다. G-클라우드 추진 현황 2011년부터 대전센터를 중심으로 G-클라우드 시범 인프라를 구축하기 시작하였으며, 클라우드 풀(Pool) 구축을 위한 x86 범용 서버와 Linux/Windows 가상화 솔루션, 공개SW 기반의 OS, DBMS, WEB/WAS를 도입하였습니다. 그...
    Date2017.09.19 Category고객 적용사례 By정병주 Views6013 Votes0
    Read More
  8. 서버 시장의 변화 - x86 Up, Unix Down

    2008년 CUBRID가 오픈소스 DBMS로 전환하는 과정에서 내부적으로 중요한 의사결정이 있었습니다. 그것은 바로 Unix 계열 운영체제를 지원하지 않는 것이었습니다. 기존에 CUBRID는 Linux, Windows 운영체제 외에 Unix 계열 운영체제(HP HP-UX, IBM AIX, SUN Solaris)를 모두 지원하였으며, 오픈소스 전환 이후 Linux와 Windows 운영체제에만 집중하기로 한 것입니다. 당시 Unix 계열 고객사도 있었기 때문에 내부적으로 갑론을박이 있었지만, 제한된 개발 리소스로 다양한 운영체제를 지원하는 것보다는 선택과 집중을 통해 CUBRID 제품의 성능 향상과 기능 개선에 초점을 맞추었습니다. 사실, 다양한 운영체제를 지원하기 위해서는 개발 및 QA 인프라 구축, 운영체제 포팅, 그리고 서스테이닝 등 상당한 비용이 수반될 수 밖에 없습니다. 최근 IT 시장조사 기관인 가트너의 2017년 2분기 세계 서버 매출 결과를 보면 x86 서버는 출하량 2.5%, 매출 6.7% 증가한 반면, Unix 서버(RISC·아이테니엄 서버)는 각각 21.4%, 24.9% 하락했습니다. -> 관련 기사: HPE, 2017년 2분기 서버 매출 1위 유지(블로터닷넷, 2017.09.14) Unix 서버 출하량과 매출이 급격하게 추락하는 원인에는 ...
    Date2017.09.15 Category시장 살펴보기 By정병주 Views1825 Votes0
    Read More
  9. 클라우드와 리눅스, 그리고 마이크로소프트

    2014년 10월 미국 샌프란시스코에서 개최된 마이크로소프트 기자간담회에서 2월에 취임한 신임 CEO인 사티아 나델라(Satya Nadella)는 “Microsoft loves Linux”라는 메시지를 전달함으로써 시장에 충격을 주었습니다. 왜냐하면 전임 CEO인 스티브 발머(Steve Ballmer)는 리눅스를 “암(cancer)”적인 존재라는 표현으로 적대시 해왔고, 마이크로소프트 회사 자체가 독점(proprietary) 소프트웨어를 통해 엄청난 수익을 창출한 대표적인 기업이기 때문입니다.  마이크로소프트는 CEO가 바뀌었을 뿐인데 어떻게 리눅스를 바라보는 회사의 입장이 180도 바뀌었을까요? 사티아 나델라 CEO의 설명을 들어보면 이미 마이크로소프트 애저(Azure) 플랫폼의 VM (Virtual Machine) 중에 약 20% 정도가 오픈소스 운영체제라는 것입니다. 따라서, 마이크로소프트 애저 플랫폼을 확산시키기 위해서는 리눅스 사용자들을 수용할 수 밖에 없었던 것이며, 실질적으로 ‘마이크로 소프트의 밥줄은 윈도우가 아니다.’라는 기사를 확인해 보면, 2015년 4사분기 기준으로 매출 실적 1위는 클라우드 서버, 2위는 게임 부문, 3위 오피스, 4위 윈도우 순으로 나타납니다. (윈도우의 전체 매출 비중은 10%)...
    Date2017.09.06 Category시장 살펴보기 By정병주 Views1237 Votes0
    Read More
  10. 공생발전형 SW 생태계 구축 전략에 대한 단상

    작년 10월말 ‘공생발전형 SW 생태계 구축 전략’이 발표되었다. 전략의 기본방향은 IT서비스는 대기업 중심의 시장질서에서 전문*중소기업 중심으로 전환하고, 패키지SW*임베디드SW는 대한민국 경제의 사활이 걸린 분야로 핵심경쟁력 제고에 주력하겠다는 것이다. 이를 위한 정책 부문으로 SW 공정거래 질서 확립, SW 기초체력 강화, SW 융합 활성화, 지속적 추진체계 확보 4개를 선정하고 총 11개의 정책 과제를 제시했다. 이 중 시장에 충격을 주었던 정책 과제가 소프트웨어 공정거래 질서 확립을 위한 전문*중소기업 참여 확대 및 감시기능 강화였다. 그 동안 대기업 SI 업체들이 계열사의 일감몰아주기에 의존하고 저가로 공공시장에 참여함으로써 소프트웨어 생태계를 왜곡하고 중소 SW 기업의 성장을 저해했다는 이유에서다. 구체적인 실천방안으로 소프트웨어산업진흥법 개정을 통해 상호출자제한기업집단 소속 SI 기업의 공공시장 신규 참여를 전면 제한한다는 내용을 제시했으며, 법률 개정 전까지는 대기업 참여하한제 하한금액을 상향 적용하겠다는 것이다. 한국SW전문기업협회 등 패키지 SW 업계에서는 기자간담회를 개최하는 등 환영의 목소리를 일관되게 내고 있...
    Date2012.01.26 Category오픈소스 이야기 Byadmin Views25657 Votes0
    Read More
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 16 Next
/ 16

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales