MongoDB
MongoDB | |
Connection to the MongoDB Shell.png | |
Информация | |
---|---|
Разработчик | MongoDB Inc. |
Начална версия | 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 Архив на оригинала от 2016-10-07 в Wayback Machine.. При разработването и поддръжката на DoubleClick, екипът постоянно срещал предвизивкателства свързани с обработката на данни, тяхното съхранение и увеличаващи се мащаби. Това накарало програмистите от 10gen (понастоящем MongoDB) да разработят свой собствен софтуер, който да се справя успешно с подобни проблеми. Тогава настъпило и първоначалното вдъхновение на екипа да разработи база данни по собствен стандарт и принадлежност. Компанията е открита с цел да се възползва максимално от огромните възможности, които предлага Cloud средата, като чрез това постигне по-висока ефективност, разрастване и бързина при процеса на разработване. Към настоящия момент, MongoDB може да се отличи с над 10 милиона изтегляния и инсталации, хиляди клиенти и повече от 1000 партньори. Системата за складиране на данни се използва от мрежите на MTV, Craiglist, Foursquare и UIDAI Aadhaar. MongoDB е най-популярната NoSQL система за управление на бази от данни.[1]
Характеристики
[редактиране | редактиране на кода]Заявки
[редактиране | редактиране на кода]MongoDB поддържа различни видове заявки. Сред тях са полевите заявки, заявки в дадени граници както и търсения с регулярни изрази (regex).
Тези заявки могат да бъдат изпращани заедно с JavaScript функции, зададени от потребителя и да връщат като резултат специфични полета от документи.
Индексиране
[редактиране | редактиране на кода]Всяко поле в един MongoDB документ може да бъде индексирано, дори и тези, които са включени в масиви или са ембеднати в документи. (Индексите в MongoDB са концептуално подобни на тези в RDBMS. MongoDB позволява и използване на главни и второстепенни индекси.
Репликация
[редактиране | редактиране на кода]MongoDB е има висока съвместимост с т.нар. репликационни сетове (Replica Sets)[2] . Един такъв сет се състои от две или повече копия на дадена информация. Всяко отделно копие (реплика) на тази информация може да бъде главното или второстепенно копие на информацията по всяко време.
По подразбиране главната реплика е тази, която изпълнява всички операции за четене и писане върху данните. Второстепенните реплики държат копие на информацията в главната. Ако нещо се случи с главната реплика, реплика-сетът автоматично изпълнява процес по избиране на нова главна реплика измежду второстепенните.
Понякога второстепенните копия могат да извършват операции, свързани с четене, но информацията винаги остава една и съща между различните копия.
Разпределяне на информацията
[редактиране | редактиране на кода]MongoDB се разширява хоризонтално посредством процес наречен sharding. Този процес изисква от потребителя да избере даден ключ да бъде Shard, който впоследствие определя как информацията в дадена колекция ще бъде разпределена. Тя се разбива на отделни отрязъци (определени от shard ключа) и се разпределя между множество shard-ове. (Shard-а е главен (родител) с един или повече второстепенни (деца)).
Предоставя се и опция shard ключа да бъде хеширан в карта към shard – това позволява информацията да бъде разпределена равномерно.
MongoDB може да работи на множество сървъри едновременно, като така балансира информацията и/или дублира информацията за да предостави сигурност на информацията в случай на хардуерен проблем. MongoDB е изключително лесен за интегриране и дава възможност да се добавят нови работни станции към вече работеща база от данни.
Съхранение на файлове
[редактиране | редактиране на кода]MongoDB може да бъде използван и като файлова система, което му позволява да използва методи за балансиране и повторение на данни, разпръснати между много сървъри, които съхраняват файловете.
Тази функционалност, наречена Grid File System, е включена в драйверите на MongoDB и е налична за много програмни езици (Вижте „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, които представлява система за контрол осигуряваща коректни резултати при едновременно изпълнение на заявки върху база данни без нарушаване целостта на данните, е бил имплементиран на ниво MongoDB инстанция. С версия 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 публикува еталон използвайки Cloud Serving Benchmark на Yahoo! като основа на всички тестове. MongoDB осигурява по-голяма производителност от Couchbase Server или Apache Cassandra във всички тестове които пускат, в някои случаи 25 пъти повече.
Друг показател за най-добрите бази данни е NoSQL използващи Elastic Compute Cloud на Amazon, който е направена от 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. p. 375. (на английски)
•Кодороул, Кристина, Дироф, Майкъл. MongoDB: The Definitive Guide – МонгоДБ: Цялостно ръководство (1-во издание). O'Reilly Media, 23 септември 2010. ISBN 978-1-4493-8156-1. p. 216. (на английски)
•Пиртъл, Мич. MongoDB for Web Development (1st ed.) – МонгоДБ за уеб разработка (1-во издание). Addison-Wesley Professional, 3 март 2011. ISBN 978-0-321-70533-4. p. 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. p. 350. (на английски)
Вижте също
[редактиране | редактиране на кода]- Ajax
- JScript
- MySQL
- Node.js
- NoSQL
- Server-Side-Scripting
- MEAN и Solution track използват MongoDB като тяхна база дании.
- HyperDex разширява API на MongoDB.
Източници
[редактиране | редактиране на кода]Външни препратки
[редактиране | редактиране на кода]- MongoDB – Официален сайт
- Release Notes for MongoDB 3.2 Архив на оригинала от 2015-12-10 в Wayback Machine.. MongoDB. Информация относно последната версия на MongoDB.
- Popularity ranking of database management systems. db-engines.com. Solid IT – Класация на най-популярнте бази данни, актуална към месец април 2016
- 10gen embraces what it created, becomes MongoDB Inc. Архив на оригинала от 2016-03-05 в Wayback Machine.. Gigaom – Създателите на MongoDB, 10gen, официално обявяват промяната на името на компанията. Новото име съвпада с едноименното им DB приложение.
- MongoDB. MongoDB Developer Manual. MongoDB – Ръководство за програмисти.
- MongoDB. Introduction to Replication. MongoDB – веведение в репликирането на бази данни с MongoDB.
- MongoDB. Introduction to Sharding. MongoDB – въведение в технологията за съхранение на записи от данни между различни машини чрез MongoDB.
- MongoDB. GridFS article on MongoDB Developer's Manual. MongoDB – статия на GridFS, отнасяща се към ръководството за програмисти при работа с MongoDB.
- NGINX plugin for MongoDB source code. GitHub. NGINX плъгин за MongoDB сорс код.
- lighttpd plugin for MongoDB source code Архив на оригинала от 2011-08-07 в Wayback Machine.. Bitbucket. lightpd плъгин за MongoDB сорс код.
- Eliot Horowitz (2015-01-22). Renaming Our Upcoming Release to MongoDB 3.0. MongoDB. Информация от месец януари 2015, касаеща необичайната, с оглед на обястоятелствата и момена, промяна на версията на MongoDB към 3.0.
- MongoDB. MMAPv1 Concurrency Improvement Архив на оригинала от 2015-09-30 в Wayback Machine.. MongoDB. Информация касаеща промяна на конфигурационните настройки на MMAPv1, целяща подобрена поддръжка на няколко сторидж енджина.
- MongoDB. WiredTiger Concurrency and Compression Архив на оригинала от 2015-09-30 в Wayback Machine.. MongoDB. Wired Tiger 3.0 енджин предоставя възможност за заключване и компресия на ниво документ.
- MongoDB. FAQ Concurrency – How Does Sharding Affect Concurrency. MongoDB. Често задавани въпроси: Как технологията за съхранение на записи от данни между различни машини е повлияна от конфигурационните настройки на MMAPv1(едновременност или едновременно актуализиране на съдържание и запис)?
- MongoDB. FAQ Concurrency – Do Operations Ever Yield the Lock. MongoDB. Често задавани въпроси: Възможно ли е операци по запис и четене да се дублират?
- MongoDB (8 юли 2009). 32-bit Limitations. MongoDB. 32-битови рестрикции при MongoDB.
- David Mytton (25 септември 2012). Does Everybody Hate MongoDB Архив на оригинала от 2016-04-14 в Wayback Machine.. Server Density. „Всички ли мразят MongoDB?“
- MongoDB. MongoDB Drivers and Client Libraries. MongoDB. Драйвъри и клиентски библиотеки.
- MongoDB. Community Supported Drivers. MongoDB. Драйвъри, поддържани от публични общности.
- MongoDB. Admin UIs Архив на оригинала от 2015-10-06 в Wayback Machine.. Потребителски интерфейси за администратори.
- MongoDB. The AGPL. The MongoDB NoSQL Database Blog. MongoDB. Авторски права „AGPL“.
- End Point (13 април 2015). "Benchmarking Top NoSQL Databases; Apache Cassandra, Couchbase, HBase, and MongoDB" (PDF). „Сравнение межу най-добрите NoSQL бази данни: Apache Cassandra, Couchbase, HBase и MongoDB“.
- "Presentation by Amadeus 11/2014". MongoDB. Презентация от Attila Tozser – System Engineer към Amadeus Data Processing.
- MongoDB. Craigslist. MongoDB. Craigslist – едно от главните производствени внедрявания на MongoDB.
- MongoDB at eBay. Slideshare. MongoDB внедряване в eBay.
- MongoDB based FIFA Online. MongoDB внедряване в FIFA Online.
- Presentation by LinkedIn. MongoDB внедряване в LinkedIn.
- Doug Henschen (13 май 2013). Metlife uses nosql for customer service. Information Week. Metlife използва NOSQL бази данни при обслужването на клиенти.
Node.js | |
---|---|
Platform | |
Frameworks |
|
Libraries | |
Languages | |
Hosts |
|
Тази страница частично или изцяло представлява превод на страницата MongoDB в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите.
ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни. |
Категория:NoSQL