국내 유일의 오픈소스 DBMS다.
jdbc👇
DBMS란?
근본 없이 널부러진 옷장 속에서 원하는 옷을 찾기란 실로 어려운 일이다. 고로 대량의(?)옷을 보관하고 관리하며 빠르게 꺼낼 수 있는 장치를 만들었다.(대충 보조 도구와 나만의 규칙으로 정리했다는 얘기)
데이터도 마찬가지다. 대량의 데이터를 적절하게 구성해서 저장, 관리하고 필요한 데이터를 빠르게 검색하는 장치가 DBMS이다.
ex. Oracle과 MySQL
>DBMS의 구조는?<
> DBMS가 나오기 전에는 데이터를 어떻게 관리했을까?<
[키워드 정리]
- 데이터: 어떤 사실을 나타낼 수 있는 값 + 그 값에 대한 설명
- 데이터베이스: 데이터의 집합
- 스키마: 데이터베이스에 있는 데이터들의 관계를 나타낸 것.
- 트랜잭션: 데이터베이스에서 하나의 작업을 수행하기 위해 필요한 연산(CRUD)들의 집합. 완벽한 일처리를 위해서 트랜잭션을 적절히 잘 나눠야겠죠?
이 두 그림을 같이 보면 뽝 이해가 가지
ps -ef |grep cub_master
ps -ef |grep cub_server
ps -ef |grep cub_broker
ps -ef |grep cub_cas
응용프로그램과 서버의 연결 과정
1. 응용프로그램이 브로커 프로세스에 연결을 요청하면 브로커 프로세스는 CAS 프로세스를 할당한다.
2. 응용프로그램과 CAS 프로세스가 연결된다.
3. CAS 프로세스가 마스터 프로세스에 연결을 요청하면 마스터 프로세스는 서버 프로세스에 연결한다.
4. 💖응용프로그램 – CAS 프로세스 – 서버 프로세스
💖 연결이 완료된다.
ps -ef |grep cub_cmserver
cubrid service start/stop
service
명령어로 껏다 켜고 싶으면 cubrid.conf
파일에서 service=server,broker,manager
👉service=broker
바꾸셈.cubrid server start/stop [데이터베이스 이름]
cubrid.conf
파일에서 server=요즘, 작업하는, 디비들
넣으면 서비스 시작할 때 자동으로 켜짐.(csql -u dba [데이터베이스 이름]
cubrid broker start/stop
cubrid_broker.conf
파일에 설정한 브로커들을 전부 켠(start
) 다음에 cubrid broker off/on [상태를 끄/켜고 싶은 브로커 이름]
형식으로 세부 조정을 하다가 stop
으로 샷다 내린다.cubrid manster start/stop
이 공간이 모두 소진되면 일시적인 볼륨을 사용한다. 일시적인 볼륨은 데이터베이스를 재시작하면 삭제되지만 임시 볼륨은 영구 볼륨
이므로 데이터베이스를 정지해도 유지된다.
$ cd $CUBRID_DATABASES
$ mkdir testdb
$ cd testdb
$ cubrid createdb testdb ko_KR.utf8
Creating database with 512.0M size using locale ko_KR.utf8. The total amount of disk space
needed is 1.5G.
$ ls
디렉터리: C:\CUBRID\testdb
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021-11-08 오전 3:17 lob
-a---- 2021-11-08 오전 3:17 536870912 testdb
-a---- 2021-11-08 오전 3:17 65 testdb_keys
-a---- 2021-11-08 오전 3:17 536870912 testdb_lgar_t
-a---- 2021-11-08 오전 3:17 536870912 testdb_lgat
-a---- 2021-11-08 오전 3:17 172 testdb_lginf
-a---- 2021-11-08 오전 3:17 173 testdb_vinf
$ cubrid addvoldb -S -p data -n testdb_DATA01 --db-volume-size=512M testdb
$ cubrid addvoldb -S -p data -n testdb_DATA02 --db-volume-size=512M testdb
$ cubrid addvoldb -S -p index -n testdb_INDEX01 --db-volume-size=512M testdb
$ cubrid addvoldb -S -p temp -n testdb_TEMP01 --db-volume-size=512M testdb
PS C:\CUBRID\testdb> ls
디렉터리: C:\CUBRID\testdb
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021-11-08 오전 3:17 lob
-a---- 2021-11-08 오전 3:25 536870912 testdb
-a---- 2021-11-08 오전 3:24 536870912 testdb_DATA01
-a---- 2021-11-08 오전 3:25 536870912 testdb_DATA02
-a---- 2021-11-08 오전 3:25 536870912 testdb_INDEX01
-a---- 2021-11-08 오전 3:17 65 testdb_keys
-a---- 2021-11-08 오전 3:25 536870912 testdb_lgar_t
-a---- 2021-11-08 오전 3:25 536870912 testdb_lgat
-a---- 2021-11-08 오전 3:17 172 testdb_lginf
-a---- 2021-11-08 오전 3:25 536870912 testdb_TEMP01
-a---- 2021-11-08 오전 3:25 322 testdb_vinf
볼륨 사용량 확인
- 해당 서버 프로세스를 켜고
PS C:\CUBRID\testdb> cubrid server start testdb ++ cubrid server start: success
- 볼륨 사용량을 확인한다.
cubrid spacedb -p testdb
conf
폴더에 설정 파일들 있음.cubrid.conf
에 설정.크게 네 부분으로 구분돼 있으며, 각 부분에서 설정하는 파라미터는 다음과 같다.
cubrid 유틸리티란 cubrid로 시작하는 명령의 집합을 말한다
(예: cubrid createdb, cubrid loaddb, cubrid backupdb 등)
cubrid.conf
[service]
service=server,broker,manager
server=testdb
[common]
data_buffer_size=512M
log_buffer_size=4M
sort_buffer_size=2M
max_clients=100
cubrid_port_id=1523
db_volume_size=512M
log_volume_size=512M
log_max_archives=0
[standalone]
sort_buffer_size=256M
참고
리눅스에서는 프로세스 하나당 오픈할 수 있는 파일 디스크립터 개수의 최댓값(ulimit –n)을 max_clients 파라미
터의 값보다 크게 설정해야 한다.
cubrid_broker.conf
[broker]
MASTER_SHM_ID =30001
ADMIN_LOG_FILE =log/broker/cubrid_broker.log
[%query_editor]
SERVICE =ON
BROKER_PORT =30000
MIN_NUM_APPL_SERVER =5
MAX_NUM_APPL_SERVER =40
APPL_SERVER_SHM_ID =30000
LOG_DIR =log/broker/sql_log
ERROR_LOG_DIR =log/broker/error_log
SQL_LOG =ON
TIME_TO_KILL =120
SESSION_TIMEOUT =300
KEEP_CONNECTION =AUTO
[%BROKER1]
SERVICE =ON
BROKER_PORT =33000
MIN_NUM_APPL_SERVER =5
MAX_NUM_APPL_SERVER =40
APPL_SERVER_SHM_ID =33000
LOG_DIR =log/broker/sql_log
ERROR_LOG_DIR =log/broker/error_log
SQL_LOG =ON
TIME_TO_KILL =120
SESSION_TIMEOUT =300
KEEP_CONNECTION =AUTO
[broker] 아래에 정의된 파라미터는 모든 브로커에 공통으로 적용되는 파라미터
동작 방식
이때 사용하는 메모리의 기준은 cubrid broker
status 명령의 결과로 출력되는 PSIZE 값이다. CAS 프로세스의 PSIZE 값이 설정된 값을 초과하면 진행
중이던 트랜잭션을 모두 수행한 후 해당 CAS 프로세스를 재시작한다. 리눅스에서 기본값은 0이며, 이 경
우 CAS 프로세스의 PSIZE 값이 초기 구동 시 PSIZE 값의 두 배가 되면 해당 CAS 프로세스를 재시작한
다. 예를 들어, 초기 구동 시 PSIZE 값이 50MB라면 이 값이 100MB가 될 때 진행 중이던 트랜잭션을 모두
수행한 후 CAS 프로세스를 재시작한다.