본문 바로가기

공부 이야기

scp > permission denied 오류 해결 방안 1. SSH 접속이 제대로 되는지 확인 2. ls -al 에서 root 계정인지 사용자 계정인지 확인 3. 복사 대상 파일 혹은 디렉토리를 chmod 777로 변경 4. sudo 명령어로 실행 더보기
[AWS] 이미지 등록하기 1. 이미지를 등록하기 위해서는 node instance를 생성한다. 2. instance를 생성할 때, 호스트 IP, Security Group 관리 그리고 제일 중요한 SSH 키 등록이 필요하다. 3. 나머지 정보(CPU, Memory 등)은 알아서 자동으로 세팅해준다. 4. 필요한 기능이 더 추가되면 그 때가서 하면 된다. 5. Hadoop, Spark, Java, Python, Zookeeper 등 필요한 프로그램들을 설치해준다. (wget) - root 하위 cluster 폴더를 만든 후, 각각의 폴더에 다운로드해준다. - /etc/environment에서 환경 변수를 등록해준다. * SSH 키 페어 등록시 헷갈리는 사항 - keygen을 하고 나서, chmod 600을 해줘야 한다. (too .. 더보기
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에 있는 변경된 레코드의 이전 정보가 저장된 후, LG.. 더보기
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() 메소드로 반환된 값에 대해 포맷 처리를 해줘야 함 더보기