Термин NoSQL (англ. Not Only SQL - не только SQL) стал известен относительно недавно и был введен для описания различных технологий баз данных, возникших для удовлетворения требований, известных как "Web-scale" или "Internet-scale".
Есть три требования к Web-scale приложениям:
Все наиболее успешные и известные NoSQL базы данных были разработаны с нуля за последние несколько лет. Странно, но, похоже, что никто из разработчиков не посмотрел вокруг, чтобы увидеть, есть ли уже существующие, успешно реализованные технологии баз данных, которые могли бы обеспечить надежную основу для соответствия требованиям Web-scale.
Если бы они это сделали, то, возможно, обнаружили бы два продукта - GT.M (fisglobal.com/Products/TechnologyPlatforms/GTM/index.htm) и Inter-systems Cache (www.intersystems.ru), чьи системы хранения основаны на глобалах.
Краткий обзор глобалов
Глобал - это абстракция B-tree структуры, которая обычно используется в языке MUMPS (ru.wikipedia.org/wiki/MUMPS) для хранения больших объемов данных.
Глобалы изначально были разработаны в 1966 году для поддержки управления большими объемами сложных и слабоструктурированных медицинских данных, и были специально спроектированы для эффективной поддержки того, что тогда считалось невыполнимым - большого числа конкурентных интерактивных пользователей на серьезно ограниченных ресурсах PDP мини-компьютеров. Хотя это не "веб-масштаб", тем не менее, глобалы стали достижением, которое другие технологии баз данных в то время достичь не могли.
Характеристики глобалов:
Для того чтобы понять, что такое глобал, представьте себе хранимый ассоциативный массив.
Например:
Общая форма выражения записывается следующим образом:
globalName(subscript1,subscript2,..subscriptN)=value
Такая комбинация имени, индексов и значения называется узлом глобала и является единицей хранения. Важным моментом является то, что один глобал может содержать узлы с разным количеством индексов, например:
myGlobal("a")=123
myGlobal("b","c1")="foo"
myGlobal("b","c2")="foo2"
myGlobal("d","e1","f1")="bar1"
myGlobal("d","e1","f2")="bar2"
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar2"
То есть глобал представляет разреженное иерархическое дерево узлов. Например, глобал выше эффективно представляет следующее иерархическое дерево:
Вы можете создать любое количество глобалов. Другими словами, база данных в GT.M или Cache будет состоять из одного или множества глобалов, каждый со своей иерархией узлов.
В такой базе данных нет явных связей между глобалами, но могут быть неявные отношения, которые определяются и управляются на уровне приложения. Также не существует явной схемы, определенной для глобалов. Можно создавать или уничтожать узлы глобала в любой момент. Они полностью динамические и не требуют предварительной декларации или схемы.
Обёртка для NoSQL решений
Некоторое время назад сайт TechRepublic опубликовал статью под названием "10 вещей, которые вы должны знать о базах данных NoSQL" (blogs.techrepublic.com.com). Это перечисление 5 достоинств и 5 недостатков NoSQL баз данных. Если оценивать GT.M и Cache по этим десяти критериям, можно обнаружить, что они соответствуют всем перечисленным достоинствам, но, что более интересно, не имеют 4 из 5 их недостатков, чем другие NoSQL базы данных не могут похвастаться.
Достоинства
1. Линейное масштабирование:
Оба продукта, GT.M и Cache, в течение уже многих лет поддерживают масштабирование на несколько серверов и могут использовать при этом недорогое оборудование. В случае с Cache фирменная сетевая технология ECP (Enterprise Cache Protocol) позволяет создавать логическое отображение глобалов, в то время когда они могут быть физически распределены между несколькими серверами.
2. Много данных
Системы GT.M и Cache предназначены для поддержки и управления огромными объемами данных, далеко за пределами возможностей реляционных баз данных, но при этом обеспечивают высокую производительность.
3. До свидания, администраторы БД!
Интересно, что фирма InterSystems, производитель Cache, использует это преимущество в своей маркетинговой политике на протяжении многих лет. Есть истории систем на базе глобалов, которые функционировали без администрирования в течение десятилетий.
4. Экономичность
Оба продукта, GT.M и Cache, будут беcпроблемно работать на недорогих стандартных аппаратных платформах и извлекать из них максимальную производительность. Партнеры из здравоохранения в Массачусетсе поддерживали десятки тысяч интерактивных пользователей на протяжении 1980-х и 1990-х годов на сетевом кластере из сотен ПК с MSDOS и предшественнике Cache.
5. Гибкие модели данных
Это сама суть хранилища на глобалах, которая будет раскрыта в этой статье чуть ниже.
Недостатки
1. Зрелость
В отличие от новых NoSQL баз данных, GT.M и Cache имеют длинную родословную и выдающийся послужной список, поддерживающий большие и сложные базы данных в сложных условиях реальных бизнес-приложений. Это надежные и стабильные технологии, которые могут быть уверенно использованы в важных бизнес-приложениях.
2. Поддержка
GT.M активно используется в некоторых из крупнейших в мире банковских систем, в то время как Cache доминирует в здравоохранении. Одной из причин, по которым они используются в этих отраслях, является качество коммерческой поддержки, предоставляемой соответствующими поставщиками.
3. OLAP и бизнес-анализ
Оба продукта, GT.M и Cache, поддерживают подключения к инструментам SQL-бизнесаналитики. Также на протяжении многих лет они поддерживают доступ к SQL и не-SQL базам данных. В настоящее время InterSystems активно рекламирует продукт под названием DeepSee (intersystems.ru/deepsee), который предназначен именно для этой цели и является надстрокой над базой данных Cache.
4. Администрирование
Как GT.M, так и Cache просты в установке и обслуживании и часто используются в ситуациях, когда есть хоть один, если таковой вообще имеется, квалифицированный ИТ-специалист.
5. Специализация
Это действительно один из недостатков GT.M и Cache. Хотя число пользователей, в частности, для Cache, неуклонно растет, число квалифицированных специалистов, которые имеют опыт работы с GT.M и Cache очень мал, по сравнению с количеством специалистов реляционных СУБД.
1) Ключ/Значение
Реализация хранилища типа ключ/значение с использованием глобалов тривиальна:
keyValueStore(key)=value
Например:
telephone("211-555-9012")="James, George"
telephone("617-555-1414")="Tweed, Rob"
Этого достаточно для создания простых ключ/значение хранилищ, но использование глобалов позволяет сохранять несколько атрибутов для каждого ключа. Например:
telephone(phoneNumber,"name")=value
telephone(phoneNumber,"address")=value
Базы данных NoSQL обычно не предоставляют автоматических методов для индексации значений. Не делают этого и глобалы. Если необходимо получить доступ к данным с помощью другого ключа, то, соответственно, необходимо создать второй глобал с альтернативным свойством в качестве ключа. Для хранилища, приведенного выше, индексный глобал по имени может иметь следующую структуру:
nameIndex(name,phoneNumber)=""
Например:
nameIndex ("James, George", "211-555-9012")=""
nameIndex ("Tweed, Rob", "617-555-1414")=""
На диаграмме глобалы с данными и индексными значениями будет выглядеть следующим образом:
Очень важной и мощной характеристикой глобалов является то, что узлы глобалов сохраняются как отсортированный набор (как показано на рисунке выше).
Метод перебора узлов позволяет последовательно перебирать содержимое каждого глобала. Для того чтобы сделать телефонный справочник (с сортировкой по имени) на основе нашей модели, было бы достаточно пройти по узлам индексного глобала nameIndex и затем использовать метод get для доступа к данным глобала с телефонами.
Такой метод перебора узлов известен как функция order, которая представлена тем или иным способом в различных языках и фреймворках. Например, функция getNextSubscript клиента node-mdbm Node.js (github.com/robtweed/node-mdbm):
mdbm.getNextSubscript('nameIndex',['James, George'],
function(error,results) {});
в нашем случае вернет индекс узла глобала следующего за 'James, George':
{subscriptValue: 'Tweed, Rob'}
СУБД GT.M и Cache хорошо оптимизированы для обхода индексов подобным образом, и при наличии индексных глобалов поиск в данных будет очень быстрым.
2) Колоночные хранилища
Табличные или колоночные NoSQL базы данных, такие, как BigTable, Cassandra или Amazon SimpleDB, позволяют хранить данные в виде разреженных таблиц, а это означает, что каждая строка в таблице может иметь значение в некоторых, но не обязательно во всех, столбцах. База данных SimpleDB идет дальше и позволяет ячейке в столбце содержать более одного значения.
Схема реализации с помощью глобалов
columnStore(columnName, rowId)=value
Например:
user("dateOfBirth",3)="1987-01-23"
user("email",1)="rob@foo.com"
user("email",2)="george@foo.com"
user("name",1)="Rob"
user("name",2)="George"
user("name",3)="John"
user("state",1)="MA"
user("state",2)="NY"
user("telephone",2)="211-555-4121"
Глобал, созданный выше, представляет следующую таблицу:
3) Документо-ориентированные
Документо-ориентированные NoSQL базы данных, такие, как CouchDB и MongoDB, хранят коллекции пар ключ/значение, а внутри них рекурсивно коллекции коллекций. Как правило, JSON, или JSON-подобные структуры используются для представления таких "документов".
Отображение документа или объекта в глобале: имена хранятся как индексы, а значения как значения. Для массивов используется числовой индекс для представления позиции в массиве. Рассмотрим, например, документ JSON:
{key:"value"}
Он может быть отражен в глобалах как:
document("key")="value"
Возьмем более сложный JSON документ:
{'name':'Rob', 'age':26
,'knows':['George','John','Chris']
,'medications':[
{'drug':'Zolmitripan'
,'dose':'5mg'
}
,{'drug':'Paracetamol'
,'dose':'500mg'
}
]
,'contact':{'eMail':'rob@foo.com'
,'address':{
'street':'112 Beacon Street'
,'city':'Boston'
}
,'telephone':'617-555-1212'
,'cell':'617-555-1761'}
,'sex':'Male'
}
И его хранение в глобале:
person("age")=26
person("contact","address", "city")="Boston"
person("contact","address", "street")="112 Beacon Street"
person("contact","cell")="617-555-1761"
person("contact", "eMail")="rob@foo.com"
person("contact", "telephone")="617-555-1212"
person("knows",1)="George"
person("knows",2)="John"
person("knows",3)="Chris"
person("medications",1, "drug")="Zolmitripan"
person("medications",1, "dose")="5mg"
person("medications",2, "drug")="Paracetamol"
person("medications",2, "dose")="500mg"
person("name")="Rob"
person("sex")="Male"
4) Графовые хранилища
Графовые NoSQL баз данных, такие, как Neo4j, используются для представления сложных сетевых связей в терминах узлов и связей между узлами (так называемый "ребер"), с парами ключ/значение добавляемых к узлам и связям.
Классический пример использования графовых баз данных - это представление социальных сетей. Рассмотрим следующий пример:
Он может быть представлен в глобалах как:
person(personId,"knows", personId)=""
person(personId,"knows", personId,key)=value
person(personId,"name")=name
Например:
person(1,"knows",2)=""
person(1,"knows",2, "disclosure")="public"
person(1,"knows",2,"age")="3 days"
person(1,"knows",7)=""
person(1,"name")="Rob"
person(2,"name")="John"
person(7,"knows",2)=""
person(7,"knows",2, "disclosure")="public"
person(7,"knows",2,"age")="2 years"
person(7,"name")="George"
Обобщенная схема хранения для графовых БД может выглядеть, например, так:
5) Другие модели данных
Область применения глобалов не ограничивается только NoSQL моделями. Они также могут быть использованы для моделирования других типов баз данных:
Заключение
СУБД GT.M и Cache могут поддерживать любые или все модели баз данных, описанных выше, причем одновременно, если потребуется. То есть можно иметь аналоги Redis, CouchDB, SimpleDB, Neo4j, MySQL и XML хранилищ, работающие в одной и той же базе данных в одно и то же время.
GT.M и Cache имеют интерфейсы для языков программирования и фреймворков, включая Python, Java, .NET и Node.js, что делает их идеальными кандидатами для NoSQL-решений.
Как GT.M, так и Cache в результате являются идеальными кандидатами для предприятий, которым требуются технологии NoSQL, при дополнительных требованиях к зрелости, прочности и надежности. Хотя оба продукта имеют коммерческую лицензию и работают на широком спектре оборудования и операционных систем, GT.M особенно интересен тем, что доступен как OpenSource продукт при запуске на платформе GNU/Linux.
Смотрите также: Эволюция и тренды развития: OldSQL -> NoSQL -> NewSQL. Второй хороший материал — NoSQL базы данных: понимаем суть. И под конец немножко остужающий пыл материал — Почему нужно 1000 раз подумать, прежде чем использовать noSQL?
63 комментария
Всё замечательно! Есть возможность работать с этими базами через PHP?
Есть. Но не нужно. Лишнее звено. встроенный язык М (или COS) все заменяет. Схема проста: браузер - веб сервер - гт.м, например.
Не подскажете, где найти документацию по Cache, тестовые
примеры ну и так далее. Потому как вопросов после статьи возникло очень много.
Скачайте дистрибутив Cache (он не требует лицензии для ознакомления) и откройте документацию. Там все есть.
>>где найти документацию по Cache
То что есть у них на сайте, все просмотрели? поисковики больше ничего не выдают?
большое спасибо за материал!
Главное не написали.
В этих базах не реализована каноническая ТРАНЗАКЦИЯ.
Т.е. за логическую целостность БД ответственен программист.
arthritic hip pain arthritis osteoarthritis
http://onlinedrugstore.us.org canadian pharmacies
hair loss and thinning asthma specialist
canadian pharmacies
seasonal allergies hives latex allergy symptoms
http://viagrawithoutdoctor.tech viagra without a doctor prescription
what's best for arthritis www trea
viagra without a doctor prescription
hair transplant price infectious arthritis
http://canadian-drugstore.us.org canadian pharmacies
what is irritable bowel syndrome is gi
canadian pharmacy
degenerative joint disease gastrointestinal system problems
http://onlinedrugstore.us.org canadian pharmacy
seasonal allergies throat gastric symptoms in adults
canadian pharmacies
allergy desensitization male hair loss treatment
http://viagrawithoutdoctor.tech/# viagra without a doctor prescription
treatment options symptoms for asthma in adults
viagra without a doctor prescription
women with hair loss sugar allergy symptoms
http://viagrawithoutdoctor.tech/# viagra without a doctor prescription
allergy shots for food allergies allergen signs
viagra without a doctor prescription
medical hair transplant allergic asthma diagnosis
http://viagrawithoutdoctor.tech/# viagra without a doctor prescription
symptoms of dairy allergy allergies seasonal symptoms
viagra without a doctor prescription
gastronal treatment for
http://onlinedrugstore.us.org canadian pharmacies
arthritis care treatment of disease definition
canadian pharmacies
thinning hair shampoo digestive system disorders
http://onlinedrugstore.us.org online pharmacy
upper gi problems options drug treatment
canadian pharmacy
allergies sore throat find treatment
http://canadian-drugstore.us.org canadian pharmacies
arthritis is a form of rheumatism allergy symptoms eyes
online pharmacy
lower gi tract pain asthma diagnosis
http://www.cialiswithoutadoctors.org/# cialis without a doctor's prescription
breast treatment stress related hair loss
cialis without a doctor's prescription
female hair regrowth yoga for arthritis
http://www.cialiswithoutadoctors.org/# cialis without a doctor's prescription
relieve allergies symptoms of food allergies
cialis without a doctor's prescription
symptoms for arthritis in hands hair restoration for men
http://onlinedrugstore.us.org canadian pharmacy
dandruff and hair loss severe allergy symptoms pollen
canadian pharmacies
arthritis causes and treatment what triggers arthritis
http://www.cialiswithoutadoctors.org/# cialis without a doctor's prescription
emergency asthma treatment asthma facts
cialis without a doctor's prescription
what is the definition of treatment endoscopy gi
http://onlinedrugstore.us.org online pharmacy
describe the treatment options for someone with an anxiety disorder what is gastrointestinal tract disease
canadian pharmacies
asthma clinic nut allergies
http://www.cialiswithoutadoctors.org/# cialis without a doctor's prescription
arthritis pain relief git upset
cialis without a doctor's prescription
hair problems gastro conditions
http://canadian-drugstore.us.org online pharmacy
asthma home remedies reason for allergy
online pharmacy
osteoarthritis hands loss of hair treatment
http://www.cialiswithoutadoctors.org/# cialis without a doctor's prescription
how to reduce hair loss hair loss disease
cialis without a doctor's prescription
asthma devices artrits
http://onlinedrugstore.us.org online pharmacy
symptoms of exercise induced asthma medicine for asthma inhaler
online pharmacy
hair fall in male help for arthritis
http://www.cialiswithoutadoctors.org/# cialis without a doctor's prescription
bronchial asthma medicine drug abuse treatment centers
cialis without a doctor's prescription
female pattern hair loss allergy map
http://canadian-drugstore.us.org drugstore online
causes rheumatoid arthritis asthma in kids
canadian pharmacies
extreme allergy relief cats and allergies
http://www.cialiswithoutadoctors.org/# cialis without a doctor's prescription
signs of an asthma attack test for asthma
cialis without a doctor's prescription
chronic gastrointestinal how can asthma be treated
http://canadian-drugstore.us.org drugstore online
fall allergies osteoarthritis arthritis
drugstore online
flea allergy relief from arthritis pain
http://canadinpharmacy.us.com/# canadian pharmacies
arthritis supplements what is gastric problem
canadian pharmacy online
gastrointestinal effects arteritis
http://canadian-drugstore.us.org drugstore online
what is the cure for arthritis rheumatoid arthritis relief
canadian pharmacies
where does arthritis come from alcohol treatment options
http://canadinpharmacy.us.com/# online canadian pharmacy
asthma information gi scope
online canadian pharmacy
symptoms of exercise induced asthma treatment drug abuse
http://canadian-drugstore.us.org canadian pharmacies
drug and alcohol rehab centers intestinal distress
drugstore online
symptoms of a asthma attack cure for hair loss
http://canadinpharmacy.us.com/# canadian pharmacy online
asthma and allergy definition of arthritis
online pharmacy
alternative allergy treatment male pattern hair loss treatment
http://canadian-drugstore.us.org drugstore online
how asthma works degenerative joint disease
drugstore online
common allergy symptoms arthritis in hands symptoms
http://canadinpharmacy.us.com/# canadian pharmacy
excessive hair fall treatment diseases of gastrointestinal system
canadian online pharmacy
diagnose digestive problems what are the symptoms of arthritis
http://canadian-drugstore.us.org drugstore online
rast allergy test drug allergy
canadian pharmacy
asthma adult symptoms of arthritis pain
http://canadinpharmacy.us.com/# canadian pharmacies
dog arthritis allergy center
canadian pharmacies
treating drug addiction allergy asthma relief
http://onlinedrugstore.us.org canadian pharmacies
facts about asthma attacks digestive disease symptoms
canadian pharmacy
extrinsic asthma food allergy testing
http://canadinpharmacy.us.com/# online canadian pharmacy
skin allergy symptoms what is the treatment
canadian pharmacy
alcohol gastrointestinal problems flower allergy symptoms
http://canadian-drugstore.us.org online pharmacy
reasons for excessive hair fall asthma facts
online pharmacy
food allergy diet prevent hair loss
http://canadinpharmacy.us.com/# canadian pharmacies
hair treatment hair loss treatment for hair thinning and hair loss
online pharmacy
reasons for hair loss in men food allergy cure
http://canadian-drugstore.us.org canadian pharmacies
arthritis in old age help with hair loss
online pharmacy
diseases digestive system medical treatment definition
http://onlinedrugstore.us.org canadian pharmacy
health allergies natural hair restoration
canadian pharmacies
acupuncture asthma treatment for allergies
http://canadinpharmacy.us.com/# canadian pharmacy
definition for treatment nioxin hair loss
online pharmacy
hair loss thyroid causes arthritis hand
http://canadian-drugstore.us.org canadian pharmacy
diseases found in the digestive system cure for arthritis in hands
canadian pharmacies
treents hair growth solution
http://canadinpharmacy.us.com/# online canadian pharmacy
hives allergy hair growth for women
canadian online pharmacy
about asthma gastrointestinal doctors
http://canadinpharmacy.us.com/# canadian pharmacy
the arthritis foundation asthma chest pain
online pharmacy
stop hair loss naturally gastric diseases
http://onlinedrugstore.us.org canadian pharmacy
what is gastric disease gastro issues
online pharmacy
digestive system problems symptoms laser hair growth
http://canadian-drugstore.us.org canadian pharmacies
diseases of the digestive system osteoarthritis knee
canadian pharmacies
what is cancer treatment mold allergy relief
http://canadian-drugstore.us.org canadian pharmacies
hair transplant information allergic reaction levels
canadian pharmacies
asthma specialist thinning hair shampoo
http://onlinedrugstore.us.org canadian pharmacy
american gastroenterology society male pattern hair loss
online pharmacy
allergy system cause of hair fall and its treatment
http://canadian-drugstore.us.org online pharmacy
bald hair treatment stages of asthma
canadian pharmacies
about arthritis how does arthritis start
http://canadian-drugstore.us.org online pharmacy
treatment vs cure reason of arthritis
canadian pharmacies
how to help arthritis in fingers digestive illnesses
http://canadian-drugstore.us.org canadian pharmacy
hair loss treatment women hair transplant for men
online pharmacy
allergy symptoms kids major diseases of the digestive system
http://onlinedrugstore.us.org canadian pharmacies
dust allergy emergency asthma treatment
canadian pharmacies
child allergy symptoms symptoms of arthritis in legs
http://onlinedrugstore.us.org online pharmacy
hair loss in women causes symptoms of gastro problems
canadian pharmacy
causes allergies most common stomach problems
http://onlinedrugstore.us.org online pharmacy
respiratory allergies symptoms of an allergy
canadian pharmacies
hair loss after pregnancy signs of bronchial asthma
http://canadian-drugstore.us.org canadian pharmacies
treatment of asthma hair regrowth women
online pharmacy
allergy symptoms in adults what is allergy
http://onlinedrugstore.us.org online pharmacy
what can you do for arthritis severe allergy symptoms
online pharmacy
hair transplant surgeon hair loss reasons
http://canadian-drugstore.us.org canadian pharmacy
symptoms of rheumatoid arthritis signs of seasonal allergies
canadian pharmacy
common symptoms of allergies allergy testing children
http://onlinedrugstore.us.org canadian pharmacy
meaning of medical treatment gastrointestinal and gastroenterology
canadian pharmacy