MongoDB

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене
MongoDB
Mongodb-logo.jpeg
Connection to the MongoDB Shell.png
Информация
Разработчик MongoDB Inc.
Начални версии 2009 (2009)
Последна версия 3.2.4
Програмен език C++, JavaScript, C
Операционна система Междуплатформен софтуер
Език на интерфейса Английски
Статус Active
Вид софтуер Document-oriented database
Лиценз GNU AGPL v3.0 (drivers: Apache license)
Уебсайт www.mongodb.org
MongoDB в Общомедия

MongoDB (на английски: humongous – огромен) е система за обработване на бази данни от документи, разработена от 10gen. Тя е от рода на нерелационните бази данни (NoSQL). Вместо да съхранява информация в таблици, както е при традиционните релационни бази данни, MongoDB съхранява структурираната информация в JSON формат с динамични схеми. Това прави интегрирането на информацията в определени приложения доста по-лесно и по-бързо.

История[редактиране | редактиране на кода]

10gen започват разработването на MongoDB през октомври 2007. Екипът, разработил MongoDB, също така участва в разработването на DoubleClick, ShopWiki и Gilt Groupe. При разработването и поддръжката на DoubleClick, екипът постоянно срещал предвизивкателства свързани с обработката на данни, тяхното съхранение и увеличаващи се мащаби. Това накарало програмистите от 10gen (понастоящем MongoDB) да разработят свой собствен софтуер, който да се справя успешно с подобни проблеми. Тогава настъпило и първоначалното вдъхновение на екипа да разработи база данни по собствен стандарт и принадлежност. Компанията е открита с цел да се възползва максимално от огромните възможности, които предлага Cloud средата, като чрез това постигне по-висока ефективност, разрастване и бързина при процеса на разработване. Към настоящия момент, MongoDB може да се отличи с над 10 милиона изтегляния и инсталации, хиляди клиенти и повече от 1000 партньори. Системата за складиране на данни се използва от мрежите на MTV, Craiglist, Foursquare и UIDAI Aadhaar. MongoDB е най-популярната NoSQL система за управление на бази от данни.[1]

Характеристики[редактиране | редактиране на кода]

Заявки[редактиране | редактиране на кода]

MongoDB поддържа различни видове заявки. Сред тях са полевите заявки, заявки в дадени граници както и търсения с регулярни изрази (regex).

Тези заявки могат да бъдат изпращани заедно с JavaScript функции, зададени от потребителя и да връщат като резултат специфични полета от документи.

Индексиране[редактиране | редактиране на кода]

Всяко поле в един MongoDB документ може да бъде индексирано[2] дори и тези, които са включени в масиви или са ембеднати в документи. (Индексите в MongoDB са концептуално подобни на тези в RDBMSes. MongoDB позволява и използване на главни и второстепенни индекси.

Репликация[редактиране | редактиране на кода]

MongoDB е има висока съвместимост с т.нар. репликационни сетове (Replica Sets)[3] . Един такъв сет се състои от две или повече копия на дадена информация. Всяко отделно копие (реплика) на тази информация може да бъде главното или второстепенно копие на информацията по всяко време.

По подразбиране главната реплика е тази, която изпълнява всички операции за четене и писане върху данните. Второстепенните реплики държат копие на информацията в главната. Ако нещо се случи с главната реплика, реплика-сетът автоматично изпълнява процес по избиране на нова главна реплика измежду второстепенните.

Понякога второстепенните копия могат да извършват операции, свързани с четене, но информацията винаги остава една и съща между различните копия.

Разпределяне на информацията[редактиране | редактиране на кода]

MongoDB се разширява хоризонтално посредством процес наречен sharding. Този процес изисква от потребителя да избере даден ключ да бъде Shard, който впоследствие определя как информацията в дадена колекция ще бъде разпределена. Тя се разбива на отделни отрязъци (определени от shard ключа) и се разпределя между множество shard-ове. (Shard-а е главен(родител) с един или повече второстепенни(деца)).

Предоставя се и опция shard ключа да бъде хеширан в карта към shard – това позволява информацията да бъде разпределена равномерно.

МоногДБ може да работи на множество сървъри едновременно, като така балансира информацията и/или дублира информацията за да предостави сигурност на информацията в случай на хардуерен проблем. MongoDB е изключително лесен за интегриране и дава възможност да се добавят нови работни станции към вече работеща база от данни.

Съхранение на файлове[редактиране | редактиране на кода]

MongoDB може да бъде използван и като файлова система, което му позволява да използва методи за балансиране и повторение на данни, разпръснати между много сървъри, които съхраняват файловете.

Тази функционалност, наречена Grid File System, е включена в драйверите на МонгДБ и е налична за много програмни езици (Вижте „Language Support“ секцията за лист на поддържаните езици.) MongoDB предоставя на разработчиците функционалност за манипулация на файлове и съдържание, като пример за тях e Nginx.

Вместо да съхранява един файл в отделен документ, GridFS разделя този файл на по-малки части (чънкове) и съхранява всяка от тези части в отделен документ.

В една система, състояща се от множество системи, файловете могат да бъдат разпределени и копирани множество пъти между системите, като по този начин се създава балансирана и устойчива на провали система.

Фреймуърк за съвкупност[редактиране | редактиране на кода]

Този фреймуърк за съвкупност дава на потребителите възможност, да извличат резултати, като тези, които връща GROUP_BY клаузата в SQL. Тези операции за съвкупност могат да бъдат навързвани една след друга за да се получи навързана верига от изпълними действия – подобни на Unix pipes.

Фреймуърка предоставя и $lookup операторът, който дава възможност да бъдат обединявани повече от един документа в един.

MapReduce може да се използва за обработване на струпани(обединени) данни. Пример за такава операция е batch processing.

Съвместимост с JavaScript[редактиране | редактиране на кода]

MongoDB позволява JavaScript езикът да бъде използван в заявки, операции за съвкупност (например MapReduce) след което да бъдат изпращани към базата данни за да се изпълнят.

Ограничени колекции[редактиране | редактиране на кода]

MongoDB поддържа колекции с фиксиран размер, наречени capped collections. Този тип колекция запазва реда на добавяне на записи в колекцията, и когато определеният размер се достигне, тя започва да се държи като кръгова опашка.

Критики[редактиране | редактиране на кода]

Случаѝ в коѝто се наблюдава неправилно поведение е когато приложение може да достъпи два различни MongoDB процеса, но те да не могат да се достъпват помежду си и тогава е възможно за MongoDB да върне стари прочитания.В такъв случай е възможно MongoDB да не запази някои от по-скорошните записи.

Преди версия 2.2, контролът върху съгласуваността или по-познат на английски като concurrency control , които представлява система за контрол осигуряваща коректни резултати при едновременно изпълнение на заявки върху база данни без нарушаване цялостта на данните, е бил имплементиран на ниво mongod инстанция.С версия 2.2, контролът върху съгласуваността се имплементира на ниво база данни.От версия 3.0 са представени контролери(engines) за съхранение, като всеки един от тях може да имплементира контрол върху съгласуваността по различен начин.С MongoDB 3.0 контролът върху съгласуваността се имплементира на ниво колекция при MMAPv1 контролер за съхранение, и на ниво документация при WiredTiger контролер за съхранение.При версиите предшественици на версия 3.0 е използван подход увеличаващ броя на заявките изпълняващи се едновременно, познат като sharding(разпределяне на информацията от база данни към няколко различни сървъра).

Друга критика е свързана с ограниченията наложени във версиите на MongoDB за системи с 32-битова архитектура, които се дължат на присъщите ограничения на паметта.MongoDB препоръчва 64-битови системи, предоставяйки достатъчно RAM памет на своите потребители по време на работа.

В допълнение, MongoDB е ограничен до побитово сравнение от тип memcmp(сравнение на два блока в паметта, при което имаме последователно сравнение на поредни единични байтове до намиране на разлика в десетичните им стоиности или до достигане края на горепосочените), което непредоставя коректност при работа с езици използващи Уникодска кодировка.

Архитектура[редактиране | редактиране на кода]

Достъп през програмни езици[редактиране | редактиране на кода]

MongoDB разполага с официални драйвъри за голям набор програмни езици и среди за разработка.Също така има голям брой неофициални както и обществено поддържани драйвъри за други програмни езици и платформи.

Управление и графично представяне[редактиране | редактиране на кода]

Основна среда за работа със системата е конзолата,която за MongoDB е представена от множество инструменти интерпретиращия посвоему.Предпочитан такъв инструмент за работа чрез командния ред е mongo, въпреки предоставяните от трети страни потребителски интерфейси.MongoDB неразполага официално с графично управляващ софтуер.

Лиценз и поддръжка[редактиране | редактиране на кода]

MongoDB е достъпен безплатно под лиценза на GNU Affero General Public License.Езиковите драйвъри са предоставени под лиценза на Apache License.В допълнение, MongoDB Inc. предоставя права на собственик за MongoDB.

Производителност[редактиране | редактиране на кода]

United Software Associates публикува еталон използвайки Yahoo!'s Cloud Serving Benchmark като основа на всички тестове. MongoDB осигурява по-голяма производителност от Couchbase Server или Apache Cassandra във всички тестове които пускат, в някой случаи 25 пъти повече.

Друг показател за най-добрите бази данни е NoSQL използващи  Amazon's Elastic Compute Cloud  която е направена от End Point и пристига с противоположни резултати, поставяйки  MongoDB на последно място сред изследваните бази данни.

Производствени внедрявания[редактиране | редактиране на кода]

Мащабните внедрявания на MongoDB се проследяват от MongoDB Inc. Известни потребители на MongoDB са:

  • Adobe: Опитът на Мениджърът е предназначен за ускоряване на развитието на цифровите преживявания, които повишават лоялността на клиентите, ангажираност и предлагане. Adobe използва MongoDB да съхраняват петабайта данни на съдържание в мащабни хранилищата, залегнали в основата на Мениджърският опит.
  • Amadeus IT Group: използва MongoDB за своя back-end софтуер.
  • Компактен мюонен соленоид в Европейската организация за ядрени изследвания използва MongoDB като основен back-end за Система за Сумиране на данни за Големият адронен ускорител.
  • Крейгслист: С 80милиона обяви публикувани всеки месец, Крейгслист трябва да архивира милиарди записи в различни формати и трябва да бъде в състояние да изпраща заявки и да докладва за тези архиви по време на изпълнение. Крейгслист мигрират от MySQL към MongoDB в подкрепа на активният си архив, с непрекъсната наличност, мандатът за спазване на нормативната уредба през 700 сайтове в 70 различни страни.
  • eBay: използва MongoDB в търсене на предложения и вътрешен Cloud Manager State Hub.
  • FIFA (video game series) : EA спорт студио за развитие използва MongoDB за да съхранявате потребителски данни и състояние играта. Автоматичното споделяне позволява мащабиране на MongoDB през 250 + сървърите на EA като потребителското търсене расте.
  • Foursquare: разгръща MongoDB за Amazon Web Services за съхранение на места и потребителски отбелязвания на различни места.
  • LinkedIn: използва MongoDB като back-end.
  • McAfee: MongoDB подсилва McAfee Global Threat Intelligence (GTI), с базирана в облака разузнавателна служба, която събира данни от милиони сензори по целия свят.
  • MetLife: използва MongoDB за „Стената -The Wall“, приложение за обслужване на клиенти което осигурява '360-градусов изглед' на клиентите на MetLife.
  • SAP: използва MongoDB в SAP Platform as a service.
  • Shutterfly: използва MongoDB за своята платформа за снимки. Към 2013 г. платформата за снимки съхранява 18 милиарда качени снимки от 7 милиона потребители на Shutterfly.
  • Tuenti: използва MongoDB като тяхна back-end База данни.
  • Yandex: Най-голямата търсачка в Русия използва MongoDB за управление на всички потребителски метаданни за услугата си за споделяне на файлове. MongoDB се е разширил, за да може да поддържа десетки милиарди обекти и терабайта данни, нараства с 10 милиона нови файлове качени на ден.

Книги[редактиране | редактиране на кода]

Кейъл, Банкър. MongoDB in Action (1s ed.) - МонгоДБ в действие (1-во издание). Manning, 8-ми март, 2011. ISBN 978-1-935182-87-0. с. 375.

Кодороул, Кристина, Дироф, Майкъл. MongoDB: The Definitive Guide - МонгоДБ: Цялостно ръководство (1-во издание). O'Reilly Media, 23-ти Септември, 2010. ISBN 978-1-4493-8156-1. с. 216.

Пиртъл, Мич. MongoDB for Web Development (1st ed.) - МонгоДБ за уеб разработка (1-во издание). Addison-Wesley Professional, 3-ти Март, 2011. ISBN 978-0-321-70533-4. с. 360.

Холкинс, Тим, Мембрей, Петър. The Definitive Guide to MongoDB: The NoSQL Database for Cloud and Desktop Computing (1st ed.) - Цялостното ръководство за МонгоДБ: NoSQL базата данни за клауд и десктоп компютинг. Apress, 26-ти Септември, 2010. ISBN 978-1-4302-3051-9. с. 350.

Вижте също[редактиране | редактиране на кода]

Източници[редактиране | редактиране на кода]

  1. DB-Engines Ranking
  2. Database Indexing. //
  3. Replica Sets. //

Външни препратки[редактиране | редактиране на кода]

  • MongoDB - Официален сайт

Референции - полезни препратки[редактиране | редактиране на кода]

  1. "Release Notes for MongoDB 3.2". MongoDB. Информация относно последната версия на MongoDB.
  2. "Popularity ranking of database management systems". db-engines.com. Solid IT  – Класация на най-популярнте бази данни, актуална към месец април 2016
  3. "10gen embraces what it created, becomes MongoDB Inc.". Gigaom – Създателите на MongoDB, 10gen, официално обявяват промяната на името на компанията. Новото име съвпада с едноименното им DB приложение.
  4. MongoDB. "MongoDB Developer Manual". MongoDB – Ръководство за програмисти.
  5. MongoDB. "Introduction to Replication". MongoDB – веведение в репликирането на бази данни с MongoDB.
  6. MongoDB"Introduction to Sharding". MongoDB – въведение в технологията за съхранение на записи от данни между различни машини чрез MongoDB.
  7. MongoDB. "GridFS article on MongoDB Developer's Manual". MongoDB – статия на GridFS, отнасяща се към ръководството за програмисти при работа с MongoDB.
  8. "NGINX plugin for MongoDB source code". GitHub. NGINX плъгин за MongoDB сорс код.
  9. "lighttpd plugin for MongoDB source code". Bitbucket. lightpd плъгин за MongoDB сорс код.
  10. Eliot Horowitz (2015-01-22). "Renaming Our Upcoming Release to MongoDB 3.0". MongoDB. Информация от месец януари 2015, касаеща необичайната, с оглед на обястоятелствата и момена, промяна на версията на MongoDB към 3.0.
  11. MongoDB. "MMAPv1 Concurrency Improvement". MongoDB. Информация касаеща промяна на конфигурационните настройки на MMAPv1, целяща подобрена поддръжка на няколко сторидж енджина.
  12. MongoDB. "WiredTiger Concurrency and Compression". MongoDB. Wired Tiger 3.0 енджин предоставя възможност за заключване и компресия на ниво документ.
  13. MongoDB. "FAQ Concurrency - How Does Sharding Affect Concurrency". MongoDB. Често задавани въпроси: Как технологията за съхранение на записи от данни между различни машини е повлияна от конфигурационните настройки на MMAPv1(едновременност или едновременно актуализиране на съдържание и запис)?
  14. MongoDB. "FAQ Concurrency - Do Operations Ever Yield the Lock". MongoDB. Често задавани въпроси: Възможно ли е операци по запис и четене да се дублират?
  15. MongoDB (8 July 2009). "32-bit Limitations". MongoDB. 32-битови рестрикции при MongoDB.
  16. David Mytton (25 September 2012). "Does Everybody Hate MongoDB". Server Density. „Всички ли мразят MongoDB?“
  17. MongoDB. "MongoDB Drivers and Client Libraries". MongoDB. Драйвъри и клиентски библиотеки.
  18. MongoDB. "Community Supported Drivers". MongoDB. Драйвъри, поддържани от публични общности.
  19. MongoDB. "Admin UIs". Потребителски интерфейси за администратори.
  20. MongoDB. "The AGPL". The MongoDB NoSQL Database Blog. MongoDB. Авторски права “AGPL”.
  21. End Point (13 April 2015). "Benchmarking Top NoSQL Databases; Apache Cassandra, Couchbase, HBase, and MongoDB" (PDF). “Сравнение межу най-добрите NoSQL бази данни: Apache Cassandra, Couchbase, HBase и MongoDB”.
  22. "Presentation by Amadeus 11/2014". MongoDB. Презентация от Attila Tozser – System Engineer към Amadeus Data Processing.
  23. MongoDB. "Craigslist". MongoDB. Craigslist – едно от главните производствени внедрявания на MongoDB.
  24. "MongoDB at eBay". Slideshare. MongoDB внедряване в eBay.
  25. "MongoDB based FIFA Online". MongoDB внедряване в FIFA Online.
  26. "Presentation by LinkedIn". MongoDB внедряване в LinkedIn.
  27. Doug Henschen (13 May 2013). "Metlife uses nosql for customer service". Information Week. “Metlife използва NOSQL бази данни при обслужването на клиенти“.
Node.js
Platform
Frameworks
Libraries
Languages
Hosts
Криейтив Комънс - Признание - Споделяне на споделеното Лиценз за свободна документация на ГНУ Тази страница частично или изцяло представлява превод на страницата „MongoDB“ в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс - Признание - Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година — от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница. Вижте източниците на оригиналната статия, състоянието ѝ при превода, и списъка на съавторите.
Моля, добавете oldid-номера на версията, от която е направен преводът!