본문 바로가기

반응형

DB 공부

Oplog / Startup_log MongoDB는 HA(High Availability)를 위해 클러스터를 구축하는 개념이 Replica Set이다. 이 클러스터를 구축하기 위해서 각각의 데이터베이스 서버들은 Primary, Secondary, Arbiter라는 역할을 가질 수 있으며 P-S-S, P-S-A 구조를 통해 레플리카셋을 구축할 수 있다. Secondary는 Primary가 문제가 생겼을 때를 위해 존재하는 대타이다. 그렇기 때문에 데이터 변경을 처리할 수 있는 유일한 멤버는 Primary이며, Primary는 변경사항을 Oplog에 기록하여 나머지 멤버들이 Primary 와 동기화를 비동기적으로 진행할 수 있도록 하는 것이다. Oplog Oplog는 capped collection 이라는 특수한 컬렉션에 저장된다. 마스터 노.. 더보기
인덱스 구조 및 탐색 with 친절한 SQL 튜닝 인덱스 탐색 과정 인덱스 탐색 과정은 수직적 탐색과 수평적 탐색, 두 단계로 이루어진다. 테이블에서 데이터를 찾는 방법은 크게 두 가지로 나누어진다. 1. 테이블 전체를 스캔한다. 2. 인덱스를 이용한다. 인덱스는 큰 테이블에서 소량 데이터를 검색할 때 사용한다. 온라인 트랜잭션 시스템에서는 소량 데이터를 주로 검색하므로 인덱스 튜닝이 중요하다. 인덱스 튜닝의 첫 번째 요소는 인덱스 스캔 과정에서 발생하는 비효율을 줄이는 것이고, 두 번째는 테이블 액세스 횟수를 줄이는 것이다. 이 두 가지 요소 중 더 중요한 것은 랜덤 액세스 최소화 튜닝이다. SQL 튜닝은 랜덤 I/O와의 전쟁이다. 기본적으로, 데이터 베이스 성능이 느린 이유는 디스크 I/O 때문이다. 읽어야 할 데이터량이 많고 그 과정에서 디스크 I.. 더보기
Database 데이터베이스를 사용하는 이유 데이터베이스가 존재하기 이전에는 파일 시스템을 이용하여 데이터를 관리하였다. (현재도 부분적으로 사용됨) 데이터를 각각의 파일 단위로 저장하며 이러한 일들을 처리하기 위한 독립적인 애플리케이션과 상호 연동이 되어야 한다. 이 때의 문제점은 데이터 종속성 문제와 중복성, 데이터 무결성이다. 데이터베이스의 특징 데이터의 독립성 물리적 독립성: 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없음. 논리적 독립성: 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다. 데이터의 무결성: 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 .. 더보기
MongoDB (root) 계정 만들기 MongoDB 에서 admin 계정 만들기 >use admin switched to db admin >db.createUser( { user: "mongo", ... pwd: "password123", ... roles: ["root"] } ... ) Successfully added user: { "user" : "mongo", "roles" : [ "root" ] } MongoDB 사용자 조회 >use admin switched to db admin >db.system.users.find().pretty() MongoDB DB 접속 >mongo -u 'mongo' -p 'password123' --authenticationDatabase 'admin' mongo DB database 생성 >use m.. 더보기
macOS mongoDB 설정 download mongoDB MongoDB mongoDB 홈페이지에서 MongoDB Server를 tgz 확장자로 다운을 받는다. tgz 파일 이동 tgz 압축 해제 후 원하고자 하는 폴더에 다운받은 tgz파일을 옮긴다. 필자는 mongo 디렉토리를 별도로 만들었다. tar xvfz mongodb-osx-x86_64-3.2.22.tgz mv mongodb-osx-x86_64-3.2.22/ /Users/ibohyeon/Desktop/project/mongo 폴더 이름 변경 mv mongodb-osx-x86_64-3.2.22/ mongodb/ 데이터 폴더 생성 mkdir data cd data mkdir db tree . 명령어를 통해 확인해보면 아래와 같은 구조 입니다. . ├── GNU-AGPL-3.0.. 더보기
Neo4j - Cypher 언어 Cypher Query 그래프 데이터베이스 질의어로, 다른 질의어에 비해 단순하지만 강력한 질의어. Cypher Query는 그래프 데이터베이스 Neo4j사가 만들었으나 2015년 10월 오픈 사이퍼 프로젝트를 통해 개방됨. Cypher Query는 프로퍼티 그래프 모델에 기반을 두며, 노드와 엣지의 표준 그래프 요소들에 레이블(label)과 프로퍼티(property)를 추가해서 데이터베이스화 할 수 있다. 예시 CREATE CREATE : Data를 만드는 구문 () : Node 단위 {} : 속성 추가 변수:라벨 : 변수, 라벨로 node 구분 [] : 관계 설명 CREATE(길동:학생 {이름:"홍길동", 학년:"3학년"}) CREATE(수학:과목 {담당선생님:"장발산", 경력: "3년"}) CREA.. 더보기
Neo4j 개요 Neo4j Neo4jwiki ACID 트랜잭션 지원 Native 그래프 DB Cypher 쿼리 언어 제공 그래프 DB와 Neo4j 그래프 DB란 데이터 간의 관계를 일급 엔티티로 다룰 수 있도록 설계된 데이터베이스이다. 관계형 데이터베이스의 경우 검색 시점에 저장된 관계를 이용하는 반면, 그래프 DB는 데이터 간의 관계를 저장 시점에 저장한다. 그래프 DB의 핵심 요소는 Node와 Relation이다. 노드 그래프 엔티티로서 역할에 따른 레이블을 가짐 예) Employee, Company, City 관계 두 노드 사이의 관계 예) :HAS_CEO, :LOCATED_IN 레이블 여러 노드를 하나의 집합으로 묶기 위해서 사용하는 이름을 가지는 그래프 구조체 도메인 객체의 역할을 식별함으로써 레이블을 식별할 .. 더보기

반응형