Как стать автором
Обновить

Комментарии 9

Неплохая статья, про Globals раньше не слышал или не обращал внимания).
Не хватает наверное таблички с цифрами для 3 подходов, раз уж вы сравниваете скорость.
Вопрос, какие преимущества и недостатки использования Globals, по сравнению с другим СУБД?
> Неплохая статья, про Globals раньше не слышал или не обращал внимания).
GlobalsDB и Intersystems Cache — это две NoSQL СУБД от компании Intersystems. Про первую из них написано в трех статьях на Хабре, которые я привела в конце. Но если в GlobalsDB данные доступны только в виде глобалов с прямым доступом к ним, о котором собственно и идет речь в статье, то в Cache можно также получить еще и объектный доступ, и реляционный без каких-либо дополнительных телодвижений.

> Не хватает наверное таблички с цифрами для 3 подходов, раз уж вы сравниваете скорость.
Собственно говоря в этой статье я скорость не сравниваю и остальные два подхода никак не рассматриваю. Более того, я в самом начале написала, что эта статья для тех «кому, как и мне, с первого взгляда документация не дала полного понимания процесса». Но если говорить в принципе, то на тех примерах, которые я делала, прямой доступ работает быстрее всего. Хотя опять же, многое зависит от структуры данных, которые надо записать. С другой стороны, приложения с объектным/реляционным доступом можно запускать с любого компьютера на котором прописан DNS к БД, а при прямом доступе все должно быть на одной машине. Так что тут вопрос еще и в задачах, которые ставятся перед программой.

> какие преимущества и недостатки использования Globals, по сравнению с другим СУБД?
Зависит от того, с какими конкретно сравнивать :)

Если с реляционными, то иногда даже реляционный доступ к Cache работает быстрее чем к другим СУБД. Еще один плюс с моей точки зрения — есть объектный доступ и возможность проектировать БД не в виде реляционных таблиц, а в виде классов со всеми вытекающими прелестями ООП и оперировать с данными как с объектами. Кроме того, не надо использовать ORM для перехода от реляционных данных к объектным (Hibernate и т.п.) — это все сделано разработчиком и заточено под конкретные типы данных, а их там много!

Если сравнивать с объектно-ориентированными (документно-ориентированными), то у них зачастую отсутствует возможность реляционного доступа. Если уже существующее приложение надо перевести на нереляционную БД, то придется много переписывать для изменения метода получения данных. В случае с Cache надо просто поменять драйвер и при желании модифицировать запросы для ускорения получения данных.

Также Cache заточена под работу на маломощных машинах с большими объемами данных. Ну и не стоит забывать про другие приятные «бантики» — наличие встроенного Business Intelligence модуля (с построением и отображением OLAP-кубов) и дополнительных продуктов для интеграции данных из разных приложений в одно хранилище.

Это так, первое что пришло в голову. Конечно как и во всех системах, есть также и некоторые минусы. Для меня главный — это встроенный язык программирования, очень уж он непривычный.
Также Cache заточена под работу на маломощных машинах с большими объемами данных.

Я бы не сказал, что Caché «заточена» под работу на маломощных серверах. На самом деле это такой side-эффект, что для значительных по нагрузке задач Caché относительно нетребовательна к ресурсам. Примером известных высоконагруженных задач, где используется Caché, например является проект Европейского космического агентства Gaia, где ежедневно обратбатывается до 100 ГБ телеметрии о звездах нашей галактики. Первичные данные загружаются в глобалы как раз через NoSQL доступ через Caché Java eXtreme, а потом обрабатываются через SQL-доступ для создания классификации звезд млечного пути.
это такой side-эффект, что для значительных по нагрузке задач Caché относительно нетребовательна к ресурсам

Это очень приятный «минус».
Спасибо за ответ.
Еще статьи о GlobalsDB: раз, два.
По скорости принято считать, что NoSQL, он же прямой доступ к глобалам Caché и GlobalsDB — наиболее быстрый, вторым по скорости идет SQL-доступ, далее объектный.
В многообразии видов доступа заключается одна из ключевых «фишек» Caché — возможность разрабатывать бизнес-логику по работе с данными как с объектами, а если с этими же данными нужно поработать быстро в экстремальном режиме — переходим на прямой доступ. И также всегда есть возможность работать с этими же данными через SQL, как это делается с любой привычной реляционной СУБД.
Про сравнение с другими СУБД — других настолько много, что скорее СУБД подбирают под задачу. Если вам нужно быстрое бесплатное многомерное key-value хранилище данных с транзакционной поддержкой — GlobalsDB подойдет. Работать с ней можно через .NET, java, Node.js.
И еще одно примечание для тех, кто будет пробовать использовать данный метод доступа к данным. При установке Cache с минимальными ограничениями по безопасности, логин и пароль при подключении к БД не проверяются
myConn.Connect("User", "_SYSTEM", "SYS");
Т.е. можно ввести абсолютно все что угодно и соединение будет установлено успешно.

Чтобы исключить такое поведение надо либо при установке выбирать средний уровень безопасности, или настраивать доступа в Портале управления Cache.
Поделитесь библиотеками

InterSystems.Data.CacheClient;
InterSystems.Data.CacheTypes;
Эти библиотеки устанавливаются автоматически вместе с установкой Caché, они должны быть в той папке, куда вы установили саму СУБД, и дальше \dev\dotnet
Зарегистрируйтесь на Хабре, чтобы оставить комментарий