SQL или NoSQL - това е въпросът 8
- 03.27.17 11:15 •
- ru_vds •
- • # 324936
- • Habrahabr
- превод •
- 23 •
- 17100
- като Forbes, само по-добре.
Всички знаем, че в света на технологиите на базата данни, има две основни области: SQL и NoSQL, релационни и не-релационна база данни. Разликите между тях се крият в начина, по който са проектирани, какви видове данни се поддържа като се съхранява информация.
Релационни бази данни магазин структурирани данни, които обикновено представляват реални обекти. Например, може да е информация за лицето или за съдържанието на коша за стоките в магазина, групирани в таблици, формата на които се дават при съхранението на етапа на проектиране.
Не-релационна база данни са подредени по различен начин. Например, бази данни, документи, ориентирани към съхраняване на информация под формата на йерархични структури от данни. Можем да говорим за обекти с произволен набор от атрибути. Каква релационна база данни е разделена на няколко взаимосвързани таблици в не-релационни могат да се съхраняват под формата на цялостен характер.
Вътрешни различни системи за управление на бази данни се отразява особеностите на работа с тях. Така например, не-релационна база данни по-податлив на мащабиране.
Как да изберем технологията? Отговорът на този въпрос зависи от конкретния проект.
От избора на SQL-база данни
Не съществува база данни, която ще отговаря на всички. Ето защо много компании използват както релационни и не-релационна база данни за различни задачи. Докато NoSQL-бази данни са станали популярни в резултат на изпълнението на висока скорост и добра мащабируемост, в някои ситуации, може да се предпочита структуриран SQL-магазин. Ето две причини, които могат да доведат до избор на SQL-база данни:
- Необходимостта от спазване на база данни киселина (валентност, последователност, изолация, Дълготрайност - валентност, последователност, изолация, издръжливост). Това намалява вероятността от неочаквано поведение на системата и да се гарантира целостта на базата данни. Постигнати от подобен трудно се определи как сделките взаимодействат с базата данни. Това се различава от подхода, използван в NoSQL бази че дават крайъгълен камък гъвкавостта и скоростта, не целостта данни 100%.
От избора на NoSQL-бази данни
Ако подозирате, че базата данни може да бъде претрупана от проект, въз основа на работата с големи обеми от информация, че е необходимо да се обърнем към NoSQL-бази данни, които позволяват това, което може да не релационни бази данни.
Това са функции, които са довели до популярността на NoSQL база данни като MongoDB, CouchDB, Касандра, HBase:
- Съхранение на големи обеми от неструктурирана информация. NoSQL база данни не налага ограничения за вида на съхраняваните данни. Освен това, ако е необходимо, в този процес, можете да добавите нови типове данни.
В следващия раздел, да обсъдим някои от разликите между SQL и NoSQL технологии. А именно, първо разгледаме един прост пример, който показва фундаменталната разлика между двата подхода към организацията на базата данни, а след това ще говорим за мащабируемост и индексиране на данните. Но в крайна сметка голяма спра на един пример CRM-система, която се нуждае от съхранение на данни с висока производителност.
SQL и NoSQL
Нека започнем с някои от основните концепции на релационни и не-релационни бази данни. По-долу е база данни, съдържаща информация за взаимоотношения. Вариант а - besskhemnaya структура е конструирана под формата на графика, характеристика NoSQL решения. Вариант б показва как едни и същи данни могат да бъдат представени по структуриран начин, за типична SQL.
Две опции за отчитане
Besskhemnost означава, че два документа NoSQL структура на данните не трябва да имат едно и също поле и може да съхранява данни от различни видове. Например, масив от обекти, набор от области, които не съвпадат.
Когато релационен подход, данните трябва да се съхраняват в предварително инженерно съоръжение, от които данните могат да бъдат извлечени по-късно. Например, с помощта на JOIN оператор, когато извадка от две таблици:
В по-напреднал Например, за да покаже, предпочитано когато SQL NoSQL, помисли за конкретно приложение бази данни NoSQL-компресия алгоритми. Проблемът е, че в някои NoSQL-бази данни (например, CouchDB и HBase) постоянно трябва да се образуват така наречените sstables - низ маса във формат ключ-стойност, сортирани по ключ. В тези таблици, които се съхраняват на диска, данните идват от таблици, съхранени в паметта, с тяхната пренаселеност и в други ситуации. С тежки употреба на произведението таблица от база данни, с течение на времето, води до факта, че устройството за съхранение на подсистемата входно-изходни данни става пречка за операции четене. В резултат на това четене в NoSQL базирани по-бавно от рекорда, който отрича един от основните предимства на не-релационни бази данни. Това е с цел да се намали този ефект, се използват NoSQL системи, във фонов режим, за компресиране на данни алгоритми, опитвайки се да комбинирате няколко маси в една. Но само по себе си, тази операция е много ресурс-интензивно, системата работи под високо натоварване.
мащабируемост
Една от основните разлики са разгледани технологии е, че NoSQL база данни, по-податлив на мащабиране. Например, има вградена поддръжка MongoDB репликация и sharding (хоризонтално разделение на данни), за да се осигури мащабируемост. Докато мащабиране се поддържа в SQL-база данни, тя изисква много по-човешки и хардуерни ресурси разходи.
Вид на склад за данни
Въпросът е поставен неправилно първоначално. В резултат на това:
Това са признаци на проекти, които са идеални за SQL-база данни:
DB не трябва да бъде избран за проекта, както и за изпълнение на задачите. По един или друг начин, в един проект може да се използва като релационна база данни, както и така наречените NoSQL.
самият въпрос NoSQL стоеше на дневен ред, когато паметта става достъпно гигабайта
Трябва нещо да се обърка ...
как смяташ да се работи с данни, ако не знаете, че има
вашата работа с база данни NoSQL на ниво приложение е изпращане и получаване на линия?
"Липсата на твърда структура на данните" - няма друг начин да се обясни "предимство" NoSQL. Това е начина, по който ще работи с данни, ако не знаете какво е това?
Защо трябва за съхранение на данни, за да работи с данните? ги неговата кауза за получаване, съхраняване и предоставяне на. По тази схема не се нуждае от специална, с изключение на оптимизации.