본문 바로가기

Total

Redis 소개 Redis 란? (REmote DIctionary Server) Salvatore Sanfilippo 가 개발한 오픈 소스 소프트웨어 휘발성이면서 영속성을 가진 key-value 형 스토어 Memory DB : 메모리에 데이타를 저장, 관리 Redis 특징 오픈 소스 소프트웨어 디스크가 아닌 메모리 기반의 데이터 저장소이다. (In-Memory data structure store) NoSQL & Cache 솔루션이며 메모리 기반으로 구성된다. 명시적으로 삭제, expire를 설정하지 않으면 데이터는 삭제되지 않는다(영구적 보존) 여러대의 서버 구성 가능하다. 데이터베이스로 사용될 수 있으며, Cache로도 사용될 수 있는 기술이다. 성능은 서버에 따라 다르나 초당 2만 ~ 10만회 수행한다. Memor.. 더보기
JAVA : JPA 소개 JPA는 Java Persistent API 의 약자입니다. JPA는 여러 ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean을 JPA라고 바꾸고 JavaSE, JavaEE를 위한 영속성(persistence) 관리와 ORM을 위한 표준 기술입니다. JPA는 ORM 표준 기술로 Hibernate, OpenJPA, EclipseLink, TopLink Essentials과 같은 구현체가 있고 이에 표준 인터페이스가 바로 JPA입니다. ORM(Object Relational Mapping)이란 RDB 테이블을 객체지향적으로 사용하기 위한 기술입니다. RDB 테이블은 객체지향적 특징(상속, 다형성, 레퍼런스, 오브젝트 등)이 없고 자바와 같은 언어로 접근하기 쉽지 .. 더보기
Java : Gradle Dependency 로컬 라이브러리 dependency에 포함시키는 법 프로젝트 root 경로에 lib 폴더 생성 후, 하위에 jar 를 넣습니다. 그리고 아래와 같이 fileTree 를 활용하면, maven 이나 별도의 repository 없이 jar로 넣을 수 있습니다. dependencies { compile fileTree (dir: 'lib', include:['*/.jar']) } 뚱뚱한 jar 만들기 소스코드 외 사용중인 lib를 모두 포함하는 jar를 만들려면? // 다음과 같이 shadow plug-in 을 추가 buildscript { repositories { jcenter() } dependencies { classpath 'com.github.jengelman.gr.. 더보기
Mongodb : Linux 설치 가이드 tar 다운로드 https://www.mongodb.com/download-center#atlas 위 주소로 접속하여, 최신버전 다운로드 linux 서버로 파일 복사 압축 풀기 tar xzf mongodb-linux-x86_64-rhel70-3.4.2.gz 데이터 저장용 폴더 생성 mkdir -p /data/db 서버 시작 /[압축푼 경로]/mongodb-linux-x86_64-rhel70-3.4.2/bin/mongod --port 27017 --dbpath /data/db 인증을 주고자 할 경우는 /[압축푼 경로]/mongodb-linux-x86_64-rhel70-3.4.2/bin/mongod --port 27017 --dbpath /data/db -- auth 백그라운드로 실행할 경우는 /[압축푼 경.. 더보기
OpenSource MongoDB : (4) Aggregation Pipeline Optimization 명령어 (연산자) 실행 입출력 형태 $project reshape (1:1) 키를 지우거나 추가하기 $match filler (n:1) 필터링하기 $group aggregate (n:1) 합계 연산 $sort sort (1:1) 분류하기 $skip skips (n:1) 건너뛰기 $limit limits (n:1) 제한하기 $unwind normalize (1:n) tags:["red","blue","green"] -> tags:red, tags:green, tags:blue $out output (1:1) 출력하기 1. Pipeline Sequence Optimization 1) $project or $addFields + $match Sequence Optimization Before Optimizat.. 더보기
OpenSource MongoDB : (3) 집계 연산 - 집계동작 소개 집계 파이프라인 db.orders.aggregate( [ -- status field 가 "A" 인 것을 추출 { $match: { status: "A" } }, -- 그룹 식별 값은 "cust_id" field 로.. -- 그룹핑 된 document 들의 amount 값을 합친 것을 "total" field 로.. { $group: { _id: : "$cust_id", total : { $sum : "$amount" } } } ]) 파이프라인 연산자와 인덱스 $match, $sort 파이프라인 연산자들은 파이프라인의 시작점에 사용하는 경우 인덱스로서의 장점을 발휘합니다. 버전 2.4 이후로 도입된 $geoNear 파이프라인 연산자는 위치 인덱스의 장점을 갖습니다. 선점 필터링 (Ear.. 더보기
OpenSource MongoDB : (2) CRUD 연산 - CRUD 란? Create / Read / Update / Delete 를 의미합니다. Document 를 JSON 형태로 전달하면서 2진 JSON인 BSON 코드로 저장합니다. - MongoDB의 주요기능 Index MongoDB는 일반적인 쿼리 밑 업데이트 성능을 향상시키기 위해 인덱스를 완벽하게 지원합니다. 인덱스는 애플리케이션에서 데이터 구조를 효율적으로 관리하면서 컬렉션의 일정 부분을 view로 저장하도록 지원합니다. 1) Index 를 사용하는 이유 Index는 DB 테이블에 대한 처리 속도를 높여주는 자료 구조로서, 저장딘 자료에 대한 빠른 조회가 가능해집니다. Index는 Key-Field 형태를 가지며, 스캔을 거치지 않고 원하는 문서의 주소로 바로 이동하게 합니다. Collectio.. 더보기
New NoSQL & mongoDB : (6) Sharding System Sharding System 이란? Sharding 의 가장 큰 목적은 파티셔닝을 통한 데이터 분산 처리와 성능 향상을 위한 Load Balancing 입니다. 또한, 빅 데이터의 효율적 관리와 백업 및 복구 전략 수립을 위한 솔루션이기도 합니다. Sharding의 목적 데이터의 분산 저장 하나의 서버에 빅 데이터를 저장, 관리하는 것은 성능 저하 문제를 유발시킵니다. 따라서, 여러대의 서버를 통하 분산 처리했을 때 가장 이상적으로 작동할 수 있습니다. 빠른 성능 분산 처리는 여러 개의 프로세스가 여러 개의 CPU를 통해 동시 작업을 수행했을 때 가장 이상적이라 볼 수 있습니다. 데이터 백업과 복구 전략의 역할 하나의 서버에 빅 데이터를 저장, 관리했을 때 서버 장애가 발생한다면 어마어마한 데이터 유실이.. 더보기