DB 30

[DB] 데이터베이스를 지탱하는 기술 Chapter 2

데이터베이스를 사용하는 이유- 대용량 데이터 처리- 일반적인 자료구조로는 인메모리로만 사용 가능- 디스크를 이용할 수 있어야 한다.- 빠른 탐색이 가능해야 한다.- 인덱스 (BTree 자료구조)- 장애 발생 시 데이터 백업 및 복구- 데이터가 사라지지 않도록 해야 한다.- 데이터의 무결성을 위해 '트랜잭션' 개념 적용- 해당 솔루션을 제공- Redis의 경우 Replication 및 RDB / AOF 옵션- 병렬성 제어가 어려움- Lock 개념이 들어감.- 성능과 상황에 따라 Table Lock / Row Lock 등을 사용할 수 있도록 해당 기능을 제공해 줌- InnoDB의 경우 Isolation Level 옵션 등 NoSQL- 기존 DB에서 충분한 성능이 나오지 않거나, 여러 서버를 구축하기 어려운 ..

DB 2018.11.11

[MySQL] 외부 접속 권한 설정

mysql 설치 시 기본으로 등록되어 있는 root 유저는 외부 접속 권한이 없다. 그래서 새로 권한을 부여해야 한다. 다음과 같이 입력한다. grant all privileges on *.* to 'user id'@'%' identified by 'password'; *.* - [DB명.테이블명]% - 모든 외부 IP에 대해 외부 접속을 허용한다는 의미이다. 이걸 하고 flush privileges; 입력하여 변경된 privileges 사항들을 적용시킨다. 이제 mysql 설정파일인 /etc/mysql/mysql.conf.d/mysqld.cnf 를 텍스트 편집기로 열면 bind-address 부분이 있는데, 이를 위와 같이 주석처리 해 준다. 그리고 mysql server를 restart한다. 여기까지..

DB/MySQL 2018.01.22

[Postgresql][Trigger] volatile, cost 100에 대해

트리거 예제들에 자주 등장하는데 설명은 안 나와 있어서.. 찾다가 누군가 답변한 것을 찾았다. LANGUAGE : 무슨 언어 쓰는지. VOLATILE : 모든 함수가 가지고 있는 속성. default로 적용된다. COST 100 : 각 row를 처리하는 데 드는 기본 비용. default로 적용된다. query planner가 가장 싼 plan을 찾을 때 사용된다.. 둘 다 생략해도 되는데, query optimizer에 function 정보를 주는데 어떤 함수가 volatile 속성인지, language는 뭔지, row당 결과의 비용에 대한 정보를 준다.. 해석이 맞나 ㅎㅎ; 대충 무슨 말 하려는지는 알겠음.. 참고할 수 있도록 주는 정보들이라는 것이겠지!

DB/PostgreSQL 2016.09.29

[Postgresql][linux] 파일로 Trigger 코드 관리하기

참조 URL: https://www.postgresql.org/docs/9.5/static/auth-pg-hba-conf.html psql에서 트리거 코드를 한 줄 한 줄 작성하는 건 불편하다. 코드를 파일에 작성하고, 간단하게 파일을 다시 로딩하는 방식으로 사용하고 싶다면 터미널에서 psql -U username -f codefile.sql -d database 명령을 실행하면 된다. 이 때, peer authentication failed 라는 오류가 날 수 있다. DB서버 접속 방식에 제한을 거는 부분에서 오류가 나는 것이므로 pg_hba.conf 파일을 수정해야 한다. 위의 peer를 trust로 바꾸고 저장하고 나간 후에 db서버를 재시작해 주고, 다시 시도하면 잘 된다. peer와 trust ..

DB/PostgreSQL 2016.09.29

[Postgresql] table의 index정보 확인/생성하기

show index type 이건 ' ' 를 써 줘야 인식을 한다. SELECT * FROM pg_indexes WHERE tablename = 'your_table'; create single or multi index - CREATE INDEX index_name ON table_name USING btree(column_name); CREATE INDEX index_name ON table_name (column_name); CREATE INDEX index_name ON table_name (column1_name, column2_name); create unique indexCREATE UNIQUE INDEX index_name ON table_name (column_name); create c..

DB/PostgreSQL 2016.09.26

[Database][BTree] Clustered index & Non clustered index의 이해

리그오브레전드 랭킹을 보여주는 사이트를 구현한다고 생각해 보자.테이블에 유저이름과 랭점이 하나의 Row를 구성하고, 이렇게 100만 개의 Row가 있다고 치자.물론 아무것도 안 해 놨는데 데이터베이스가 자동으로 정렬을 하진 않았을 것이다. 어떤 이가 사이트에 접속을 했다.이걸 그냥 ORDER BY로 처리할 수도 있을 것이다. 느리겠지만.하지만.... 이렇게 계속 사이트에 접속하는 유저 한명한명 정렬해주다간 더더더 느려질 것이다... 그럼 당연히 생각나는 건 하나다.'데이터를 넣을 때 정렬을 하게 하면 되지!'그게 바로 index 방식에서 하는 일이다. Clustered index : 데이터를 인덱스 + 물리적으로 모두 정렬되어 있음. Non-Clustered index : 데이터를 인덱스로만 정렬해 놓음..

DB 2016.09.25

[Postgresql] DB Server 'windows to linux(ubuntu)' migration - pgsql backup/restore

Windows에서 pgadmin으로 Postgresql을 쓰다가, 리눅스로 갈아타려고 멀티부팅으로 설치했는데, 윈도우에 있는 걸 그대로 복원할 수 있더라. 방법은 pg_dumpall 이나 pg_dump 기능을 이용하는 것이다. pg_dump는 데이터베이스 하나하나 백업이 가능하고, pg_dumpall은 서버 전체를 백업한다. Windows에서 백업 cmd로 작업한다.옵션은 간단하게-h : hostname-p : port-U : username-f : file이렇다. 자세한 옵션은 문서를 참조 : https://www.postgresql.org/docs/current/static/app-pgdump.html pg_dump pg_dumpall암호라고 뜨는 건 Database 수만큼 권한 때문에 비밀번호를 입..

DB/PostgreSQL 2016.09.24
반응형