본문 바로가기

프로그래밍/Database

(6)
mongo + ec2 + springboot `sudo vim /etc/yum.repos.d/mongodb-org-3.6.rep` ``` [mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc ``` `yum install -y mongodb-org` `service mongod start` `vi /etc/mongod.conf` ``` # network interfaces net: port: 27017 #bindIp: 127.0.0.1 bindIp: 0.0..
MySQL Locking Reads 온라인 게임에서 두 유저가 돈을 교환한다고 하자. A가 1000원을 B에게 주기 위해 A는 1000원이 있는지 확인한 후 B는 1000원을 증감한 뒤 트랜잭션을 커밋한다. 트랜잭션 커밋 또는 롤백 전에 다른 프로세스가 A의 돈을 조회하는 경우 차감전의 돈을 알게 될 것이다. 이를 방지하기 위해 물론 isolation으로 처리할 수 있지만 이러 동시성을 고려해야 하는 경우가 많지 않으면 간단히 잠금 쿼리를 활용하면 된다. SELECT ... LOCK IN SHARE MODE; SELECT ... FOR UPDATE;LOCK IN SHARE MODE는 트랜잭션이 끝날 때 까지 ROW값이 변경되지 않음을 보장한다. 따라서 UPDATE, DELETE 는 대기해야 한다. SELECT는 동시에 여러 세션이 수행할 ..
Couchbase cluster with 2 vm VM을 두대만 할당 받음으로써 한 VM에는 multi instance 구성이 필요했다. 권장 사항은 아니지만 진행해보기로 했는데, 막히는 부분들이 많아 정리를 하게 되었다. 아래의 문서들을 참고 했다. Installing Multiple Instances on Linux PlatformsInstalling as non-root, non-sudoNetwork and Firewall RequirementsUsing user-defined portsInitializing the ClusterInstalling the Couchbase Server Cluster Running Couchbase Server Using Docker VM 1) 우선 rpm을 받자.$ wget https://packages.couch..
DBCP & Timeout 출처: https://fuirosun.tistory.com/entry/JDBC-Timeout%EA%B3%BC-DBCPJDBC Internal - 타임아웃의 이해Commons DBCP 이해하기 DBCP 데이터베이스와 애플리케이션을 효율적으로 연결하는 커넥션 풀(connection pool) 라이브러리는 웹 애플리케이션에서 필수 요소다.웹 애플리케이션 서버로 상용 제품을 사용하다면 보통 제조사에서 제공하는 커넥션 풀 구현체를 사용한다.Apache의 Commons DBCP와 Tomcat-JDBC 등이 있다. 웹 애플리케이션의 요청은 대부분 DBMS(database management system)로 연결되기 때문에 커넥션 풀 라이브러리의 설정은 전체 애플리케이션의 성능과 안정성에 영향을 미치는 핵심이다.따라서..
NoSQL 정리 나무위키의 내용을 요약/정리 했습니다. NoSQL은 Not only SQL의 약자로 데이터를 저장하는 데에 SQL 외에 다른 방법도 있다! 라고 보면 될 듯 하다.MongoDB와 CouchDB에서 사용하는 쿼리 언어는 전혀 다름에도 SQL이 아니기에 NoSQL 카테고리에 범주한다. 헷갈릴 수 있는데 NoSQL != No RDBMS 임을 알자. BerkleyDB와 같은 NoSQL 이면서 RDMS인 녀석도 있다. (반대로 No RDBMS != NoSQL 이기도 하다. KV-store라는 녀석이 있다.) NoSQL의 정의가 명확하지는 않지만 현재 NoSQL이라 불리는 DB들은 대체적으로 공통적인 부분이 있다. - 대부분 클러스터에서 실행할 목적으로 만들어 졌다. - 대부분 오픈소스이다.- 스키마 없이 동작(S..
Normalization & Denormalization 요약 Normalization: 정규화, Denormalization: 비정규화에 대해 간략하게 요역 한다. Normalization 데이터베이스에서 정규화 작업은 데이터 모델을 검증하는 방법다. 이론적으로는 5단계로 구성되어 있고, 실질적으로는 3단계까지만 적용하는 경우가 대부분이다. 고려되는 요소는 아래와 같다. - 중복 컬럼 삭제: No repeating group- 유일키 전체에 대한 종속: Whole key dependent- 유일키가 아닌 것에 영향을 받는 속성은 분리: Non-key Independent 정규화 작업은 중복 컬럼 등을 분리하여 유지보수를 쉽게 해 주지만, 비효율적인 정규화는 '조인'을 과도하게 사용하게 되어 성능을 떨어뜨린다. 따라서 성능적 측면을 고려한 비정규화 작업을 실행해 주..