이 확장 프로그램은 전체 텍스트 검색을 사용 설정하고 빠른 전체 텍스트 검색을 위해 2그램(bigram) 색인을 허용합니다.

참조 - https://cloud.google.com/sql/docs/postgres/extensions?hl=ko

 

1. 현재 설치된 extension 조회

select * from pg_extension;

 2. 설치가 되어있지 않은 경우, pg_bigm 설치

create extension pg_bigm with schema live;

3. gin index 설정

create index moment_hash_tag__tag_name on moment_hash_tag using gin (mht__tag_name gin_bigm_ops);

4. index 확인

select *
from pg_indexes
where tablename = 'moment_hash_tag';

5. 테스트 데이터 등록

insert into moment_hash_tag
(mc__id, mht__tag_name)
values
(1001, '비오오는 날'),
(1001, '프랑스파리여행'),
(1001, '아일랜드 어느 거리... 커피 한잔');

6. 인덱스 확인 쿼리 실행

explain analyse select * from moment_hash_tag where mht__tag_name like '%커피%';
  • 데이터가 적은 경우 Seq Scan 을 하는데, 이때 현재 세션에 대해 Seq Scan 을 비활성화
SET enable_seqscan TO off;
  • 인덱싱 상태 보기
select show_bigm(mht__tag_name) from moment_hash_tag limit 500;

 

작업 시 참고

시작 하기 전에 ..

Postgres 에서는 저장 프로시저를 사용하지 않고 함수를 사용한다고 한다.

우리가 아는 procedure == function 이라고 생각하면 될 것 같다.

 

Stored Procedure는 이미 컴파일되어 DBMS 단계에서 바로 실행할 수 있도록 준비되어 있어 그 실행 속도가 빠르며, 호출시 인자만 변경되기 때문에 재활용이 가능하다.

 

이 글에서는 단점에 대한 내용은 정리 하지 않도록 하겠다.

 

그럼 pl/pgsql 을 이용해 10자리 난수를 얻는 간단한 Procedure를 작성해 보자

create or replace function custom_random_number()
returns bigint language plpgsql as
$$
   declare result bigint := (select rpad(cast(trunc(random() * 10000000000) as varchar), 10 , '0'));
   begin
        return result;
   end;
$$;

alter function custom_random_number() owner to yeokgank;

작성한 Procedure 를 호출 해본다.

select custom_random_number() as random_number
from generate_series(1,10);

결과 

 

 

EDB: Power to Postgres | Get the most out of PostgreSQL with tools, products, services, and support for enterprises

EDB provides best in class database management software and wide-range services with 24x7 support to get more from Postgres. EDB offers secure, scalable, advanced and enterprise-class Postgres solutions.

www.enterprisedb.com

Reference

AWS EC2 Ubuntu 20.04 LTS 버전에 Redis 설치

# OS 버전 확인
lsb_release -dc
Description:    Ubuntu 20.04.3 LTS
Codename:       focal

1. Redis Server 패키지 설치하기

sudo apt-get install redis-server

1-1. Redis Server 패키지 설치가 완료되면 버전 확인

sudo redis-server --version

2. Redis Server 설정

# OS .conf 경로
sudo vi /etc/redis/redis.conf
  • redis 접속 비밀번호
  • redis에 접속 가능한 ip 주소
  • redis가 사용할 min/max 메모리
  • 메모리가 가득 찼을 때 데이터 교체 알고리즘 등등..

2-1. Redis Server 메모리 설정

설정 파일에서 maxmemory 옵션으로 설정

max 메모리 값 만큼의 용량이 확보

maxmemory <bytes> 라인의 주석(#) 해제하고 <bytes> 부분에 원하는 max 메모리 값을 입력

데이터 단위 정보 까지 포함 (ex: maxmemory 1gb, 1g, 1mb, 1m, 1kb, 1k)

2-2. Redis Server 데이터 교체 알고리즘 설정

maxmemory-policy 옵션으로 설정.

maxmemory-policy  라인의 주석(#) 해제하고 원하는 데이터 교체 알고리즘 값을 넣습니다. Ex: 모든 키에 대해서 사용된 지 가장 오래된 데이터를 삭제하는 allkeys-lru 알고리즘

가능한 교체 알고리즘의 목록과 설명은 https://redis.io/topics/lru-cache <<Eviction Policies 부분 확인

정책명 설명

noeviction ★ 기존 데이터 삭제 안함. 메모리 한계에 도달하면 OOM 오류 반환하며 새 데이터가 저장되지 않는다.
allkeys-lru ★ 모든 것 중에서 LRU 기준으로 삭제하여 공간확보
volatile-lru ★ expire set을 가진 것 중 LRU로 삭제하여 간확보
volatile-ttl ★★ expire set을 가진 것 중 TTL이 짧은 것부터 삭제하여 공간확보
allkeys-random 모든 것 중에서 랜덤으로 삭제하여 공간확보
volatile-random expire set을 가진 것 중에서 랜덤으로 삭제하여 공간확보

2-3. Redis Server 외부 접속 설정

외부 접속 설정 ip 정보는 bind 옵션으로 설정 가능

bind 값 수정

2-4. Redis Server 패스워드 설정

SECURITY 영역 이동 requirepass <비밀번호> 라인(#)주석 해제 후 설정

2-5. Redis Server Port 설정

2-6. Redis Server Port Bind 확인

ubuntu@ip-172-31-59-154:/etc/redis$ sudo ps -ef | grep redis
redis    2859926       1  0 16:55 ?        00:00:00 /usr/bin/redis-server 0.0.0.0:6379
ubuntu   2862300 2715715  0 17:02 pts/0    00:00:00 grep --color=auto redis

3. Redis Streams Consumer Groups 생성

 
sudo redis-cli
6379> XGROUP CREATE webhook group-1 $ MKSTREAM

3-1. Redis Server 설정 후 서비스 재 시작

sudo systemctl stop redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server
sudo systemctl restart redis-server

 

Ubuntu 20.04 LTS 버전에 MongoDB 설치

# OS 버전 확인
lsb_release -dc
Description:    Ubuntu 20.04.3 LTS
Codename:       focal

1. 패키지 관리 시스템에서 사용하는 public key 가져오기

wget -qO - <https://www.mongodb.org/static/pgp/server-4.4.asc> | sudo apt-key add -

2. MongoDB를 위한 List 파일 만들기

List 파일을 만드는 방법은 우분투 버전에 따라 다르기 때문에 이 글의 도입부에 안내 한대로 본인의 우분투 버전을 확인하고, 그에 맞춰 진행해야 한다.

(현재 우분투 20.04 버전 입니다.)

$ echo "deb [ arch=amd64,arm64 ] <https://repo.mongodb.org/apt/ubuntu> focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

3. 로컬 패키지 데이터베이스 불러오기

MongoDB 패키지 설치를 위해, 먼저 터미널 창에서 다음 명령어를 실행해 로컬 패키지 데이터베이스를 불러온다

sudo apt-get update

4. MongoDB 패키지 설치하기

(3) 번 작업이 완료되었다면, 이제 MongoDB 패키지를 설치해주자.

아래의 명령어로 최신 안정 버전의 MongoDB 설치

sudo apt-get install -y mongodb-org

5. MongoDB 실행하기

터미널에서 아래 명령어로 몽고디비를 실행.

sudo systemctl start mongod

mongodb - 상태 확인

sudo systemctl status mongod

mongodb - 재 시작

sudo systemctl restart mongod

mongodb - 시작

sudo systemctl start mongod

mongodb - 중지

sudo systemctl stop mongod

mongodb - 시스템 재부팅 후 시작되도록 설정

sudo systemctl enable mongod

6. MongoDB 사용 시작하기

아래 명령어를 사용해 mongo 실행하면 27017 포트(default port)로 localhost에서 실행 중인 mongod에 연결된다. (서비스가 정상으로 접속이 되는지 확인.)

mongo

7. MongoDB 외부에 연결(AWS EC2)

mongoDB는 디폴트로 내부에서만 접속을 허용하고 있기 때문에. 이 작업은 외부에서 접근이 가능하도록 설정을 수정합니다.

sudo vi /etc/mongod.conf
# mongod.conf

# for documentation of all options, see:
#   <http://docs.mongodb.org/manual/reference/configuration-options/>

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

7-1. 아래 네트워크 인터페이스 내용 수정

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

 

7-2. 내용 수정 후 mongod 서비스 재 시작

sudo service mongod restart

'Database' 카테고리의 다른 글

[PostgreSQL] Stored Procedure  (1) 2022.09.21
Redis 설치 및 설정(AWS EC2)  (0) 2022.03.22
[MS-SQL] 대용량 데이터 삭제하기  (0) 2021.12.29
Database Naming rule  (0) 2021.09.14
[MS-SQL] SQL_SERVER DB계정 Query  (0) 2021.08.30

+ Recent posts