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.
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 са:
•Кейъл, Банкър. 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. (на английски)
Node.js | |
---|---|
Platform | |
Frameworks |
|
Libraries | |
Languages | |
Hosts |
|
Тази страница частично или изцяло представлява превод на страницата MongoDB в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите.
ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни. |
Категория:NoSQL