awk 명령어 활용 (파일 데이터 확인, 조작, 출력, 저장) awk 라는 용어가 와닿지 않는다. 자칫하면 aws라고 읽을정도. 보통 명령어는 명령어만으로 대략적인 이름을 파악할 수 있는데, awk 명령어는 예상하지 쉽지 않다. awk 기능을 만든 사람들의 이니셜을 조합하여 만든 이름이기 때문이다. Aho + Weinberger + Kernighan. (A:Alfred V. Aho, W:Peter J. Weinberger, K:Brian W. Kernighan) awk 란 파일로부터 레코드(record)를 선택하고 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 것을 목적으로 사용하는 프로그램이다. 해당 명령어를 입력한 후 지정한 파일로부터 데이터를 분류하고, 분류된 텍스트 데이터를 바탕으로 매칭여부..
분류 전체보기 검색 결과
Gibibyte(GiB) 와 Gigabyte(GB) 사내에서 AWS RDS를 구축하여 사용중이다. 내가 직접 인스턴스를 선택해야했기 때문에 고민이 많았는데, 이때까지만 해도 메모리라고 쓰여 있는 부분을 GB(기가바이트)라고 생각했었다. 자세히보니 GB가 아닌 GiB였다. 둘은 엄연히 다른 알파벳이다. 이 둘의 차이점을 알아보자. Gibibyte(GiB) 와 Gigabyte(GB)의 개념은 10진법과 2진법의 개념차이다. 수학을 놓아버린지 오래되었지만 이를 이해해야한다. 이 크기를 실감할 수 있는 예시는 데스크탑 등에서 사용가능한 디스크 및 USB의 용량이다. 1TB의 디스크를 구매했을 때, 실제 사용 가능한 용량은 1TB가 되지 않는다. 2진법 기준으로 작동하는 컴퓨터의 개념에 따라 1GB = 1024M..
AWS RDS For PostgreSQL 성능 최적화 사내에서 개발중인 서비스는 PostgreSQL DB를 사용중이다. 아직 베타를 출시한 것은 아니지만 쿼리 하나 날리는데 20초가 걸리는 경우가 있었다. 백엔드 개발자이지만 DB 전문가는 아니라 쿼리를 어떻게 더 튜닝해야할지 몰랐다. 먼저 RDS 인스턴스를 변경해보았다. 1. RDS 인스턴스 db.t3.medium -> db.mg.large 로 변경 기존에 사용하던 DB사양은 위와 같았다. 속도가 느리기도 하고 DB 성능을 높일 때가 된 것 같아 아래와 같은 사양으로 변경하였다. 2. RDS Parameter 변경 RDS -> 데이터베이스 -> 데이터베이스명 -> 구성을 보면 파라미터 그룹이 있다. 그걸 클릭하면 pg_setting에 있던 값들이 나온다..
DB 파티셔닝(Partitioning) 정의 및 예제 배경 회사의 부동산 데이터를 적재하는 과정에서 연도별 데이터가 방대하게 쌓이고 있다. 빅데이터의 수준은 아니지만 추후 10년치 이상의 데이터를 쌓고나서는 용량의 한계와 성능저하를 불러올 수 있을 것이다. 하나의 DBMS에 너무 큰 테이블이 들어오면서 용량 및 성능 측면에서 많은 이슈가 발생할 수 있게 되고, 이런 이슈를 해결하기 위해 혜성처럼 등장한 table을 파티션(partition)이라는 작은 단위로 나누어 관리하는 파티셔닝 기법을 사용해볼 것이다. 파티셔닝 기법을 통해 소프트웨어적으로 데이터베이스를 분산처리하여 성능 저하를 방지하고, 관리를 수월하게 할 수 있을 것이다. 개념 논리적인 데이터들의 element들을 다수의 entity로 쪼개는 것..
공간 인덱스 활용 업무를 하는데 공간 연산을 하는 일이 많다. 특정 주소와 비교하여 가까운 거리에 있는 주소를 추출한다거나 500m 또는 1km 이내의 주소들을 추출하는 경우이다. 이럴 때에는 거리 계산이 필요하다. 거리계산하는 함수로 st_distance 를 사용하였는데, 이 공감함수는 공간 인덱스를 타지 못한다는 걸 깨달았다. 500m 이내 데이터를 추출하는데 34초 가량 걸려 개선해야될 필요성을 느꼈다. PostgreSQL 인덱스 생성 CREATE INDEX [인덱스명] ON [테이블명] USING btree (컬럼1, 컬럼2..); 인덱스를 생성할 때에는 보통 위와 같이 사용한다. geometry 데이터 타입인 경우에도 위와 같이 생성하면 인덱스를 탈 줄 알았는데, 잘못 알고 있었다. 공간 인덱스..
뷰(View) 테이블 생성 및 제어 뷰(View) 데이터베이스에 존재하는 일종의 가상의 테이블을 의미한다. 실제 테이블의 행과 열을 가지고 있고, 동일한 방식으로 조회할 수 있으나 실제로 데이터를 저장하는 것은 아니다. 뷰(View) 테이블을 조회하는 순간 원본 테이블로 가서 해당 테이블의 데이터를 보여주는 역할만 수행하는 것이다. 즉, 뷰(View)를 사용하게 되면 여러 테이블이나 뷰를 하나의 테이블처럼 볼 수 있어 편리하다. 뷰(View)의 장점 1. 특정 사용자에게 테이블 전체가 아닌 필요한 필드만을 보여줄 수 있어 보안적으로 좋다. 2. 복잡한 쿼리를 단순화하여 사용할 수 있다. 3. 쿼리를 재사용할 수 있다. 4. 뷰(View)가 참조하는 원본 테이블의 데이터가 변경되면 뷰(View)의 데이터도..
최근댓글