본문 바로가기

분류 전체보기92

[ELK] Logstash - Postgresql 연결 실패 (Docker Network) 도커를 이용하여 PostgreSQL을 Build 후 해당 DB의 데이터를 Logstash를 이용하여 Elasticsearch와 연동하는 과정에서 생긴 에러이다. [ERROR][logstash.inputs.jdbc ][main][01b8fcd4a63cf0b14c82113572d5c31371649609a57c0007cc38eb353a2e434e] Unable to connect to database. Tried 1 times {:error_message=>"Java::OrgPostgresqlUtil::PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postma.. 2023. 2. 24.
[Docker] docker 명령어 시 Linux(Ubuntu) 권한 문제 해결 # docker 명령어 실행 $ docker compose up Got permission denied while trying to connect to the Dockerdaemonsocket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied EC2 상에서 docker를 설치 후 권한이 없어서 실행이 불가할 때 아래의 방법을 통해 해결을 할 수 있다. 1. 그룹 확인 : $ groups - 그룹 확인 후 docker가 없을 때 그룹에 추가 $ sudo groupadd docker 2. .. 2023. 2. 21.
[Database] Index Index : 데이터베이스는 관련 레코드를 찾기 위해 전체 테이블을 스캔해야 하고, 이는 특히 테이블이 매우 큰 경우 매우 느리고 비효율적일 수 있기에 Index를 사용하게 된다. Index는 테이블의 특정 Column 또는 Field를 기반의 데이터를 빠르게 검색할 수 있는 데이터 구조이며, 일반적으로 B tree(Balance Tree) Algorithm에 의하여 Index가 생성이 된다. [Index 생성에 기반이 되는 알고리즘이 다수 존재] 페이지의 내용을 기반으로 특정 페이지를 빠르게 찾을 수 있는 책의 색인과 유사하다. 인덱스가 효율적인 이유는 대수확장성을 들 수 있으며, 이는 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것을 말한다. [깊이가 증가할 때마다 최대 인덱스 항목의 수는.. 2023. 2. 12.
[Database] Transaction(트랜잭션) 트랜잭션(Transaction) : 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한번에 모두 수행되어야 할 일련의 연산들을 의미한다. 특징 : 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위 하나의 트랜잭션은 Commit 또는 Rollback 성질 (ACID) : 1. Atomicity(원자성) : 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류가 발생하면 트.. 2023. 2. 11.
[Docker] Docker / Virtual Machine 과거에는 VM(가상머신)과 Container(컨테이너)라는 개념이 존재하지 않았고, 그에 따라 필요한 만큼 물리적으로 서버를 새로 구축하여 연결하는 작업을 했었다. 각 서비스가 요구하는 환경설정이 있고, 특정 서비스가 다른 서비스가 필요로 하는 환경과 충돌이 일어날 수 있기 때문에 물리적으로 분리를 시켜 구축을 했었던 것이다. 이로 인해 나온 것들이 Virtual Machine(가상머신)과 Containerization(컨테이너화)이다. 위 두 가지를 통하여 서로 격리된 환경에서 애플리케이션을 구동할 수 있는 것이다. 가상머신과 컨테이너의 가장 큰 차이점은 OS의 공유하는 데 있어 차별점을 둔다. 1. Virtual machine (가상머신) 가상머신은 생성할 때마다 Guest OS를 새로 설치해야 하기.. 2023. 2. 10.
[OS] Process(프로세스) / Thread(스레드) 프로그래밍을 시작하게 되면서 과거에는 단어의 정확한 이해가 없이 대략적인 의사전달만을 위한 단어들을 말하는 습관을 고치는 계기가 되었다. 그중 하나가 스레드와 프로세스였는데 이 둘은 확연히 다른 단어이며 해당 포스팅에서 다뤄볼 것이다. 1. Process(프로세스) 운영체제로부터 자원을 할당받은 작업의 단위이며, 각 작업에는 운영체제로부터 부여받은 프로세스 식별자(PID)를 가지고 있다. 한 개의 프로세스에는 하나 이상의 스레드를 가지고 있고, 프로세스 간에 통신을 하려면 IPC(Inter Process Communication)를 요구한다. 프로세스는 Code / Stack / Heap / Data의 4가지 영역으로 구분되어 있으며, Code / Data를 정적 영역으로, Stack / Heap을 동적.. 2023. 2. 9.