MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Битката на базите данни NoSQL - Сравняване на MongoDB и Oracle NoSQL

Съвременният ИТ трябва да има нерелационна, динамична схема (което означава, че няма изисквания за заявки на Joins Statements), за да осигури поддръжка за големи данни/приложения в реално време. Базите данни NoSQL бяха създадени с идеята за подобряване на производителността на обработка на данни и справяне със способността за мащабиране за преодоляване на натоварването на разпределената база данни, използвайки концепцията за множество хостове, спечелиха търсенето на ново поколение за обработка на данни.

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

База данни NoSQL отваря вратите за... 

  • Протоколи, базирани на текст, използващи скриптов език (REST и, JSON, BSON)
  • Наистина минимални разходи за генериране, съхранение и транспортиране на данни
  • Поддържа огромни количества обработка на данни.
  • Повишена производителност на запис
  • Не се изисква за извършване на обектно-релационно картографиране и процес на нормализиране
  • Без строги контроли с правила за референтна цялост
  • Намаляване на разходите за поддръжка с администратори на бази данни 
  • Намаляване на разходите за разширяване
  • Бърз достъп ключ-стойност
  • Разширяване на поддръжката за машинно обучение и интелигентност 

Приемане на пазара на MongoDB 

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

Ако планирате ново приложение и искате да изберете база данни, достигането на правилното решение с много опции за база данни на пазара може да бъде сложен процес.

Класацията по популярност на DB-енджина показва, че MongoDB е номер 1 в сравнение с Oracle NoSQL (който е на номер 74). Тенденцията обаче показва, че нещо се променя. Необходимостта от много рентабилни разширения върви ръка за ръка с много по-просто моделиране на данни и администрацията променя начина, по който разработчиците биха искали да преценят най-доброто за своите системи.

Според информацията за пазарния дял на Datanyze към днешна дата има около 289 уебсайта, които работят на Oracle Nosql с пазарен дял от 11%, където още MongoDB има цели 12 185 уебсайта с пазарен дял от 4,66 %. Тези впечатляващи цифри показват, че MongoDB има светло бъдеще.

NoSQL моделиране на данни 

Моделирането на данни изисква разбиране на...

  • Типове на текущите ви данни.
  • Какви са типовете данни, които очаквате в бъдеще?
  • Как вашето приложение получава достъп до необходимите данни от системата?
  • Как вашето приложение ще извлече необходимите данни за обработка?

Вълнуващото нещо за тези, които винаги са следвали начина на Oracle за създаване на схеми, след което съхраняване на данните, MongoDB позволява създаването на колекцията заедно с документа. Това означава, че създаването на колекции не е задължително да съществува преди създаването на документа, което прави MongoDB много ценен за своята гъвкавост.

В Oracle NoSQL обаче първо трябва да се създаде дефиницията на таблицата, след което можете да продължите да създавате редовете.

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

Нека разгледаме някои от сравненията между MongoDB и Oracle NoSQL.

Сравняване на NoSQL концепции в MongoDB и Oracle

Терминологии NoSQL

MongoDB 

Oracle NoSQL

Факти

Колекция

Таблица/Преглед

Колекцията/таблицата действат като контейнер за съхранение; те са подобни, но не са идентични.

Документ

Ред

За MongoDB, данни, съхранявани в колекция, под формата на документи и полета.

За Oracle NoSQL таблицата е колекция от редове, където всеки ред съдържа запис от данни. Всеки ред на таблица се състои от полета за ключ и данни, които се дефинират при създаването на таблица.

Поле

Колона

Индекс

Индекс

И двете бази данни използват индекс за подобряване на скоростта на търсене, извършвано в базата данни.

Съхранение на документи и хранилище на ключ-стойност 

Oracle NoSQL предоставя система за съхранение, която съхранява стойности, индексирани от ключ; тази концепция се разглежда като най-малко сложен модел, тъй като наборите от данни се състоят от индексиран ключ-стойност. Записите, организирани с помощта на главни и минорни клавиши.

Основният ключ може да се разглежда като указател на обекта, а второстепенният ключ - като полета в записа. Ефективното търсене на данни става възможно с използването на ключа като механизъм за достъп до данните точно като първичен ключ.

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

MongoDB 

Oracle NoSQL 

Магазин за документи

Пример: 

Съхранение на ключ-стойност

Пример: 

BSON и JSON

Oracle NoSQL използва JSON като стандартен формат на данни за предаване (двойки данни + атрибут-стойност). От друга страна MongoDB използва BSON.

MongoDB

Oracle NoSQL

BSON 

JSON 

Двоичен JSON – формат на двоични данни – предизвиква по-бърза обработка

Нотация на Javascript обект - стандартен формат. Много по-бавна обработка в сравнение с BSON.

Характеристики:

Характеристики:

BSON не е в четим от човека текст, за разлика от JSON. BSON означава двоично кодирана сериализация на данни като JSON, използвана главно за съхранение на данни и формат за трансфер с MongoDB. Форматът на данни BSON се състои от списък с подредени елементи, съдържащи име на поле (низ), тип и стойност. Що се отнася до типовете данни, които BSON поддържа, всички типове данни, често срещани в JSON, включват два допълнителни типа данни (двоични данни и дата). Двоични данни или известни като BinData, които са по-малко от 16MB, могат да се съхраняват директно в документи на MongoDB. Казва се, че BSON заема повече място от документите с данни JSON.

Има две причини, поради които MongoDB консумира повече място в сравнение с Oracle NoSQL: 

  • MongoDB постигна целта да може да преминава бързо, позволявайки на опцията за бързо преминаване, изисква BSON документът да носи допълнителни метаданни (дължина на низа и подобектите).
  • BSON дизайнът може да кодира и декодира бързо. Например, цели числа се съхраняват като 32 (или 64) битови цели числа, за да се елиминира синтактичен анализ към и от текста. Този процес използва повече място от JSON за малки цели числа, но е много по-бърз за синтактичен анализ.

Дефиниция на модела на данни

Изявление за събиране на MongoDB

Създайте колекция

db.createCollection("users")

Създаване на колекция с автоматичен _id

db.users.insert

( {
    User_id: "U1",
    First_name: "Mary"                  
    Last_name : "Winslet",  

    Age       : 15

    Contact   : {

               Phone: "123-456-789"

               Email: "[email protected]"  

                }

   access  : {

              Level:5,

              Group:"dev"

             }            

})

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

Изявление на Oracle NoSQL Table

Използване на SQL CLI за настройка на пространството от имена: 

Create namespace newns1; 

Използване на пространство от имена за свързване на таблици и дъщерна таблица

news1:users

News1:users.access

Създайте таблица с IDENTITY, като използвате:

Create table newns1.user (

idValue INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MAXVALUE 10000), 

User_id String,

First_name String,

Last_name String, 

Contact Record (Phone string,         

                Email string),

Primary key (idValue));

Създаване на таблица с SQL JSON: 

Create table newns1.user (

idValue INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MAXVALUE 10000),

User_profile JSON, 

Primary Key (shard(idValue),User_id));

Редове за таблица с потребители:въведете JSON

{

  "id":U1,

  "User_profile" : {

     "First_name":"Mary",

     "Lastname":"Winslet",

     "Age":15,

     "Contact":{"Phone":"123-456-789",                   

     "Email":"[email protected]"

                   }

}

Въз основа на дефинициите на данни по-горе, MongoDB позволява различни методи за създаване на схеми. Колекцията може да бъде дефинирана изрично или по време на първото вмъкване на данните в документа. Когато създавате колекция, можете да дефинирате обект. Objectid е основният ключ за MongoDB документи. Objectid е 12-байтов двоичен тип BSON, който съдържа 12 байта, генерирани от MongoDB драйвери и сървъра, използвайки алгоритъм по подразбиране. MongoDB objectid е полезен и служи за сортиране на създадения документ в конкретна колекция.

Oracle NoSQL има няколко начина да започнете да дефинирате таблици. Ако използвате Oracle SQL CLI по подразбиране, създаването на нова таблица ще бъде поставено в sysdefault, докато не решите да създадете ново пространство от имена, за да свържете набор от нови таблици с него. Горният пример демонстрира създаденото ново пространство от имена „ns1“ и потребителската таблица е свързана с новото пространство от имена.

Освен идентифицирането на първичния ключ, Oracle NoSQL също използва колоната IDENTITY за автоматично увеличаване на стойност всеки път, когато добавяте ред. Стойността IDENTITY се генерира автоматично и трябва да бъде целочислен, дълъг или числов тип данни. В Oracle NoSQL, IDENTITY се асоциира с генератора на последователности, подобно на концепцията за objectid с MongoDB. Тъй като Oracle NoSQL позволява ключът IDENTITY да се използва като първичен ключ. Ако разглеждате ключ IDENTITY като първичен ключ, това е мястото, където е необходимо внимателно обмисляне, тъй като може да окаже влияние върху вмъкването на данни и процесът на актуализиране се извършва.

Определянето на таблица/ниво на колекция MongoDB и Oracle NoSQL показва как информацията за „контакт“ е вградена в една и съща единична структура, без да се изисква допълнително дефиниране на схема. Предимството на вграждането на набор от данни е, че няма да са необходими допълнителни заявки за извличане на вградения набор от данни.

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

Oracle NoSQL предоставя възможностите за използване на SQL, като език за заявки с DDL и DML, което изисква много по-малко усилия за потребители, които имат известен опит с използването на системи за Relation Database.

Обвивката MongoDB използва Javascript и ако не сте удобни с езика или с използването на mongo shell, тогава най-подходящото за процеса е да изберете да използвате IDE инструмент. Топ 5 на MongoDB IDEtools през 2020 г. като studio 3T, Robo 3T, NoSQLBooster, MongoDB Compass и Nucleon Database Master ще ви помогнат да създавате и управлявате сложни заявки с помощта на функции за агрегиране.

Ефективност и наличност

Тъй като моделът на структурата на данните на MongoDB използва документи и колекции, използването на формат на данни BSON за обработка на огромно количество данни става много по-бързо в сравнение с Oracle NoSQL. Докато някои смятат, че запитването на данни с SQL е по-удобен път за много потребители, капацитетът се превръща в проблем. Когато имаме огромно количество данни за поддръжка, необходимостта от повишена пропускателна способност и последвано от използването на SQL за проектиране на сложни заявки, тези процеси ни карат да преразгледаме капацитета на сървъра и увеличаването на разходите с течение на времето.

Както MongoDB, така и Oracle NoSQL предоставят функции за разделяне и репликация. Разделянето е процес, който позволява наборът от данни и цялостното натоварване на обработката да бъдат разпределени между множество физически дялове, за да се увеличи скоростта на обработка (четене/запис). Внедряването на шард с oracle изисква от вас да имате предварителна информация за това как работят ключовете за разделяне. Причината зад процеса на предварително планиране се дължи на необходимостта от прилагане на ключа на сегмента на ниво иницииране на схемата.

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

Заключение 

Това, което прави MongoDB предпочитан пред Oracle NoSQL, е, че е в двоичен формат и вродените му характеристики на лек, проходим и ефективен. Това ви позволява да поддържате модерното приложение в областта на машинното обучение и изкуствения интелект.

Характеристиките на MongoDB позволяват на разработчиците да работят много по-уверено, за да създават по-бързо модерни приложения. Моделът на данни MongoDB позволява обработката на огромни количества неструктурирани данни с подобрена скорост, която е добре обмислена в сравнение с Oracle NoSQL. Oracle NoSQL печели, когато става въпрос за инструменти, които може да предложи, и възможни опции за създаване на модели на данни. Важно е обаче да се уверите, че разработчиците и дизайнерите могат да се учат и адаптират към технологиите бързо, което не е случаят с Oracle NoSQL.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Сериозен спад в производителността с MongoDB Change Streams

  2. MongoDB:Възможно ли е да се направи заявка, независимо от главните букви?

  3. Как да спрете mongo DB с една команда

  4. Как да създам MongoDB дъмп на моята база данни?

  5. регистрирайте всички заявки, които mongoose fire в приложението