NoSQL 초간단 Mongo DB Quick Start Guide

2020.12.06 15:42

졸리운_곰 조회 수:1012

 

초간단 Mongo DB Quick Start Guide

조대협 (http://bcho.tistory.com)

 

Mongo DB는 NoSQL 중에서 가장 널리 사용되는 인기있는 제품이다. 사용과 운영이 다른 시스템에 비해서 매우 쉽고, JSON 기반의 Document를 제공하기 때문에, 데이타 구조에 대한 이해 및 사용이 쉽다. 또한 index나 search와 같은 feature를 제공하고 있고, 근래에는 Text Search와 GridFS를 이용한 파일 저장 그리고, 위치 정보 저장 및 쿼리등 다양한 기능을 제공하고 있다.

 

Mongo DB는 10gen이라는 회사에서 개발되어서, 현재 오픈소스로와 상용 버전으로 공급되고 있다.

이 글에서는 Mongo DB에 대한 이해를 돕기 위해서 간단한 설치에서 부터, 자바 기반의 프로그래밍 샘플까지 소개하도록 한다.

 

1.설치

1) 다운로드 하기

mongodb는 http://www.mongodb.org/downloads 에서 다운로드 받을 수 있다. 여기서는 Windows 64-bit Production Release 버전을 기준으로 한다.

zip 파일을 다운로드 받은 후에 C:\dev\mongodb-win32-x86_64-2.4.3 디렉토리에 압축을 풀었다.

2) Mongodb 구동

C:\dev\mongodb-win32-x86_64-2.4.3 에서 다음과 같은 명령어를 이용하여 구동한다.

.\bin\mongod --dbpath C:\dev\mongodb-win32-x86_64-2.4.3\data

3) 콘솔 확인

구동후에, http://localhost:28017 을 접속하면 아래와 같이 mongodb의 기본 관리 화면을 접속할 수 있다.

 

 

2.간단한 테스팅

인스톨이 끝났으면 간단한 테스트를 해보자, ./bin/mongo.exe를 수행하면 Java Script 기반의 쉘이 수행된다. 이해를 돕기 위해서 하나의 테이블에 Insert , select, delete, update를 수행하는 명령을 SQL 문장과 비교해서 소개한다.

 

Insert

SQL              : insert into users ("name","city") values("terry","seoul")

Mongo DB     : db.users.insert({_id:"terry",city:"seoul"})

 

Select

SQL              : select * from users where id="terry"

Mongo DB     : db.users.find({_id:"terry"})

 

Update

SQL              : update users set city="busan" where _id="terry"

Mongo DB     : db.users.update( {_id:"terry"}, {$set :{ city:"Busan" } } )

 

Delete

SQL              : delete from users where _id="terry"

Mongo DB     : db.users.remove({_id:"terry"})

 

간단하게 나마, mongodb query에 대해서 설명하였다.

조금 더 자세한 쿼리에 대한 설명은 http://docs.mongodb.org/manual/crud/ 를 참고하기 바란다.

 

3. 자바로 간단한 프로그램 작성하기

지금까지 설치와 간단한 쿼리 수행을 해봤다. 그러면 이번에는 다음 단계로 간단한 자바 클라이언트를 구현해보자, RDBMS를 이용하기 위해서 JDBC 드라이버를 사용한다면, mongodb는 전용 드라이버 mongo-java-driver 를 제공한다.

이 예제에서는 별도로 설치하기 보다는 아래와 같이 maven 빌드 스크립트에 dependency를 추가하여, 빌드시에 자동으로 라이브러리가 로딩 되도록 한다.

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

 

  <groupId>mongodb</groupId>

  <artifactId>simplemongo</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

 

  <name>simplemongo</name>

  <url>http://maven.apache.org</url>

 

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  </properties>

 

  <dependencies>

        <dependency>

               <groupId>org.mongodb</groupId>

               <artifactId>mongo-java-driver</artifactId>

               <version>2.10.1</version>

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

        </dependency>

  </dependencies>

    <build>

        <plugins>

               <plugin>

                       <groupId>org.apache.maven.plugins</groupId>

                       <artifactId>maven-compiler-plugin</artifactId>

                       <version>2.3.1</version>

                       <configuration>

                              <source>1.6</source>

                              <target>1.6</target>

                       </configuration>

               </plugin>

                <plugin>

                       <groupId>org.apache.maven.plugins</groupId>

                       <artifactId>maven-eclipse-plugin</artifactId>

                       <configuration>

                              <downloadSources>true</downloadSources>

                              <downloadJavadocs>true</downloadJavadocs>

                       </configuration>

               </plugin>

 

        </plugins>

  </build>

</project>

 

 

다음은 localhost에 있는 mongodb instance에 하나의 document(RDBMS로 치면 row)를 insert하는 클라이언트 프로그램 예제이다.

package com.terry;

import com.mongodb.BasicDBObject;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.MongoClient;

import com.mongodb.ServerAddress;

 

public class SimpleMongo {

       

        MongoClient mongoClient = null;

        DB db=null;

       

        public void mongoTest(String ip,int port,String dbname) throws Exception{

              

               mongoClient = new MongoClient(new ServerAddress(ip,port));

               db = mongoClient.getDB(dbname);

              

               DBCollection userTable = db.getCollection("userTable");

               BasicDBObject doc = new BasicDBObject("name""MongoDB").

                append("type""database").

                append("count", 1).

                append("info"new BasicDBObject("x", 203).append("y", 102));

 

               userTable.insert(doc);

        }

       

        public static void main(String args[]) throws Exception{

               SimpleMongo testRunner = new SimpleMongo();

               testRunner.mongoTest("localhost", 27017, "testdb");

        }

}

 

간단한 예제이기 때문에 몇가지만 설명을 하면

com.mongodb.DB는 mySQL의 DB등과 같이, RDBMS의 DB의 개념을 표현한다. 그래서 mongoDB에 연결한후에, db를 getDB를 통해서 연결한다.

mongoDB에서 테이블은 collection이라는 개념으로 존재한다. Table에 insert를 하기 위해서는 getCollection 메서드를 사용해서 해당 테이블 객체를 가지고 온후, Json Object를 만들어서 Table (Collection)에 insert를 하면 된다.

 



출처: https://bcho.tistory.com/742 [조대협의 블로그]

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86772
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 79083
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95845
138 [tensorflow] TensorFlow 2.x 에서 1.x 코드 사용하기 졸리운_곰 2022.08.07 1296
137 [tensorflow] 텐서플로 - TF 1.*버전 vs 2.*버전 file 졸리운_곰 2022.08.07 1246
136 [python][tensorflow - gpu] [파이썬] 텐서플로(TensorFlow) 설치하는 방법, 딥러닝 환경 구축하기 file 졸리운_곰 2021.08.17 1150
135 [tensorflow 설치] windows에서 tensorflow-gpu 1.x 버전 설치, python - 이전 버전의 Tensorflow GPU 설치 졸리운_곰 2021.08.17 960
134 [한글 처리][tensorflow] 한글 자연어처리를 위한 도구들, 자료들, 정보들을 정리해 보았습니다. 졸리운_곰 2021.08.11 1412
133 [딥러닝] [텐서플로우][SSAC X AIFFEL] 작사가 인공지능 만들기 file 졸리운_곰 2021.07.10 1004
132 [모바일 머신러닝 라이브러리 및 자료] Awesome-Mobile-Machine-Learning 졸리운_곰 2021.01.14 1908
131 머신 딥러닝 관련 개발 프로세스 file 졸리운_곰 2021.01.06 1989
130 텐서플로우 소스 구조 분석 (TensorFlow Internal) file 졸리운_곰 2021.01.05 1284
129 [러닝 텐서플로]Chap07.2 - 텐서플로 추상화와 간소화, TFLearn 졸리운_곰 2021.01.03 805
128 [러닝 텐서플로]Chap07.1 - 텐서플로 추상화와 간소화, Estimator file 졸리운_곰 2021.01.02 946
127 [러닝 텐서플로]Chap06 - 텍스트2: word2vec, Bidirectional RNN, GRU, 임베딩 시각화 file 졸리운_곰 2020.12.28 1289
126 [러닝 텐서플로]Chap05 - 텍스트 1: 텍스트와 시퀀스 처리 및 텐서보드 시각화 file 졸리운_곰 2020.12.28 1060
125 [러닝 텐서플로]Chap04 - 합성곱 신경망 CNN file 졸리운_곰 2020.12.28 1148
124 Making TensorFlow Models Portable Using ONNX file 졸리운_곰 2020.12.24 4435
123 [러닝 텐서플로]Chap03 - 텐서플로의 기본 이해하기 file 졸리운_곰 2020.12.24 1476
122 [러닝 텐서플로]Chap02 - 텐서플로 설치 및 실행 file 졸리운_곰 2020.12.24 851
121 [러닝 텐서플로]Chap01 - 텐서플로 란? file 졸리운_곰 2020.12.24 1279
120 러닝 텐서플로 - 0 file 졸리운_곰 2020.12.24 1788
119 [tensorflow] 텐서플로로 음악 작곡 : Generate Music in TensorFlow 졸리운_곰 2020.09.27 1122
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED