Database 37

MySQL Null Condition

MySQL Null Condition # Wrong Condition select * from table where column = null select * from table where column != null # Correct Conditionselect * from table where column is nullselect * from table where column is not null # null이거나, 특정값이 아닌 경우## Wrong, VALUE가 아닌경우의 검색 조건, 하지만 null일때의 데이터값을 가지고 올수가 없다.select * from table where column != 'VALUE' ## Correctselect * from table where (column != 'VA..

Database/MySQL 2019.01.23

Elastic Search

Elastic SearchRESTful 분산형 검색 및 분석Features분산형, 고가용성 검색 엔진모든 인덱스는 설정된 갯수만큼 Shard이 된다.각각의 Shard은 하나 이상의 replica를 가지고 있는다.Read / Search는 어느 Replica Shard에서나 작동이 된다.멀티 테넌트 (Multi Tenant)1개의 이상의 인덱스의 쿼리Index Level 설정 가능 (shard의 갯수, index 저장소)HTTP RESTFul APINative Java APIDocument 기반의 문서준 실시간 검색 (Near Real Time Search)비동기 Write

MySQL Partition Table

MySQL Partition Table테이블에 들어오는 데이터를 별도를 테이블로 저장하는 기능, 하나의 테이블로 읽기와 쓰기가 가능하다.파티션 방법해시리스트키레인지 파티션을 사용하는 이유테이블의 너무 커서 인덱스의 크기가 물리적인 메모리가 훨씬 큰 경우데이터 특성상 주기적인 삭제 작업이 필요한 경우 (이력 데이터)단일 INSERT와 단일 또는 범위 SELECT의 빠른 처리인덱스가 커질수록 SELECT, INSERT, UPDATE, DELETE 작업이 느려지게 된다. 데이터가 10기가이고 인덱스가 3G 일때 대부분 데이터가 조회되는 것이 아니라 보통 데이터의 20~30%수준만 조회가 된다. 이럴때 자주 사용하는 데이터를 분리를 한다면 성능적으로 효과를 볼수가 있다. Create Table ExampleCR..

Database/MySQL 2018.11.05

MySQL Unique Key

MySQL Unique Key데이터를 저장을 하거나 처리를 할때 중복으로 저장이 되는 경우가 있을 수가 있다이때 Unique Key를 설정을 통해 처리를 할수가 있다 Create Table QueryCREATE TABLE table( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(10) NOT NULL, PRIMARY KEY (id), UNIQUE INDEX `table_uk_01` (name)); ALTER QueryALTER TABLE table ADD UNIQUE INDEX` table_uk_01` (name) Tip 아닌 Tip데이터가 동시에 insert가 되는 경우에는 Duplicate 메시지가 발생이 된다.여러개의 동시에 들어가는 경우(Thread, 멀티 서버..

Database/MySQL 2018.10.29

Redis 자료구조

Redis 자료구조Remote Dictionary System메모리 기반의 Key/Value Store동그라미Key/Value Store기본적인 Key/Value Store특정 키 값에 값을 저장하는 구조DataTypeValue가 단순한 Object가 아니라 자료구조를 갖는다.String최대 512mbyteSetstring의 집합set간의 연산을 지원한다. 교집합, 합집합, 차이를 매우를 빠른 시간내에서 추출할 수 있다.Sorted Setset에 score 라는 필드가 추가된 데이터 형이다score 범위 따른 쿼리가 가능하다.Hashesvalue 내에서 field/string value 쌍으로 이루어진 테이블 저장하는 데이터 구조체PK 1개와 String 필드 하나로 이루어진 테이블ListString 들..

Database 2018.10.14

Apache Cassandra

Apache Cassandra 특징High Availability에 최적화된 분산형 DatabaseConsistent Hasing을 이용한 Ring 구조https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B4%80%EB%90%9C_%ED%95%B4%EC%8B%B1https://www.joinc.co.kr/w/man/12/hash/consistenthttp://d2.naver.com/helloworld/1039Gossip Protocol마스터 없이 동작https://en.wikipedia.org/wiki/Gossip_protocolData Structure 최상위 논리적인 Data 저장소 KeyspaceTableRowKey-Value로 구성된 Column 데이터의 분산 Replic..

Database/Cassandra 2018.09.17

목적에 맞는 데이터베이스 선택하기

목적에 맞는 데이터베이스 선택하기서비스를 개발을 할때 그 서비스의 성격, 특징에 맞게 데이터베이스 선택 또한 중요한 요소중의 하나이다.Data SizeRead (Latency)WriteUpdate위의 특징에 따라 선택할수 있는 데이터베이스를 정리를 해본다. 하나의 데이터베이스만 사용하는 것이 아니라 비즈니스, 데이터의 성격 등의 따라 데이터를 여러개를 둬서 활용한다. 데이터 양이 적고 읽기, 쓰기가 중요한 경우, 업데이트가 많이 일어나는 경우 (Data size ~ X GB, Read < 10ms, write < 10ms)빠른 읽기, 쓰기를 위해 Memory를 사용하는 Database를 선택한다. 보통 Cache에 활용된다.update가 자주 일어나는 경우 (real-time)에 활용된다.RedisMem..

Database 2018.09.09

JPA 영속성 컨텍스트

JPA 영속성 컨텍스트영속성 컨텍스트영속성 컨텍스트란 엔티티를 영구로 저장하는 환경(context)라는 의미이다영속성 컨텍스트 개념을 구현한게 entity manger이라고 생각을 하면 된다.영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다. 없으면 예외가 발생한다.영속성 컨텍스트에 엔티티를 저장하면 이 엔티티는 언제 저장이 될까?JPA는 보통 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영하는데 이를 플러시(flush)라 한다.영속성 컨텍스트가 엔티티를 관리하면 다음과 같은 장점이 있다.1차 캐시동일성 보장트랜잭션을 지원하는 쓰기 지연변경 감지지연 로딩엔티티의 생명주기비영속성(new/transient) : 영속성 ..

Database/JPA 2018.09.08