본문 바로가기

분류 전체보기

OCI - golden gate : Migration CDC oracle 에서 update, insert 등의 DML 작업(또는 트랜잭션)을 하면 redo 로그에 남게 된다. redo 로그를 남기는 이유는 rollback을 수행하거나 commit이 이뤄지지 않은 장애 상황에서 변경 전 데이터로 돌려놓기 위함이다. 오라클은 별도로 flashback 기능을 수행하는데 rollback 데이터가 소실된 경우 이를 재현하는 기능이다. redo-log archive file에서 수행한다. redo log 관련해서는 백그라운드 프로세서 중 하나인 LGWR가 이를 처리한다. 별도의 프로세서에서 수행하기 때문에 데이터베이스 전체 서버의 성능의 최적화와 기능의 확장성을 보장해준다. 구체적으로 Redo Log Buffer에 있는 변경된 레코드의 이전 정보가 저장된 후, LGWR가 R.. 더보기
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에 칼럼을 작성해줘야 하는 것과 동일한 원리 더보기
[python] 날짜 포맷 이모저모 current_time = datetime.now() yyyy-MM-dd HH:mm:ss 형식으로 반환 current_time = datetime.now(pytz.timezone('Asia/Tokyo')) 2023-01-01T00:00:00+09:00 처럼 뒤에 09:00가 붙음 .strftime("%Y-%m-%dT%H:%M:%S%z") now() 메소드로 반환된 값에 대해 포맷 처리를 해줘야 함 더보기
MongoDB의 성능 1. Binary JSON 타입으로 데이터를 저장 및 관리 2. 내부 WiredTiger 엔진이 압축 알고리즘을 이용해서 모든 컬렉션과 인덱스를 압축해서 저장해서 관리 3. MySQL보다 읽기, 쓰기, 업데이트, 삭제 연산 속도가 빠르지만 CPU를 더 소모한다. 더보기
[python] gradio -> UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 2072: illegal multibyte sequence 에러 해결 방법 gradio를 사용하려니깐 시작부터 발목을 잡았다. https://github.com/gradio-app/gradio/issues/6364 Encoding issues in newer Gradio versions · Issue #6364 · gradio-app/gradio Describe the bug In 3.33.1, my gradio app could be launched perfectly fine on both Windows and Linux. However, when I upgraded to the most recent version, I was getting encoding issues left and rig... github.com -> 구글링을 해보니 라이브러리 소스에 들어가서 직접 rea.. 더보기