일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 몽고DB
- Datamodel
- AWS VPC
- AWS NAT
- codepreosso
- AWS
- aws ec2
- 소프트웨어 개발과 테스트
- codepresso
- EC2 배포
- JPA연관관계
- MongoDB DataModel
- AWS NAT gateway
- Loard Balancer
- AWS Route53
- 스프링 게시판
- Amazon Web Service
- MongoDB 참조
- MongoDB Reference
- ubuntu 배포
- VPC EC2
- SrpingBoot
- AWS CloudTrail
- EC2 생성
- 레디스설치
- 코드프레소
- AWS #CloudTrail #AWS로그
- SpringProject
- AWS 요금
- MongoDB
- Today
- Total
목록Dev-Database (9)
정환타 개발노트

이전에 MongoDB의 사딩에 대해서 알아보았다. 이번에는 MongoDB 샤딩 클러스터의 요소인 Shards, Config server, Mongos에 대해 자세히 알아보겠다. Sharding 샤드는 샤드 클러스터에서 샤드 데이터의 집합이라고 할 수 있다. 각 샤드에 대한 관리는 샤드에 직접 연결하여야 하는데, 단일 샤드에 쿼리 작업을 수행하면 해당 샤드의 데이터만 반환이 된다. 만약, 클러스터단의 작업을 수행하려면 mongos에 연결하여 읽기와 쓰기 작업을 해야한다. 기본적으로 샤딩을 위해서는 2개 이상의 샤드가 필요하다. 2개 이상의 샤드를 이용하기 위해서는 라우터가 필요하다. 라우터는 고가용성과 확장성을 확보할 수 있는데, 일반적으로 각 응용프로그램 서버에 라우터(Mongos)를 배치하여 사용한다...

Sharding MongoDB의 샤딩(Sharding)을 알아보기 전에 먼저, 샤딩에 대한 개념을 알아보자. 샤딩은 데이터를 여러 서버에 분산해서 저장하고 처리할 수 있는 기술을 말한다. 복제(Replication)와의 차이점이 있다면, 복제는 고가용성을 위한 솔루션이고 샤딩은 분산 처리를 위한 솔루션이라는 것이다. (몽고디비에서는 고가용성과 대용량 분산 처리를 위해 복제와 샤딩을 모두 적용한다.) 일반적으로 부산 처리를 할수 있는 방법에는 vertical scaling 과 horizontal scaling 두가지가 있다. 먼저, Vertical scaling은 수직 확장의 개념으로 이해할 수 있는데 단일 서버를 확장하고자 할 때 사용한다. 예를 들어 고성능의 CPU를 사용하거나 RAM을 추가하거나 저장..
MongoDB에서 DB를 참조하는 방법은 두가지로 나뉜다. 하나는 수동 참조(Manual Reference)이며, 다른 하나는 "DBRefs"를 사용하는 것이다. 수동 참조 수동 참조 방식은 다른 document의 _id 필드를 참조를 사용할 document의 하나의 필드로 저장하는 방식이다. 필드 중 하나인 _id 값을 통해 참조할 document의 데이터를 가져온다. 대부분의 경우에는 수동 참조 방식을 사용한다. 아래에는 첫번째인 place 컬렉션과 두번째인 poeple 컬력센 두개로 구성되어 있다. original_id = ObjectId() db.places.insert({ "_id": original_id, "name": "Broadway Center", "url": "bc.example.net..
MongoDB를 사용한다면, 여러가지 Application 환경에서 다양한 모델을 적용하여 활용할 수 있다. 연관 동작 수행 MongoDB에서 단일 document에 대한 쓰기 동작을 유기적으로 수행 할 수 있다. 만약 여러개의 필드가 서로 영향을 미친다면, 같은 document가 그 필드를 포함하면 효율적으로 동작을 수행할 수 있다. 예를들어, 책과 대여가능한 권수, 대여 정보를 유지하는 상황에서, 대여가능 권수(available)와 대여 정보(checkout)는 서로 연관되어 처리해야 한다. { _id: 123456789, title: "MongoDB: The Definitive Guide", author: [ "Kristina Chodorow", "Mike Dirolf" ], published_da..

Data Model 이번에는 데이터 모델들에 대해 기술을 하겠다. MongoDB 또한 documents간의 관계를 설정할 수 있는데, 그러한 관계를 설정할 수 있는 모델 구조는 다음과 같다. One-to-One Relationship(일대일 관계) 두개의 document에 대해 일대일 관계로 구성할 수 있다. 아래의 예제에서는 후원자(patron)와 주소를 매핑하고 있고, 주소에는 후원자에 대한 reference가 포함된다("patron_id") { _id: "joe", name: "Joe Bookreader" } { patron_id: "joe", street: "123 Fake Street", city: "Faketon", state: "MA", zip: "12345" } 하지만 만약 이름(name)..

Bulk Write MongoDB는 단일 컬렉션(Collection)에 대하여 대량 쓰기, 업데이트, 제거 작업을 bulkWrite를 통해 할 수 있다. Bulk Write는 Ordered 와 Unordered 두가지가 존재한다. Ordered 방식은 작업을 순차적으로 실행하는데, 만약 쓰기 작업을 하는 도중 오류가 발생하면 나머지 쓰기 작업을 처리하지 않고 작업을 끝낸다. Unordered 방식은 쓰기 작업 중 하나가 오류가 발생하더라도 나머지 작업을 계속 실행한다. - Ordered 방식은 이전 작업을 완료할 때 까지 다음 작업을 처리하지 않기 때문에 처리 속도가 느리다. (기본적으로 MongoDB는 ordered 방식을 사용) bulkWrite()는 다음과 같은 작업을 지원한다. insertOne ..

MongoDB mongodb에서 CRUD(Create, Read, Update, Delete)를 하는 방법에 대해 알아보려고 한다. 먼저, MongoDB의 설치는 하단의 링크를 참조하면 된다. https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ MongoDB는 NoSQL이지만, 다른 RDBMS와 같이 CRUD를 제공하는데, 하나씩 살펴보겠다. (글쓰는 시점 기준으로 가장 최신버전인 4.2를 기준으로 작성하였습니다.) Create Operations(Insert) Create는 새로운 documents를 collection에 생성하거나 추가하는 동작이다. MongoDB의 create는 insert를 통해서 이루어지는데, 만약 collecti..

Redis 설치 레디스를 우분투 서버에 설치를 하려한다. EC2에 우분투 인스턴스를 하나 만들어서 레디스 서버로 활용을 하려고 하는데, 서버 환경을 변경할 수 있으니 기록하는 습관이 익숙해지도록 작성을 해보겠다. 1. SSH로 접속후 apt update sudo apt-get update sudo apt-get upgrade 2. apt를 이용하여 redis 설치 sudo apt-get install -y redis-server 3. Redis 메모리 할당. 1. vmstat를 이용하여 서버의 메모리 확인 vmstat -s 필자는 사용가능 메모리가 1GB이다. 따라서 각자의 메모리 환경에 맞게 redis설정 파일에서 maxmemory를 지정한다. sudo vim /etc/redis/redis.conf v..

Replication 데이터베이스의 안정성과 관련된 기능중 Replication에 대해 공부를 하였다. Replication은 여러가지 DB 서버가 있을 때, 각각의 서버가 동일한 데이터를 가지도록 하는 기술을 말한다. (사실상 백업과 성능향상을 위해 DB를 말그대로 여러대의 서버에 '복제'하는 기술) 위의 기술을 통해 데이터 부하 분산, 백업과 보안에 관련된 문제를 해결할 수 있다. Master And Slave Replication과 관련된 핵심 키워드는 마스터(Master)와 슬레이브(Slave)이다. 마스터는 원본 데이터가 위치하는 곳을 말하며. 슬레이브는 그 원본(마스터)을 복제한 곳을 말한다. 마스터와 슬레이브를 구분은 읽기와 쓰기의 차이에서 확인 할 수 있다. 일반적으로 데이터베이스는 읽기(..