공부 이야기/데이터베이스
-
Active Data Guard, Change Data Capture, Extract Transform Load공부 이야기/데이터베이스 2024. 4. 27. 15:26
세 개 전부 데이터 복제 및 이관을 위한 메커니즘Golden Gate : 서로 다른 종류의 데이터베이스 사이에서 데이터를 주고 받을 때Active Data Guard : 같은 종류 데이터베이스에서 데이터를 주고 받을 때- Disaster Recovery에서 사용 스토리지 복제 방식과는 다르게 변경 데이터가 기록되어 있는 Redo 파일에서 데이터를 읽어와서 복제ADG는 redo log file을 잠금하지 않고 read-only로 open해서 관리하기 때문에 효율적이다. Golden Gate는 Redo log file에서 데이터를 extract 해서 별도의 trail file을 만들어서 Target System에 전송Redo log file을 통채로 전송하는 ADG 방식과는 다르게 별도의 파일을 만들기 때문..
-
OCI - golden gate : Migration CDC공부 이야기/데이터베이스 2024. 4. 19. 20:55
oracle 에서 update, insert 등의 DML 작업(또는 트랜잭션)을 하면 redo 로그에 남게 된다.redo 로그를 남기는 이유는 rollback을 수행하거나 commit이 이뤄지지 않은 장애 상황에서 변경 전 데이터로 돌려놓기 위함이다.오라클은 별도로 flashback 기능을 수행하는데 rollback 데이터가 소실된 경우 이를 재현하는 기능이다.redo-log archive file에서 수행한다. redo log 관련해서는 백그라운드 프로세서 중 하나인 LGWR가 이를 처리한다.별도의 프로세서에서 수행하기 때문에 데이터베이스 전체 서버의 성능의 최적화와 기능의 확장성을 보장해준다. 구체적으로 Redo Log Buffer에 있는 변경된 레코드의 이전 정보가 저장된 후, LG..
-
오라클 힌트 - /*+ result_cache */공부 이야기/데이터베이스 2024. 4. 18. 22:54
/*+ result_cache */ 옵션을 주면 결과 데이터를 캐싱할 수 있음 SGA 영역에 존재하는 SQL Result Cache는 논리적 I/O 없이도 결과를 반환해줌 만약 테이블 row의 변화가 생기면 어떻게 될 것인가? 자동으로 반영해주는데 이를 dynamic refresh 라고 한다. 어떻게 보면 Materialized View와 비슷하다고 볼 수 있다. 하지만 저장 위치가 다르다. MV는 데이터베이스 스토리지에 저장하는 반면, SQL Result Cache는 메모리에 저장하기 때문이다.
-
LOB (Large OBject) 데이터에 대해공부 이야기/데이터베이스 2024. 4. 18. 19:16
varchar, int, double, number, date와 같은 일반적인 Datatype과 다르게 LOB을 사용하는 경우가 있다. - 크기가 큰 데이터 - 비정형, 준정형 데이터를 저장할 때 LOB 데이터를 관리하는 방식에 basicfiles, securefiles가 있는데, 좀 더 나중에 나온 securefiles을 기준으로 설명 oracle은 LOB 데이터를 해시로 관리한다. 즉, 데이터 자체를 저장하는 것이 아닌 해시값을 저장하고 MD5 재해시를 통해 원 데이터를 복원하는 방식으로 관리하는 것이다. 어떤 장점이 있을까? 예를 들어, 같은 내용을 갖는 LOB 데이터를 100번 insert 하는 작업이 있다고 치자. 처음 한 번은 데이터를 저장해야할 것이다. 하지만 두번째 데이터부터는 데이터를 저..
-
pymongo.errors.OperationFailure: The field must be an accumulator object공부 이야기/데이터베이스 2024. 3. 29. 21:21
pipeline = [ {"$match": {"trade_timestamp": {"$gte": one_hour_ago}}}, {"$group": { "market": "$market", "highest_high_price": {"$max": "$high_price"}, "lowest_low_price": {"$min": "$low_price"} }} ] #1 . mongoDB group query에서는 _id 키 칼럼이 반드시 있어야 함 #2. "market": {"$first", "$market"} 방법 사용, RDB에서도 칼럼별로 집계할 경우, Group By에 칼럼을 작성해줘야 하는 것과 동일한 원리
-
mysql > 별 다른 짓을 안해도 자동으로 last_modified 처리하는 방법공부 이야기/데이터베이스 2024. 3. 5. 18:37
* 테이블을 생성할 때 칼럼 뒤에 다음 명령어를 추가해주면 된다. CREATE TABLE exchange_rates_now ( cur_unit VARCHAR(20) PRIMARY KEY, ttb DECIMAL(10, 2), tts DECIMAL(10, 2), deal_bas_r DECIMAL(10, 2), cur_nm VARCHAR(50), last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); * 기존 테이블에 칼럼을 추가하는 방법 ALTER TABLE exchange_rates_now ADD COLUMN last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CUR..
-
MySQL 테이블 DCL 관련 기능공부 이야기/데이터베이스 2024. 2. 29. 11:15
describe 테이블명; - 칼럼, 데이터타입, NULL 여부, PK 여부, 기본값, 제약조건, 기타정보를 확인할 수 있음 SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = '데이터베이스명' AND TABLE_NAME = '테이블명'; - 조회할 테이블의 제약조건을 확인할 수 있음 (작은 따옴표 필수) ALTER TABLE 테이블명 DROP FOREIGN KEY 제약명; - 제약조건을 제거하는 방법 ALTER TABLE 테이블명 ADD FOREIGN KEY (테이블명.FK명) REFERENCES 참조테이블(참조테이블.PK명); - 제약조건을 추가하는 방법 ALTER TA..