1.DB
1.1.Data : 데이터란 의미 있는 값을 포함하고 있는 자료를 말한다. ‘데이터’가데이타’ 아니라 ‘데이터’가 올바른 표기법이다.
Information : 정보란 특정한 목적에 맞게 정리된 자료를 말한다.
1.2.DB : Database의 약자로서, 특정한 정보를 가진 데이터
1.3.Database : 데이터베이스란 특정한 정보를 가진 데이터의 집합체를 말한다. 간략히 DB라고 한다. ‘데이터 베이스’라고 띄어서 쓰지 않고, ‘데이터베이스’라고 붙여서 쓴다. 데이터베이스를 관리하는 시스템을 DBMS라고 한다.
1.4.DBMS : Database Management System의 약자로서, 데이터베이스 관리 시스템을 말한다. 시스템 소프트웨어의 일종이다. DB가 특정 정보들의 집합체라면, DBMS는 그러한 DB를 관리하는 시스템이다. 관계형 데이터베이스 관리 시스템(RDBMS)과 비정형 데이터를 관리하는 노에스큐엘(NoSQL) 등이 있다. 데이터베이스를 관리하기 위한 언어에는 DDL, DML, DCL 등이 있다.
1.6.RDBMS : Relational Database Management System의 약자로서, 행과 열로 된 2차원의 표로 데이터를 표현하는 관계형 데이터베이스 관리 시스템(DBMS)이다. 정형화된 데이터를 분석하기 위해 사용한다. RDBMS에는 Oracle, MySQL, MariaDB, MS-SQL, Access, Sybase, PostgreSQL, DB2, Informix, InterBase, Firebird, SQLite, Tibero, Cubrid, Altibase, SUNDB 등이 있다. 빅데이터 등 비정형화된 데이터를 분석하기 위해서는 NoSQL을 사용한다.
1.7.NoSQL : 정형화된 데이터를 분석하기 위한 기존의 관계형 데이터베이스 관리 시스템(RDBMS)과 달리, 빅데이터 등 비정형 데이터를 분석하기 위한 DBMS이다. 몽고디비(MongoDB), 에이치베이스(HBase), 카산드라(Cassandra) 등이 있다. ‘노에스큐엘’이라고 읽는데, Not Only SQL이라고도 한다.
1.8.Metadata : 메타데이터란 데이터의 속성을 설명해 주는 데이터, 즉 데이터에 대한 데이터이다. 메타데이터를 이용하면 데이터를 구조적으로 잘 표현할 수 있고, 필요한 데이터를 빠르게 찾을 수 있다.
1.9.DB Server : Database Server의 약자로서, 데이터베이스(DB)를 저장 및 관리하는 서버를 말한다.
2. 자료구조
2.1.Array : 어레이 또는 배열(配列, 排列)은 같은 자료형을 가진 여러 값을 묶어서 하나의 값인 것처럼 다루는 것을 말한다. 예를 들어, int [] score = {80, 90, 100};처럼 사용할 수 있다. 이 때 score [0]=80; score [1]=90; score [2]=100;의 값을 가지게 된다. int[][]int [][]와 같이 하여 2차원 배열, 또는 더 확장하여 int[][]…[]int [][]…[]와 같은 n차원 배열도 가능하다. 배열은 구조가 간단하고 값을 읽어오는 속도가 빠르다는 장점이 있지만, 배열의 중간에 새로운 값을 추가하거나 삭제하기 어렵다는 단점이 있다. 이러한 단점을 보완하기 위해 링크드 리스트(Linked List)를 사용할 수 있다.
2.2.Node : 노드란 네트워크 또는 데이터 구조를 구성하는 각각의 개체를 말한다. 하나의 노드는 다른 노드와 연결되는데, 연결 방식에 따라 링크드 리스트(Linked List)와 트리(Tree) 등이 있다.
2.3.Linked List : 링크드 리스트 또는 연결 리스트는 각각의 노드(Node)가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 자료구조이다. 단일 연결 리스트, 이중 연결 리스트, 원형 연결 리스트 등이 있다. 배열(Array)에 비해 새로운 값을 추가하거나 기존 값을 삭제하기가 쉽지만, 검색을 통해 원하는 값을 찾는데 시간이 오래 걸린다는 단점이 있다. 이러한 단점을 보완하기 위해 트리(Tree) 구조를 사용할 수 있다.
2.4.Tree : 트리란 나뭇가지를 거꾸로 뒤집은 모양으로 노드(Node)를 배치한 자료구조이다. 루트 노드를 기준으로 좌우에 하나씩 노드를 생성할 수 있는데, 왼쪽에는 부모보다 작은 값을 배치하고, 오른쪽에는 부모보다 큰 값을 배치한다. 예를 들어, {5, 3, 7, 1, 4}라는 순서로 값을 줄 경우, 위 그림과 같은 트리 구조로 자료를 저장한다. 트리는 링크드 리스트(Linked List)에 비해 정렬과 검색 속도가 빠르지만, 데이터의 양이 커질수록 점점 느려지는 단점이 있다. 이러한 단점을 해결하기 위해 해시(Hash) 방식을 사용할 수 있다.
2.5.Hash : 해시 또는 해시 값은 해시 함수에 의해 변환된 데이터 값을 말한다. ‘해쉬’가 아니라 ‘해시’가 올바른 표기법이다.
2.6.Hash Function : 해시 함수는 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑하는 알고리즘이다. 해시 함수는 결정론적으로 작동하기 때문에, 원래의 데이터가 같으면 해시 값도 항상 동일하다. 하지만 서로 다른 데이터가 동일한 해시 값을 가질 수 있기 때문에 해시 충돌이 발생할 수 있다.
2.7.Hashing : 해싱이란 해시 함수를 사용하여 주어진 값을 변환한 뒤, 해시 테이블에 저장하고 검색하는 기법을 말한다. 해싱에 사용되는 자료구조는 배열(Array)과 링크드 리스트(Linked List)가 조합된 형태이다.
2.8.Hash Table : 해시 테이블은 키와 값을 매핑해 둔 데이터 구조이다. 해시 함수를 이용하여 검색하고자 하는 값을 변환하면 그 값이 저장된 위치를 즉시 알아낼 수 있다. 데이터의 양이 아무리 많아지더라도 원리적으로 해시 변환과 검색에 걸리는 시간은 항상 동일하다. 따라서 방대한 데이터에서 특정한 값을 검색할 때 해시 테이블을 사용하면 검색 시간을 획기적으로 단축할 수 있다.
2.9.Hash Map : 해시 맵은 기존 해시 테이블의 기능을 개선한 신 버전의 해시 테이블이다.
3.DB 테이블
3.1.Table : DB Table이란 데이터베이스에서 가로(행, row, record)와 세로(열, column, field)로 짜인 표에 기록된 데이터의 집합이다.
3.2.Record : 레코드란 데이터베이스에서 하나의 단위로 취급되는 자료의 집합을 말한다. 하나의 레코드는 DB Table에서 가로 방향으로 한 줄로 나타낸다. 행(行) 또는 로(Row)라고도 한다. 각각의 레코드를 다른 레코드와 구별하기 위해 키(Key) 값을 사용한다. 반대말은 필드(Field)이다.
3.3.Field : 필드란 데이터베이스에서 세로 방향으로 표시한 칼럼(Column)을(Column) 말한다. 열(列)이라고도 한다. 필드는 DB Table에서 가로로 표시한 레코드(Record)에 대한 개별적인 속성값을 표시한다. ‘DB 필드’라고도 한다. 반대말은 레코드(Record)이다.
3.4.Key : 키란 데이터베이스에 저장되어 있는 레코드를 유일하게 구별할 수 있는 식별자(Identifier)를 말한다. 기본 키(Primary Key), 슈퍼 키(Super Key), 후보 키(Candidate Key), 대리 키(Alternate Key), 외래 키(Foreign Key) 등이 있다.
Primary Key : 기본 키 또는 프라이머리 키란 데이터베이스에서 레코드를 유일하게 식별하기 위해 개발자가 사용하도록 정한 키(Key)를 말한다. 간략히 PK라고 한다. 다수의 후보 키 중에서 하나를 기본 키로 정한다.
3.5.Super Key : 수퍼 키란 데이터베이스에서 레코드를 유일하게 식별할 수 있는 속성의 집합으로 구성된 키(Key)를 말한다. 예를 들어, “회원(ID, 성명, 휴대폰)”이라는 레코드에서 수퍼 키는 ID, 휴대폰, {ID, 성명}, {ID, 휴대폰}, {성명, 휴대폰}, {ID, 성명, 휴대폰}으로 총 6개가 존재한다.
3.6.Candidate Key : 후보 키란 데이터베이스에서 레코드를 유일하게 식별할 수 있는 수퍼 키(Super Key) 중에서 더 이상 줄일 수 없는 키(Key)를 말한다. 예를 들어, “회원(ID, 성명, 휴대폰)”이라는 레코드에서 후보 키는 ‘ID’와 ‘휴대폰’의 2개이다. 여러 개의 후보 키 중에서 하나를 기본 키(Primary Key)로 선택한다.
3.7.Alternate Key : 대리 키란 데이터베이스에서 레코드를 유일하게 식별할 수 있는 후보 키(Candidate Key) 중에서 기본 키(Primary Key)로 선택되지 않고 남은 키(Key)를 말한다.
3.8.Foreign Key : 외래 키 또는 포린 키란 데이터베이스에서 다른 테이블에 있는 레코드를 유일하게 식별할 수 있는 키(Key)를 말한다. 간략히 FK라고 한다.
3.9.Index : 인덱스는 데이터베이스에서 검색 속도를 향상하기 위해 추가로 생성한 데이터 필드이다. 색인(索引)이라고 한다. 필요한 정보를 찾기 위해 전체 데이터를 검색하지 않고 인덱스만 검색한 후 해당 정보가 있는 위치로 신속히 이동하여 정보를 보여줌으로써 검색 속도를 획기적으로 향상할 수 있다.
3.10.Entity : 엔티티는 데이터베이스에서 한 건의 자료를 구성하는 레코드를 말한다. ‘엔터티’라고도 한다. 각 Entity 간의 관계를 Relationship이라고 하고, 이것을 도표로 나타낸 것을 ERD라고 한다.
3.11.ERD : Entity Relationship Diagram의 약자로서, 말로 되어 있는 요구사항을 분석하여 그림으로 그려내어 그 관계를 도출한 다이어그램을 말한다. ERD를 그리기 위한 툴에는 ER-win 등이 있다.
4. 쿼리
4.1.Query : 데이터베이스나 파일의 내용 중 원하는 내용을 검색하기 위하여 몇 개의 코드(code)나 키(Key)를 기초로 질의하는 것을 말한다. ‘쿼리’라고 읽는다.
4.2.Subquery : 서브쿼리 또는 하위쿼리란 데이터베이스에서 쿼리를 실행한 결괏값이 다른 쿼리문의 일부로 포함되어 사용되는 쿼리(Query)를 말한다. 예를 들어, SELECT * FROM person WHERE age <(SELECT AVG(age) FROM person) ORDER BY age; 구문은 person 테이블에서 나이가 평균보다 어린 사람들을 조회하여 정보를 보여준다.
4.3.Slow Query : 슬로 쿼리란 데이터베이스를 관리하기 위한 질의문의 실행 속도가 현저히 느린 쿼리를 말한다. Slow Query Log를 확인하여, 쿼리를 수정함으로써 속도를 향상할 수 있다.
4.4.SQL : Structured Query Language의 약자로서, 구조화 질의어를 말한다. ‘에스큐엘’ 또는 ‘시퀄’이라고 읽는다. 데이터베이스 조작 언어(DML)의 일종이다. SQL 기반의 RDBMS에는 Oracle, MySQL, MS-SQL, Tibero, Cubrid 등이 있다.
4.5.CRUD : 데이터베이스 관리 시스템(DBMS)에서 데이터를 생성(Create), 조회(Read), 갱신(Update), 삭제(Delete)하는 것을 말한다. ‘씨알유디’라고 읽는다.
5.DB 명령어
5.1.DB Command : 데이터베이스 명령어 또는 DB 명령어란 데이터베이스 관리 시스템(DBMS)에서 특정한 기능을 수행하기 위해 사용자가 입력하는 명령어를 말한다. DDL, DML, DCL 등이 있다.
5.2.DDL : Data Definition Language 또는 Data Description Language의 약자로서, 데이터베이스의 구조인 스키마(Schema)를 정의하는 언어이다. 데이터 정의 언어라고 한다. 데이터베이스의 테이블을 새로 생성(CREATE)하거나, 이미 존재하는 테이블을 제거(DROP)하거나, 데이터의 속성을 변경(ALTER)하거나, 테이블명을 변경(RENAME)하거나, 테이블에 있는 모든 데이터를 일괄 삭제(TRUNCATE)한다.
5.3.CREATE : 데이터베이스의 테이블, 인덱스, 저장 프로시저 등을 새로 생성하기 위해 사용하는 DB 명령어이다. DDL의 일종이다. ‘크리에이트’라고 읽는다. 테이블을 생성하기 위해 CREATE TABLE 명령어를 사용한다. 예를 들어, CREATE TABLE person ( id INTEGER PRIMARY KEY, firstname VARCHAR(50) not null, lastname VARCHAR(70) not null ); 구문은 id와 이름 및 성을 필드로 가지는 person이라는 DB 테이블을 새로 생성한다. 반대말은 DROP이다.
5.4.DROP : 데이터베이스에서 이미 존재하는 테이블을 제거하기 위해 사용하는 DB 명령어이다. DDL의 일종이다. ‘드롭’이라고 읽는다. 예를 들어, DROP TABLE person; 구문은 person이라는 DB 테이블을 삭제한다. 반대말은 CREATE이다.
5.5.TRUNCATE : 데이터베이스에서 테이블에 있는 모든 데이터를 일괄 삭제하기 위해 사용하는 DB 명령어이다. DDL의 일종이다. ‘트렁케이트’라고 읽는다. 예를 들어, TRUNCATE TABLE person; 구문은 person 테이블에 있는 모든 데이터 내용을 일괄 삭제한다. DROP 명령어가 해당 테이블의 내용과 테이블 자체도 삭제하는 반면, TRUNCATE 명령어는 해당 테이블은 남겨두고 그 안에 있는 데이터만 모두 삭제한다.
5.6.ALTER : 데이터베이스에서 데이터의 속성을 변경하기 위해 사용하는 DB 명령어이다. DDL의 일종이다. ‘알터’라고 읽는다. 예를 들어, ALTER TABLE person ADD birthyear INTEGER; 구문은 person이라는 테이블에 출생연도 필드를 새로 추가한다.
5.7.RENAME : 데이터베이스에서 테이블명을 변경하기 위해 사용하는 DB 명령어이다. DDL의 일종이다. ‘리네임’이라고 읽는다. 예를 들어, RENAME TABLE person TO human; 구문은 테이블 이름을 person에서 human으로 변경해 준다.
5.8.DML : Data Manipulation Language의 약자로서, 데이터베이스를 조작하기 위한 언어이다. 데이터 조작 언어라고 한다. 데이터베이스에서 특정 자료를 조회(SELECT)하거나, 새로운 자료를 삽입(INSERT)하거나, 기존 자료의 내용을 갱신(UPDATE)하거나, 특정 자료를 삭제(DELETE)한다. 가장 대표적인 DML은 SQL이다.
5.9.SELECT : 데이터베이스에서 특정 자료를 조회하기 위해 사용하는 DB 명령어이다. DML의 일종이다. ‘셀렉트’ 또는 ‘실렉트’라고 읽는다. 예를 들어, SELECT * FROM person WHERE age <=20;구문은 person 테이블에서 나이가 20세 이하인 사람을 조회하여 정보를 보여준다.
5.10.INSERT : 데이터베이스에서 특정 데이터를 삽입하기 위해 사용하는 DB 명령어이다. DML의 일종이다. ‘인서트’라고 읽는다. 예를 들어, INSERT INTO person VALUES (’ 홍길동’,홍길동 ’ 010-3000-1234’);구문은 person이라는 테이블에 홍길동이라는 회원의 이름과 전화번호를 삽입한다.
5.11.UPDATE : 데이터베이스에서 특정 데이터를 갱신하기 위해 사용하는 DB 명령어이다. DML의 일종이다. ‘업데이트’라고 읽는다. 예를 들어, UPDATE person SET phone_number 010-3000-5678 WHERE name=’ 홍길동‘;홍길동‘; 구문은 person이라는 테이블에서 성명이 홍길동인 사람을 찾아서 전화번호를 010-3000-5678번으로 갱신해 준다.
5.12.DELETE : 데이터베이스에서 특정 레코드를 삭제하기 위해 사용하는 DB 명령어이다. DML의 일종이다. ‘딜리트’라고 읽는다. 예를 들어, DELETE FROM person WHERE name=’ 홍길동‘;홍길동‘; 구문은 person이라는 테이블에서 성명이 홍길동인 레코드를 찾아서 삭제해 준다.
5.13.DCL : Data Control Language의 약자로서, 데이터베이스에서 특정한 자료에 대한 접근 권한을 제어하기 위한 언어이다. 데이터 제어 언어라고 한다. 특정 사용자에게 어떤 작업을 수행할 수 있는 권한을 부여(GRANT)하거나, 혹은 권한을 회수(REVOKE)한다.
5.14.GRANT : 데이터베이스에서 특정 사용자에게 어떤 작업을 수행할 수 있는 권한을 부여하기 위해 사용하는 DB 명령어이다. DCL의 일종이다. ‘그랜트’라고 읽는다. 예를 들어, GRANT SELECT, UPDATE ON person TO user1, user2; 구문은 user1과 user2라는 두 명의 사용자에게 person 테이블에서 SELECT와 UPDATE 명령어를 사용할 수 있는 권한을 부여한다. 반대말은 REVOKE이다.
5.15.REVOKE : 데이터베이스에서 특정 사용자로부터 어떤 작업을 수행할 수 있는 권한을 취소·회수하기 위해 사용하는 DB 명령어이다. DCL의 일종이다. ‘리보크’라고 읽는다. 예를 들어, REVOKE SELECT, UPDATE ON person TO user1, user2; 구문은 user1과 user2라는 두 명의 사용자로부터 person 테이블에서 SELECT와 UPDATE 명령어를 사용할 수 있는 권한을 회수한다. 반대말은 GRANT이다.
5.16.WHERE : 데이터베이스에서 특정한 조건을 만족하는 열(column)에만 영향을 미치도록 제한하기 위해 사용하는 DB 명령어이다. 예를 들어, SELECT * FROM person WHERE age <=20; 구문은 person 테이블에서 나이(age)가 20세 이하인 사람만 찾아서 정보를 표시해 준다.
5.17.ORDER BY : 데이터베이스에서 자료를 정렬(整列) 하기(整列) 위해 사용하는 DB 명령어이다. ‘오더 바이’라고 읽는다. 예를 들어, SELECT * FROM person ORDER BY age ASC; 구문은 person 테이블에서 값을 읽어온 뒤, 나이(age)를 기준으로 오름차순(ASC, ascending)으로 정렬하라는 뜻이다. 내림차순으로 정렬하려면 DESC(=descending)을 사용한다.
6.JOIN
6.1.Join : 조인이란 데이터베이스에서 특정 테이블을 다른 테이블과 결합하는 것을 말한다. 여러 DB 테이블의 레코드를 조합하여 하나의 열로 표시한다. 내부조인(INNER JOIN), 외부조인(OUTER JOIN)(=왼쪽외부조인(LEFT JOIN), 오른쪽외부조인(RIGHT JOIN), 완전외부조인(FULL JOIN)) 등이 있다.
6.2.INNER JOIN : 이너조인 또는 내부조인이란 데이터베이스에서 특정 테이블을 다른 테이블과 결합하는 방식 중 하나로서, NULL 값이 포함된 레코드는 결과에 나타나지 않는 Join 방식을 말한다. 예를 들어, SELECT * FROM person INNER JOIN address ON person.phone = address.phone; 구문은 person 테이블에 있는 사람의 전화번호와 address 테이블에 있는 사람의 전화번호가 일치하는 경우를 찾아 결괏값에 표시하는데, NULL 값이 포함된 레코드는 결과에 표시하지 않는다. INNER JOIN은 간단히 쉼표(,)로 대체할 수 있다. 예를 들어 위 구문은 SELECT * FROM person, address ON person.phone = address.phone;처럼 간략히 나타낼 수 있다.
6.3.OUTER JOIN : 아우터조인 또는 외부조인이란 데이터베이스에서 특정 테이블을 다른 테이블과 결합하는 방식 중 하나로서, NULL 값이 포함된 레코드도 결과에 나타나도록 하는 Join 방식을 말한다. LEFT JOIN, RIGHT JOIN, FULL JOIN 등이 있다.
6.4.NULL : 널이란 “값이 없음”을 나타내는 표시이다. 데이터베이스에서 데이터 값이 존재하지 않을 때 또는 C 언어에서 포인터가 가리키는 값이 없을 때 등 다양한 경우에 NULL을 사용한다. ‘널 값’이라고도 한다. NULL을 표시하기 위해 그리스 문자의 오메가(ω)를 사용하기도 한다. 아라비아 숫자 영(0)은 그 값이 ‘0’이라 뜻이지만, NULL은 아무런 값이 없다는 뜻으로서, 0과 NULL은 서로 다르다.
6.5.LEFT JOIN : 레프트조인 또는 왼쪽외부조인이란 데이터베이스에서 특정 테이블을 다른 테이블과 결합하는 방식 중 하나로서, 왼쪽 테이블에서 NULL 값이 포함된 레코드도 결과에 나타나도록 하는 Join 방식을 말한다. 정식 이름은 LEFT OUTER JOIN이다. 예를 들어, SELECT * FROM person LEFT OUTER JOIN address ON person.phone = address.phone; 구문처럼 사용할 수 있다. 오라클(Oracle) DBMS의 경우, SELECT * FROM person, address WHERE person.phone = address.phone(+); 구문처럼 사용할 수 있다.
6.6.RIGHT JOIN : 라이트조인 또는 오른쪽외부조인이란 데이터베이스에서 특정 테이블을 다른 테이블과 결합하는 방식 중 하나로서, 오른쪽 테이블에서 NULL 값이 포함된 레코드도 결과에 나타나도록 하는 Join 방식을 말한다. 정식 이름은 RIGHT OUTER JOIN이다. 예를 들어, SELECT * FROM person RIGHT OUTER JOIN address ON person.phone = address.phone; 구문처럼 사용할 수 있다. 오라클(Oracle) DBMS의 경우, SELECT * FROM person, address WHERE person.phone(+) = address.phone; 구문처럼 사용할 수 있다.
6.7.FULL JOIN : 풀조인 또는 완전외부조인이란 데이터베이스에서 특정 테이블을 다른 테이블과 결합하는 방식 중 하나로서, 왼쪽 또는 오른쪽 테이블 중 어디든지 NULL 값이 포함된 레코드를 결과에 나타나도록 하는 Join 방식을 말한다. 정식 이름은 FULL OUTER JOIN이다. 예를 들어, SELECT * FROM person FULL OUTER JOIN address ON person.phone = address.phone; 구문처럼 사용할 수 있다.
7. 트랜잭션
7.1.Transaction : 트랜잭션이란 은행 ATM이나 데이터베이스 등의 시스템에서 사용되는 “쪼갤 수 없는 업무 처리의 최소 단위”를 말한다. 트랜잭션 처리가 정상적으로 완료된 경우 커밋(Commit)을 하고, 오류가 발생할 경우 원래 상태로 롤백(Rollback)한다. 데이터베이스의 트랜잭션이 안전하게 수행되기 위해서는 ACID 조건을 충족해야 한다. ‘트렌젝션’이 아니라 ‘트랜잭션’이 올바른 표기법이다.
7.2.Commit : 커밋이란 데이터베이스 또는 프로그램 소스의 변경 내용을 확정하는 것을 말한다. 데이터베이스 트랜잭션에서 모든 처리가 완료된 경우 COMMIT 명령어를 통해 변화를 확정하고 다른 사용자에게 보이도록 할 수 있다. SVN 등 버전관리 시스템에서 개발자가 작업한 프로그램 소스를 저장소(Repository)에 반영하기 위해 커밋을 한다. 반대말은 롤백(Rollback)이다.
7.3.Rollback : 롤백이란 데이터베이스 또는 프로그램 소스를 이전 상태로 되돌리는 것을 말한다. 반대말은 커밋(Commit)이다.
7.4.Redo Log : 리두 로그는 Oracle에서 데이터베이스에 생긴 변화에 대한 기록을 남겨두는 로그를 말한다. 만약 DB가 깨어질 경우, 리두 로그에 남겨진 기록을 이용하여 원래 상태로 복구할 수 있다.
7.5.ACID : Atomicity, Consistency, Isolation, Durability의 약자로서, 데이터베이스의 트랜잭션이 안전하게 수행되기 위한 4가지 필수적인 성질을 말한다. Atomicity(원자성)는 하나의 트랜잭션은 더 이상 작게 쪼갤 수 없는 최소한의 업무 단위라는 뜻이다. Consistency(일관성)는 트랜잭션이 완료된 결괏값은 일관성 있는 데이터베이스 상태로 유지되는 것을 말한다. Isolation(고립성)은 트랜잭션을 수행하는 도중에 다른 연산 작업이 끼어들지 못하는 것을 말한다. Durability(지속성)는 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 함을 의미한다.
8.DB 접근
8.1.DAO : Data Access Object의 약자로서, 데이터 접근 객체를 말한다. 데이터베이스에 접근하기 위한 커넥션 정보와 데이터의 생성, 수정, 삭제 등 기본적인 쿼리(query)를 정의해 둔 클래스이다. ‘디에이오’ 또는 ‘다오’라고 읽는다.
8.2.DTO : Data Transfer Object의 약자로서, 데이터 이전 객체를 말한다. 데이터를 매번 조금씩 이전하지 않고 여러 데이터를 묶어서 한꺼번에 전송함으로써 시간을 단축시키고 비용을 절감해 준다.
8.3.JDBC : Java Database Connectivity의 약자로서, 자바 응용 프로그램에서 데이터베이스에 연결하기 위한 표준 인터페이스(I/F)이다. 자바 프로그램은 JDBC 인터페이스를 통해 DBMS의 종류에 따라 Oracle 드라이버, MySQL 드라이버, MS-SQL 드라이버 등으로 분기되어 해당 데이터베이스에 접속할 수 있다. 유사한 기능을 하는 것으로 ODBC가 있다.
8.4.ODBC : Open Database Connectivity의 약자로서, 어떤 응용 프로그램을 사용하는지에 상관없이 다양한 데이터베이스에 연결하기 위한 인터페이스(I/F)이다. ODBC는 응용 프로그램과 DBMS의 중간에 위치한다. 응용 프로그램 내에서 ODBC 문장을 사용하면, ODBC가 이를 해석하여 Oracle, MySQL, MS-SQL 등의 DBMS에 전달하는 방식으로 작동한다. 만약 시스템 전면 개편이나 고도화를 통해 DBMS를 다른 종류로 변경하더라도 응용 프로그램의 소스를 수정하지 않고 그대로 사용할 수 있기 때문에 비용 절감 효과가 크다. 1992년 미국 마이크로소프트가 개발했다. 유사한 기능을 하는 것으로 JDBC가 있다.
8.5.iBatis : 아이바티스는 Java 등 응용 프로그램을 SQL에 기반한 데이터베이스와 연결시켜 주는 역할을 하는 오픈 소스 기반의 프레임워크이다. 아파치 소프트웨어 재단이 개발했고, Apache License를 따른다. 하이버네이트의 경우 사용자가 객체모델을 생성하면 DB와 연결시켜 주는 방식인데 반해, 아이바티스는 사용자가 DB에서 SQL 문장을 생성하면 그에 적합한 객체모델을 생성해 주는 방식으로 작동한다. 2010년 iBatis를 포크하여 MyBatis가 만들어진 후 개발이 중단되었다.
8.6.MyBatis : 마이바티스는 2010년 아이바티스(iBatis)를 포크 하여 새로 업그레이드한 오픈 소스 기반의 개발 프레임워크이다. Apache License를 따른다.
8.7.Hibernate : 하이버네이트는 객체 지향 언어인 자바의 클래스 파일을 관계형 데이터베이스의 테이블에 매핑해 주는 오픈 소스 기반의 프레임워크이다. 2001년 개빈 킹(Gavin King)이 개발했다. GNU LGPL 라이선스를 따른다. 아이바티스(iBatis)의 경우 사용자가 DB에서 SQL 문장을 생성하면 그에 적합한 객체모델을 생성해 주는데 반해, 하이버네이트는 사용자가 객체모델을 생성하면 DB와 연결시켜 주는 방식으로 작동한다.
9. 데이터 통합
9.1.DI : Data Integration의 약자로서, 데이터 통합을 말한다. 다양한 시스템과 응용 프로그램 등에 흩어져 있는 이질적인 데이터들을 수집한 후 하나의 DBMS로 이전(Migration)을 하거나 가상 데이터베이스(Virtual Database)를 구축함으로써 마치 하나의 데이터베이스에서 추출한 값인 것처럼 통합적으로 보여주는 기술을 말한다. DI 설루션에는 오픈 소스인 탈렌드(Talend) 등이 있다.
9.3.Target : 타깃이란 데이터베이스 또는 응용 프로그램을 하나의 시스템에서 다른 시스템으로 복제하거나 이관(Migration)할 때, 이관 후의 데이터베이스 또는 응용 프로그램을 말한다. 타깃 DB, 타깃 프로그램, 타깃 시스템이라고 한다. ‘타깃’이타겟’ 아니라 ‘타깃’이 올바른 표기법이다.
9.4.tbMigrator : 티브이마이그레이터는 오라클(Oracle) 등 다른 DBMS로 작성된 데이터베이스를 티베로 (Tibero) DBMS로 마이그레이션마이그레이션 하는 툴이다.
9.5.Virtual Database : 가상 데이터베이스란 다양한 시스템과 응용 프로그램 등에 흩어져 있는 이질적인 데이터들을 서로 연결하여 마치 하나의 데이터베이스인 것처럼 단일 쿼리(Query)를 사용하여 원하는 값을 얻을 수 있도록 해 주는 데이터베이스를 말한다. 연합 데이터베이스(Federated Database)라고도 한다. 사용자가 단일 쿼리를 실행하면, 시스템 내부에서 여러 개의 서브쿼리(Subquery)를 실행하여 그 결괏값을 연결하여 마치 하나의 쿼리를 실행한 것처럼 통합적으로 보여준다. 데이터 통합(DI)을 구현하기 위한 핵심기술이다.
10.DW
10.1.DW : Data Warehouse의 약자로서, 어떤 기업이나 단체의 모든 데이터를 한 곳에 저장한 중앙 데이터 창고를 말한다.
Data Warehouse : 데이터 웨어하우스란 어떤 기업이나 단체의 모든 데이터를 한 곳에 저장한 중앙 데이터 창고를 말한다. 약칭 DW라고 쓴다. 데이터 웨어하우스 중 일부 데이터를 복사하여 사용하는 소규모 DW를 데이터 마트(Data Mart)라고 한다.
10.2.Data Mart : 데이터 마트란 사용자와 데이터 웨어하우스(Data Warehouse, 약칭 DW)의 중간에 위치하면서, DW 중 일부 데이터를 복사하여 사용하는 비교적 작은 규모의 데이터 웨어하우스이다.
10.3.Master Data : 마스터 데이터란 기업이나 기관에서 업무처리를 위해 참조하는 기준 데이터를 말한다. 마스터 참조 데이터(Master Reference Data)라고도 한다. 고객, 거래처, 직원, 주주 등에 대한 다양한 데이터와 상품정보, 판매현황, 매출원가, 문서관리, 자산관리, 일정관리 등 다양한 데이터가 공통적으로 참조하는 기준이 되는 유일한 데이터가 마스터 데이터이다. 마스터 데이터를 관리하는 것을 MDM이라고 한다.
10.4.MDM : Master Data Management의 약자로서, 기업이나 기관의 마스터 데이터(Master Data)를 관리하는 것을 말한다. 하나의 기업이나 기관에서 동일한 대상에 대해 서로 다른 중복된 데이터가 존재해서는 안 되며, 모든 데이터는 하나의 유일한 기준 값인 마스터 데이터를 참조해야 한다. 또한 하나의 기업이나 기관이 다른 기업이나 기관과 합병하는 경우 두 개 이상의 마스터 데이터가 존재하게 되는데, 이로 인해 데이터의 중복과 업무의 비효율성이 발생하게 된다. 이를 관리하고 개선하는 것을 MDM이라고 한다.
11.ETL
11.1.ETL : 데이터 추출(Extraction), 변환(Transforma- tion), 적재(Loading)의 약자이다. 데이터 웨어하우스(DW) 구축 시 데이터를 운영 시스템에서 추출하여 가공, 변환, 정제한 후 데이터 웨어하우스에 적재하는 모든 과정을 말한다.
11.2.ETL Solution : 데이터를 추출(Extraction), 변환(Transformation), 적재(Loading)적재(Loading) 하기 위해 사용하는 설루션을 말한다. ETL 설루션에는 미국 인포매티카(Informatica), 무료 오픈 소스인 탈렌드(Talend), 한국 ㈜데이터스트림즈의 테라스트림(TeraStream), ㈜이노트리의 이노쿼츠(InnoQuartz), ㈜그로투의 BTL Data Integrator, ㈜비즈테코의 아이샤크(iShark) 등이 있다.
11.3.Informatica : 인포매티카는 데이터 품질 관리 자동화 툴 제품 또는 그것을 개발한 미국 회사의 이름이다. 대표적인 ETL 설루션이다.DB에 대해 일부 정보를 특수문자로 대치하여 사용하는 데이터 마스킹(data masking) 기술에서 세계 최고의 성능을 자랑한다.
11.4.Talend : 탈렌드는 데이터 통합(DI), 빅데이터 분석, 클라우드, MDM 등의 서비스를 제공하는 미국의 소프트웨어 개발 회사이다. 2006년 설립되었고, 나스닥에 상장했다. 무료 오픈 소스 기반의 데이터 통합 및 ETL 설루션인Talend Open Studio for Data Integration을 개발했다. 본사는 미국 캘리포니아 주 실리콘밸리에 있다.
11.5.Talend Open Studio for Data Integration : 미국 탈렌드(Talend) 회사가 개발한 무료 오픈 소스 기반의 데이터 통합 및 ETL 설루션이다.년 개발되었고, 아파치 라이선스(Apache License)로 배포되고 있다. 주요 기능은 데이터 마이그레이션, ETL, 빅데이터 분석 등이다.
'인터넷' 카테고리의 다른 글
홈페이지 운영, 회원 게시판, 지도, 설문조사, 통계, CMS, 리포팅 관리 (2) | 2023.02.28 |
---|---|
소프트웨어 기획, UI, 메뉴, 콘텐츠, 아이덴티티, 페이지 정리 (0) | 2023.02.27 |
시스템 환경, 소프트웨어, 운영체제, 웹서버, WAS, DBMS 정리 (2) | 2023.02.25 |
자바 객체 지향 프로그램 정리 (0) | 2023.02.24 |
프로그램 언어 및 개발 환경 안내 (2) | 2023.02.23 |