인기 글
-
SQL - WHERE 절에서 NULL 값 조건 주는 법
NULL 값이 포함된 칼럼에 대해서 조건을 잡을 때 정확하게 값을 분류해내지 못하는 문제가 생길 수 있다. 이럴 땐 NVL 함수를 이용해서 NULL값을 실 값으로 치환한 후 조건을 잡아야 한다. ex) WHERE NVL(col1,'X'); co1이 조건을 잡을 컬럼, X는 임의의 수
더보기
-
[ORACLE] SGA 공유 메모리 영역
1. 같은 프로세스 내의 여러 개의 쓰레드가 같은 메모리를 공유하는 것과 같이 오라클 DBMS 내부에서도 공유 메모리 영역이 존재한다. 2. 다음 그림과 같이 특정 기능과 목적에 따라 영역이 구분된다. 3. 각 영역에서 하는 기능이 무엇인지 차례대로 정리해보았다. 순서 : 공유 풀 -> 대형 풀 -> 데이터 버퍼 캐쉬 -> 리두 로그 버퍼 -> 자바 풀 연관 : 백그라운드 프로세스(DBWR), 래치와 락, NL 조인과 HJ 조인 4. 먼저 공유풀은 고정 영역과 동적 영역으로 다시 나뉘게 된다. 이렇게 보면 그림 3-5에 라이브러리 캐쉬, 데이터 딕셔너리 캐쉬는 왜 아래로 빼놓았는지 모르겠다. 4.1 고정 영역 해당 영역에는 오라클이 SGA를 관리하는 메커니즘 및 오라클 파라미터 정보가 저장된다. 파라미터..
더보기
-
CTL에 대해서
1. SQL Loader : oracle에서 table, database에 값을 insert/truncate 해주는 툴 - 데이터 파일과 컨트롤 파일 두 개를 이용한다. 2. .dat : 데이터 파일, import 할 3. CTL : 컨트롤 파일, 쉘 파일처럼 명령어가 포함되어 있는 파일로 SQL Loader는 CTL 파일을 읽어서 데이터를 적재한다. 4. 새롭게 알게 된 지식 : direct 옵션 - 명령어에 direct = true 옵션을 추가하면, 공유 메모리 영역인 SGA가 아닌 PGA 영역을 사용하기 때문에 경합 없이 고속으로 import할 수 있다. 5. 앞으로 하고 싶은 것 - 대용량 배치(insert) 작업에 대해 미리 만들어둔 .dat 파일을 이용하는 방법은 어떨까? -> 공유 메모리를 ..
더보기
-
네트워크 보안 - 필터링 종류, CBAC
방화벽 -> 정적 패킷 필터링 -> 응용 계층 필터링 -> 동적 액세스 리스트 -> 리플렉시브 액세스 리스트 -> CBAC 1. 주 기능은 접근 제어, 필터링을 통해 인가되지 않은 트래픽을 차단한다. 2. 네트워크 사이의 수문장처럼 존재하여 반드시 패킷들은 방화벽을 거치게 된다. 3. 방화벽에 적용되는 정책은 조직의 요구사항을 모두 만족해야 한다. 1. 정적 패킷 필터링 - IP, TCP와 UDP의 헤더 정보를 이용 - 엑세스 리스트(ACL)를 이용 - 복잡한 보안 정책에는 미약함, IP 스푸핑 공격에 취약 2. 응용 계층 필터링 - 프록시 방화벽 또는 응용 계층 게이트웨이라고도 불리며 7 계층까지의 모든 정보를 확인 - 이메일, 웹 서비스, DNS, telnet, FTP 등의 응용 계층 서비스를 지원 ..
더보기
공부 이야기
-
Window 환경에서 Kafka, Zookeeper 실행하기
1. zookeeper를 먼저 실행한 후, Kafka를 실행해야 한다. 2. sh 파일을 실행하는 것이 아닌, window 폴더 하위의 bat 파일을 실행해야 한다. 주키퍼 기동 – bin\windows\zookeeper-server-start.bat config\zookeeper.properties 카프카 기동 – bin\windows\kafka-server-start.bat config\server.properties
더보기
-
오라클 힌트 - /*+ result_cache */
/*+ result_cache */ 옵션을 주면 결과 데이터를 캐싱할 수 있음 SGA 영역에 존재하는 SQL Result Cache는 논리적 I/O 없이도 결과를 반환해줌 만약 테이블 row의 변화가 생기면 어떻게 될 것인가? 자동으로 반영해주는데 이를 dynamic refresh 라고 한다. 어떻게 보면 Materialized View와 비슷하다고 볼 수 있다. 하지만 저장 위치가 다르다. MV는 데이터베이스 스토리지에 저장하는 반면, SQL Result Cache는 메모리에 저장하기 때문이다.
더보기
-
LOB (Large OBject) 데이터에 대해
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
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에 칼럼을 작성해줘야 하는 것과 동일한 원리
더보기