Skip to main content

몽고DB 목차 역사 주요 기능 참조 외부 링크 둘러보기 메뉴www.mongodb.org“Release Notes for MongoDB 4.0 — MongoDB Manual”“Release 4.1.9”“Server Side Public License (SSPL)”“10gen embraces what it created, becomes MongoDB Inc.”“DB-Engines Ranking”“MongoDB shares rally 34% in first day of trading above elevated IPO price”“Why MongoDB is the way to go”“Ridiculously fast MongoDB replica recovery Part 1 of 2”원본 문서“Turning MongoDB Replica Set to a Sharded Cluster”“GridFS & MongoDB: Pros & Cons”“NGINX plugin for MongoDB source code”“lighttpd plugin for MongoDB source code”“MongoDB overview”“Aggregation — MongoDB Manual”“Map-Reduce — MongoDB Manual”“MongoDB Drives NoSQL More Deeply into Enterprise Opportunities”몽고DBehWorldCat174499323no20111307097724020-0

Node.jsNPMV8CommonJSLodashUnderscore.jsReact.jsJoyentNodejitsu오픈시프트Linode디지털오션


도큐먼트 지향 데이터베이스분산 컴퓨팅 구조NoSQL2009년 소프트웨어GNU AGPL 라이선스 소프트웨어


도큐먼트 지향 데이터베이스NoSQLJSONBSON관계형 데이터베이스아페로 GPL아파치 라이선스자유-오픈 소스 소프트웨어몽고DBPaaS크레이그리스트이베이포스퀘어소스포지뉴욕 타임즈구글페이스북백엔드PaaS정규 표현식자바스크립트샤딩부하분산GridFS파일 시스템그리드 파일 시스템NgnixLighttpd맵리듀스SQL유닉스 파이프맵리듀스원형 버퍼ACID












몽고DB




위키백과, 우리 모두의 백과사전.






둘러보기로 가기
검색하러 가기

























몽고DB




개발자

몽고DB
발표일
2009년 0월 0일 (10년 전)(2009-12-00)

최근 버전
4.0.10[1] / 2019년 5월 31일 (2달 전)(2019-05-31)

미리보기 버전
4.1.9[2] / 2019년 3월 13일 (4달 전)(2019-03-13)
개발 상태
지원 중

프로그래밍 언어

C++, Go, 자바스크립트, 파이썬

운영 체제

크로스 플랫폼

언어
영어

종류

도큐먼트 지향 데이터베이스

라이선스
SSPL[3]

웹사이트

www.mongodb.org


Robomongo 0.8.5를 사용하여 몽고DB에 레코드를 삽입하고 있는 모습.


몽고DB(MongoDB←HUMONGOUS)는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. NoSQL 데이터베이스로 분류되는 몽고DB는 JSON과 같은 동적 스키마형 도큐먼트들(몽고DB는 이러한 포맷을 BSON이라 부름)을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 삼간다. 이로써 특정한 종류의 애플리케이션을 더 쉽고 더 빠르게 데이터 통합을 가능케 한다. 아페로 GPL과 아파치 라이선스를 결합하여 공개된 몽고DB는 자유-오픈 소스 소프트웨어이다.


뉴욕시에 기반을 둔 회사인 10gen (현재의 몽고DB)에서 2007년 10월, 계획된 PaaS(서비스로서의 플랫폼) 제품의 구성 요소로 처음 개발하였으며 10gen이 상용 지원 및 기타 서비스를 제공한 2009년에 오픈 소스 개발 모델로 전향하였다.[4] 그 뒤로 몽고DB는 크레이그리스트, 이베이, 포스퀘어, 소스포지, 뉴욕 타임즈, 구글, 페이스북와 같은 수많은 주요 웹사이트 및 서비스에 백엔드 소프트웨어로 채택되고 있다. 몽고DB는 가장 유명한 NoSQL 데이터베이스 시스템이다.[5]




목차





  • 1 역사


  • 2 주요 기능

    • 2.1 애드혹 쿼리


    • 2.2 색인


    • 2.3 리플리케이션


    • 2.4 로드 밸런싱


    • 2.5 파일 스토리지


    • 2.6 애그리게이션


    • 2.7 서버 사이드 자바스크립트 실행


    • 2.8 캡트 컬렉션


    • 2.9 트랜잭션



  • 3 참조


  • 4 외부 링크




역사


10gen 소프트웨어 기업은 2007년에 PaaS 제품으로서 몽고DB의 개발을 시작했다. 2009년, 이 기업은 오픈 소스 개발 모델로 전환했으며 기업은 상용 지원과 기타 서비스를 제공하는 방식을 채택하였다. 2013년, 10gen은 사명을 MongoDB Inc.로 변경하였다.[4]


2017년 10월 20일, 몽고DB는 주식 공개 기업이 되었으며 NASDAQ에 MDB라는 심볼로 등재되었으며 IPO 가격은 한 주에 24달러였다.[6]



주요 기능



애드혹 쿼리


몽고DB는 필드, 레인지 쿼리, 정규 표현식 검색을 지원한다.[7] 쿼리는 특정 필드의 도큐먼트를 반환할 수 있으며 사용자 지정 자바스크립트 함수를 포함할 수도 있다. 쿼리는 주어진 크기의 임의의 결과 샘플을 반환하도록 설정할 수도 있다.



색인


몽고DB 도큐먼트의 필드는 프라이머리(primary) 인덱스와 세컨더리(secondary) 인덱스로 인덱싱할 수 있다.



리플리케이션


몽고DB는 리플리카 세트(replica set)와 함께 고가용성을 제공한다.[8] 리플리카 세트는 둘 이상의 데이터 사본으로 구성된다. 각 리플리카 세트 메법는 어느 시점에서나 프라이머리나 세컨더리 리플리카 역할을 수행할 수 있다. 모든 쓰기와 읽기는 기본값으로 프라이머리 리플리카에서 수행된다. 세컨더리 리플리카는 내장된 리플리케이션 기능을 사용하여 프라이머리의 데이터의 사본을 관리한다. 프라이머리 리플리카가 실패하면 리플리카 세트는 어느 세컨더리가 프라이머리가 되면 좋을지 결정하기 위해 선거 과정을 자동으로 수행한다. 세컨더리 리플리카들은 선택적으로 읽기 조작을 서비스할 수 있으나 해당 데이터는 기본적으로 일관성을 유지한다.



로드 밸런싱


몽고DB는 샤딩을 사용하여 수평으로 스케일링한다.[9] 사용자는 컬렉션 안의 데이터의 배포 방식을 결정하는 샤드 키를 선택하게 된다. 데이터는 여러 레인지(샤드 키에 따라)로 분리되며 여러 샤드로 배포된다. (샤드는 하나 이상의 리플리카가 존재하는 마스터이다)


몽고DB는 여러 개의 서버 위에서 실행할 수 있고 부하분산이라든지, 기동 중 데이터 복제, 하드웨어 고장 시 수행이 가능하다.



파일 스토리지


몽고DB는 파일 저장을 위해 여러 머신에 로드 밸런싱, 데이터 리플리케이션 기능과 더불어 GridFS라는 이름의 파일 시스템으로 사용할 수 있다.


이 기능은 그리드 파일 시스템이라고 부르며[10] 몽고DB 드라이버에 포함되어 있다. 몽고DB는 파일 조작의 기능과 콘텐츠를 개발자들에게 노출한다. GridFS는 mongofiles 유틸리티나 Ngnix 플러그인[11], Lighttpd를 사용하여 접근할 수 있다.[12] GridFS는 파일 하나를 여러 부분이나 덩어리(chunk)로 분리시키며 해당 덩어리들 각각을 별도의 도큐먼트로 저장한다.[13]



애그리게이션


몽고DB는 애그리게이션 수행을 위해 3가지 수단을 제공한다: 애그리게이션 파이프라인(aggregation pipeline), 맵리듀스 기능(map-reduce function),
단일 목적 애그리게이션 방식(single-purpose aggregation method).[14]


데이터 처리와 애그리게이션 조작을 위해 맵리듀스를 사용할 수 있다. 그러나 몽고DB의 문서에 따르면 애그리게이션 파이프라인이 대부분의 애그리게이션 조작에 더 나은 성능을 제공한다.[15]


애그리게잉션 프레임워크를 사용하면 사용자들이 SQL GROUP BY 절이 사용되는 결과의 종류를 취득할 수 있다. 애그리게이션 연산자들은 하나로 묶어서 하나의 파이프라인을 형성할 수 있는데, 이는 유닉스 파이프와 비슷하다. 애그리게이션 프레임워크는 여러 도큐먼트로부터 도큐먼트들을 조인(join)할 수 있는 $lookup 연산자를 포함하고 있으며 표준 편차 등의 통계 연산자를 포함한다.



서버 사이드 자바스크립트 실행


자바스크립트를 쿼리, 애그리게이션 기능(맵리듀스 등)에 사용할 수 있으며 직접 데이터베이스로 보내어 실행할 수 있다.



캡트 컬렉션


몽고DB는 캡트 컬렉션(capped collection)이라는 이름의 고정 크기의 컬렉션을 지원한다. 이러한 유형의 컬렉션은 삽입 순서를 관리하고 특정 크기에 도달하면 원형 버퍼처럼 동작하게 만들 수 있다.



트랜잭션


멀티 도큐먼트 ACID 트랜잭션 지원이 2018년 6월 4.0 릴리스의 GA(General Availability)와 더불어 몽고DB에 추가되었다.[16]



참조




  1. “Release Notes for MongoDB 4.0 — MongoDB Manual”. MongoDB. 


  2. “Release 4.1.9”. MongoDB. 


  3. “Server Side Public License (SSPL)”. MongoDB. 


  4. “10gen embraces what it created, becomes MongoDB Inc.”. 《Gigaom》. 2013년 8월 27일에 확인함. 


  5. “DB-Engines Ranking”. 2013년 9월 8일에 확인함. 


  6. Witkowski, Wallace (2017년 10월 21일). “MongoDB shares rally 34% in first day of trading above elevated IPO price”. 《MarketWatch》. Dow Jones. 2018년 2월 26일에 확인함. 


  7. Davis Kerby. “Why MongoDB is the way to go”. DZone. 


  8. “Ridiculously fast MongoDB replica recovery Part 1 of 2”. ClusterHQ. 2017년 10월 30일에 원본 문서에서 보존된 문서. 


  9. “Turning MongoDB Replica Set to a Sharded Cluster”. 《Severalnines》. 


  10. “GridFS & MongoDB: Pros & Cons”. 《Compose》. 


  11. “NGINX plugin for MongoDB source code”. 《GitHub》. 


  12. “lighttpd plugin for MongoDB source code”. 《Bitbucket》. 


  13. Malick Md. “MongoDB overview”. 《Expertstown》. 


  14. “Aggregation — MongoDB Manual”. 《docs.mongodb.com》 (영어). 2018년 8월 14일에 확인함. 


  15. “Map-Reduce — MongoDB Manual”. 《docs.mongodb.com》 (영어). 2018년 8월 14일에 확인함. 


  16. “MongoDB Drives NoSQL More Deeply into Enterprise Opportunities”. 2018년 6월 27일. 




외부 링크



  • (영어) 몽고DB - 공식 웹사이트









원본 주소 "https://ko.wikipedia.org/w/index.php?title=몽고DB&oldid=24656768"













둘러보기 메뉴


























(RLQ=window.RLQ||[]).push(function()mw.config.set("wgPageParseReport":"limitreport":"cputime":"0.428","walltime":"0.797","ppvisitednodes":"value":1842,"limit":1000000,"ppgeneratednodes":"value":0,"limit":1500000,"postexpandincludesize":"value":39723,"limit":2097152,"templateargumentsize":"value":4011,"limit":2097152,"expansiondepth":"value":22,"limit":40,"expensivefunctioncount":"value":0,"limit":500,"unstrip-depth":"value":0,"limit":20,"unstrip-size":"value":14604,"limit":5000000,"entityaccesscount":"value":1,"limit":400,"timingprofile":["100.00% 756.026 1 -total"," 69.64% 526.494 1 틀:전거_통제"," 17.16% 129.768 1 틀:각주"," 14.23% 107.612 16 틀:웹_인용"," 7.78% 58.797 1 틀:소프트웨어_정보"," 6.80% 51.414 16 틀:정보상자_선택칸"," 4.94% 37.343 3 틀:시작_날짜와_나이"," 3.87% 29.284 3 틀:이전_시간"," 3.46% 26.139 3 틀:이전_시간/core"," 2.91% 21.977 3 틀:Max"],"scribunto":"limitreport-timeusage":"value":"0.298","limit":"10.000","limitreport-memusage":"value":4471730,"limit":52428800,"cachereport":"origin":"mw1277","timestamp":"20190801010753","ttl":2592000,"transientcontent":false););"@context":"https://schema.org","@type":"Article","name":"ubabduace0DB","url":"https://ko.wikipedia.org/wiki/%EB%AA%BD%EA%B3%A0DB","sameAs":"http://www.wikidata.org/entity/Q1165204","mainEntity":"http://www.wikidata.org/entity/Q1165204","author":"@type":"Organization","name":"uc704ud0a4ubbf8ub514uc5b4 ud504ub85cuc81dud2b8 uae30uc5ecuc790","publisher":"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":"@type":"ImageObject","url":"https://www.wikimedia.org/static/images/wmf-hor-googpub.png","datePublished":"2013-10-27T13:07:27Z","dateModified":"2019-08-01T01:07:52Z","image":"https://upload.wikimedia.org/wikipedia/commons/4/48/Robomongo_0.8.5_-_insertion.png"(RLQ=window.RLQ||[]).push(function()mw.config.set("wgBackendResponseTime":164,"wgHostname":"mw1319"););

Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript