SQL е най-предпочитаният начин за ангажиране на релационни бази данни, що се отнася до заявките. Разбираемо е, че потребителите биха работили с релационни бази данни като MySQL и PostgreSQL, които използват функцията за SQL заявки. Като цяло SQL е лесен за разбиране и затова стана широко използван, особено в релационни бази данни.
Въпреки това, SQL е доста сложен, когато се опитвате да ангажирате широк набор от документи в база данни. Накратко, той не е предназначен за бази данни с документи, тъй като идва с редица неуспехи. Например, не можете да заявявате с лекота документи за вграден масив или по-скоро ще трябва да проектирате подпрограма за повторение и филтриране на върнатите данни, за да дадете необходимите резултати. Следователно това ще доведе до увеличаване на продължителността на изпълнение. Но доброто разбиране на SQL ще осигури по-добра основа за взаимодействие с MongoDB от някакъв момент, вместо да се започва от нулата.
В този блог ще използваме програмата Studio 3T, за да покажем различните SQL заявки за присъединяване и как можете да ги преработите в MongoDB заявки, за да постигнете по-добра производителност. Програмата може да бъде изтеглена от тази връзка.
Свързване на SQL към MongoDB
Има няколко драйвера или по-скоро интерфейси, чрез които можете да използвате SQL за комуникация с MongoDB, например ODBC. ODBC означава Open Database Connectivity. Това е просто интерфейс, който позволява на приложенията да имат достъп до данни в системите за управление на бази данни, използвайки SQL като стандартен процес за достъп до тези данни. Той идва с допълнително предимство на оперативната съвместимост, при което едно приложение може да има достъп до множество системи за управление на бази данни.
В този блог ще произведем и тестваме код от SQL и след това ще го оптимизираме чрез редактор за агрегиране, за да произведем заявка за MongoDB.
Маппинг диаграма за SQL към MongoDB
Преди да навлезем в много подробности, трябва да разберем основните връзки между тези 2 бази данни, особено ключовите думи в концепцията за заявка.
Терминология и концепции
SQL | MongoDB |
---|---|
Таблица Ред Колона Таблица се присъединява | Колекция BSON документ Поле $lookup |
Първичният ключ в SQL дефинира уникална колона, която основно подрежда редовете по реда на времето на запис. От друга страна, първичният ключ в MongoDB е уникално поле за съхраняване на документ и гарантиране, че индексираните полета не съхраняват дублиращи се стойности.
Severalnines Станете DBA на MongoDB – Пренасяне на MongoDB в Производството Научете какво трябва да знаете, за да внедрите, наблюдавате, управлявате и мащабирате MongoDB Изтеглете безплатноВръзка между SQL и MongoDB
Да кажем, че имаме студентски данни и искаме да запишем тези данни както в SQL база данни, така и в MongoDB. Можем да дефинираме прост студентски обект като:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
При създаването на SQL таблица трябва да дефинираме имената на колоните и типа данни, докато в MongoDB колекцията ще бъде създадена автоматично по време на първото вмъкване.
Таблицата по-долу ще ни помогне да разберем как някои от SQL изразите могат да бъдат написани в MongoDB.
Изявление за SQL схема | Изявления за схема на MongoDB |
---|---|
За да вмъкнете документ в базата данни | Можем да дефинираме дизайн на схема с помощта на някои модули като mongoose и да дефинираме полетата като обект, вместо да вмъкваме документ директно, за да покажем корелацията. Идентификаторът на първичния файл ще бъде генериран автоматично по време на вмъкването на документ. Вмъкване на нов документ за създаване на колекция |
Използване на оператора ADD за добавяне на нова колона към съществуващата таблица. | Структурата на документите за събиране не е добре дефинирана и следователно актуализирайте документите на ниво документ с помощта на updateMany() |
За да пуснете колона (единици) | За да пуснете поле (единици) |
За пускане на маса ученици | За да оставите студенти за събиране |
Изявление за избор на SQL | Изявления за намиране на MongoDB |
---|---|
Изберете всички редове | Изберете всички документи |
За връщане само на конкретни колони. | За връщане само на конкретни полета. По подразбиране полето _id се връща, освен ако не е посочено друго в процеса на проектиране. Задаването на _id:0 означава, че само върнатият документ ще има само името и стойностите на обекта за оценка. |
За да изберете конкретен ред(и) със съвпадаща стойност на колоната. | За да изберете конкретен(и) документ(и) с някаква съответстваща стойност на полето. |
Избиране на редове с колона, чиито стойности имат някои знаци като предоставена стойност на критерии | Избиране на документи с поле, чиито стойности съдържа някои символи като предоставена стойност на критерии |
За да върнете редовете във възходящ ред, като използвате първичния ключ. | За да върнете документите във възходящо, като използвате първичния ключ |
За групиране на върнатите редове в съответствие с някаква колона (степен) | За групиране на върнатите документи в съответствие с някакво поле (степен) |
Ограничаване на броя на върнатите редове и пропускане на някои | Ограничаване на броя на върнатите документи и пропускане на редове |
Основна опция е да знаете как се изпълнява нашата заявка, следователно използвайте метода за обяснение. | |
Изявление за актуализиране на SQL | Изявления за актуализиране на MongoDB |
---|---|
Актуализирайте колоната за оценки за ученици, чиято възраст е равна на 15 или повече | Тук използваме някои оператори като $gt, $lt и $lte. |
Увеличаване на стойност на колона | |
SQL оператор за изтриване | Изказвания за премахване на MongoDB |
---|---|
За да изтриете всички редове | За да изтриете всички документи. |
За да изтриете конкретен ред, където някоя колона има конкретна стойност. | |
Тази примерна таблица за картографиране ще ви позволи да разберете по-добре какво ще научим в следващата ни тема.
SQL и Studio 3T
Studio 3T е една от наличните програми, която помага за свързването на SQL и MongoDB. Той има функция за SQL заявка за подобряване на такава за манипулиране на SQL. Заявката се интерпретира в обвивката на Mongo, за да произведе прост код на заявка в еквивалент на езика MongoDB. Освен да прави прости заявки, приложението Studio 3T вече може да прави присъединявания.
За нашите примерни данни по-горе, след като свържете вашата база данни в Studio 3T, можем да използваме SQL прозореца, за да намерим документа, който отговаря на нашите критерии, т.е.:
SELECT * FROM students WHERE name LIKE 'James%';
Ако имате документ с поле за име, зададено на стойност Джеймс, тогава той ще бъде върнат. По същия начин, ако щракнете върху раздела с код на заявка, ще ви бъде представен прозорец с еквивалентния код на MongoDB. За изявлението по-горе ще имаме:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Резюме
Понякога може да искате бърз начин за взаимодействие с MongoDB от знанията, които имате за SQL. Научихме някои основни прилики в кода между SQL и неговия еквивалент в MongoDB. Освен това някои програми като Studio 3T имат добре утвърдени инструменти за преобразуване на SQL заявката в език, еквивалентен на MongoDB и прецизират тази заявка за по-добри резултати. Е, за повечето от нас това ще бъде чудесен инструмент за улесняване на нашата работа и гарантиране, че кодът, който имаме в крайна сметка, е много оптимален за работата на нашата база данни. В част 2 от този блог ще научим за SQL INNER JOIN в MongoDB.