Mongo DB

Document technical information

Format pptx
Size 2.0 MB
First found May 22, 2018

Document content analysis

Category Also themed
Language
Type
not defined
Concepts
no text concepts found

Persons

Organizations

Places

Transcript

Mongo DB
Page 1
Contents
• 1주
–
–
–
–
–
–
–
MongoDB
Setup
Data Structure
Query
Index
Java Driver
Management
• 2주
–
–
–
–
–
Sharding
GridFS
MapReduce
분산 MongoDB 구축 실습
Java Application 개발 실습
Page 2
Mongo DB
• MongoDB (from "humongous") is an open source, highperformance, schema-free, document-oriented database
written in the C++ programming language
•
Document-oriented
storage
•
Index Support
•
Replication &
High Availability
•
Auto-Sharding
•
Fast In-Place Updates
•
Map/Reduce
•
GridFS
Page 3
Mongo DB
• Consistent UTF-8 encoding
• Cross-platform support: Windows, Linux, OS X, and Solaris
• Type-rich: supports dates, regular expressions, code, binary data, and
more (all BSON types)
• Cursors for query results
• Language Support : C++, Java, Haskell, JS, Ruby, PHP, Python
Page 4
SQL to Mongo Mapping - Terminology
SQL Term
Mongo Term
Database
Database
Table
Collection
Index
Index
Row
BSON Document
Column
BSON Field
Primary Key
Id field
Page 5
Mongo DB System
Page 6
Setup
Page 7
Mongo DB 설치
• 버전 선택
– 짝수 : Stable (1.6.0, 1.6.1, 1.6,15 …)
– 홀수 : Experimental (1.7.0, 1.7.1, …)
• 플랫폼 선택
– Mac OS X
– Linux
– Windows
• http://www.mongodb.org/display/DOCS/Downloads
– Mac OSX의 경우는 MacPorts등으로 설치 가능
Page 8
Mongo DB 실행
• 실행
– $cd > mongod.exe
– $cd > mongod.exe –dbpath C:\mydb\
• 서비스 등록하기
– $cd > mongod.exe –dbpath C:\mydb\ --install
• DB file prealloc
– $cd > mongod.exe --noprealloc
• Linux나 Mac의 경우에도 동일
Page 9
Shell
• 쉘 띄우기
– $cd> mongod.exe URL:PORT/dbname
– $cd > mongod.exe –node
• Javascript등의 사용시 유용
Page 10
Shell
Page 11
Data Structure
Page 12
Document
• 문서(Document)는 하나의 {Key, Value} set
– {“greeting” : “Hello, world!”}
– {“greeting” : “Hello, world!” , “foo” : 3}
– {“foo” : 3 , “greeting” : “Hello, world!”}
• Key
– .과 $는 예약어
– _는 대부분 예약어
– 예약어를 제외한 어떠한 UTF-8 문자라도 사용 가능
• Value
– mongoDB에서 지원하는 Data type
Page 13
Collection
• 컬렉션(Collection)은 Document들의 모음
• Schema를 정하지 않고 사용
– 서로 다른 구조의 Document를 한 Collection내에 저장할 수 있음
{“greeting” : “Hello, world!”}
{“foo” : 3}
{“name” : “John”}
• Collection별 관리 이유
– 개발 및 관리의 편의성
– 질의 속도 향상
– 효율적인 Index생성
Page 14
Database
• Database는 Collection들의 모음
• Application 별로 Database를 분리하는 것을 권장
–
–
–
–
빈 문자열(“”)를 사용 불가
공백, ., $, \, \, null을 사용 불가
소문자만 사용
최대 64byte 길이 허용
• Database의 이름이 DB파일명으로 저장
Page 15
Page 16
Data type
• null
– {“x” : null}
• Boolean
– {“x” : true}
• Int (32, 64)
– Javascript의 한계상 표현 불가능. 숫자를 입력할 경우 Double으로 간주
• Double
– {“x” : 3.14}
• String
– {“x” : “foobar”}
Page 17
Data type
• objectID
– Document의 고유한 12byte ID임
– {“x” : ObjectId()}
• Date
– Long 형
– {“x” : new Date()}
• Code (Javascript)
– Javascript를 문서에 포함할 수 있음
– {“x” : function() { /* … */ }
• Array
– 값의 집합이나 목록을 배열로 표현할 수 있음
– {“x” : [“a”, “b”, “c”] }
Page 18
Query
Page 19
Insert / Delete
• Insert
– Db.foo.insert({“bar” : “hello”})
• Delete
– Db.users.remove() : 해당 컬렉션(users)에 있는 모든 문서 삭제
– Db.users.list.remove({“name” : “john”}) : 이름이 john인 모든 문서 삭
제
Page 20
Update
Page 21
안전 연산
•
Insert, Remove, Update는 기본적으로 Fire and forget방식
•
해당 연산들의 수행 후 getLastError 명령어를 수행하여 반환 코드를 기다림
•
성능의 희생과 안전 사이에서 선택
Page 22
Select
• db.collection.find({name: {first: 'John', last: 'Doe'}})
– Find all documents in the collection with name of John Doe
• db.collection.find({name.last: 'Doe'})
– Find all documents in the collection with last name of Doe
• db.collection.find({keywords: {$in: ['storage', 'DBMS']}})
– Find all documents with 'storage' or 'DBMS' in its keywords array
Page 23
질의 조건
• Range, OR, Negation이 가능
• 비교연산자
–
–
–
–
%lt : <
%lte : <=
%gt : >
%gte : >=
Start = new Date(“01/01/2007”)
db.user.find({“registered” : {“$lt” : start}})
• OR
– Db.c.find({“ticket_no” : {“$in” : [725, 542, 390]}})
• Not
– Db.c.find({“ticket_no” : {$not” : {“$in” : [725,542,390]}})
Page 24
Count, Distinct
• Count
Page 25
Count, Distinct
• Distinct
– 주어진 키의 고유한 값들을 찾음
– >db.runCommand({“distinct” : “people”, “key” : “age”})
Page 26
SQL to Mongo Mapping - Query
SQL
Mongo
CREATE TABLE USERS (a Number, b
Number)
db.createCollection(“USERS")
INSERT INTO USERS VALUES(3,5)
db.users.insert({a:3,b:5})
SELECT a,b FROM users
db.users.find({}, {a:1,b:1})
SELECT * FROM users
db.users.find()
SELECT * FROM users WHERE age=33
db.users.find({age:33})
SELECT * FROM users WHERE age=33
ORDER BY name asc
db.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33
db.users.find({age:{$gt:33}})
SELECT * FROM users WHERE name
LIKE "%Joe%"
db.users.find({name:/Joe/})
UPDATE users SET a=1 WHERE b='q'
db.users.update({b:'q'}, {$set:{a:1}})
DELETE FROM users WHERE z="abc"
db.users.remove({z:'abc'});
Page 27
Index
Page 29
Indexing
• >db.people.find({“username” : “mark”})
• >db.people.ensureIndex({“username” : 1}, {“background” : true)
Page 30
Explain / Hint
• Explain
– >db.foo.find().explain()
– Result는 document의 형태
• Hint
– >db.foo.find({“age” : 14}).hint({“username” : 1})
Page 31
Spatial Index
• >db.map.ensureIndex({“gps” : “2d”})
Page 32
Management
Page 33
Logging
• File로의 Logging방법
– >mongodb –logpath mongo.log
Page 34
Monitoring
• Admin Console
– http://server url:27017
Page 35
Account
Page 36
Java Drivers
Page 37
Jar
• Github(http://www.github.com/mongodb/mongo-javadriver/downloads )
• Com.mongodb 내부 클래스 사용
Page 38
Page 39
Next week..
• Sharding를 통한 분산 구축
• MapReduce 활용
• MongoDB 구축, Java Application 개발 실습
Page 40

Similar documents

×

Report this document