Pull to refresh
14
0
Send message
Опять же вопрос к разработчикам, вполне резонный впрочем, возможно в будущем это появится. Предпололожу, что можно написать такой хитрый макрос, какой-нибудь SmartInc, который будет разбираться по аргументу, глобал там или нет, и делать правильный выбор. Судя по тому, что вы хорошо пишете макросы, может быть и вы сможете.
Я не разработчик, но постараюсь ответить. Например потому, что $sequence только для глобалов.
Согласен. И вот тут есть рецепт doublefint, как приготовить Jenkins с Caché
На самом деле у БИОН есть и B2C сервис — Лабфою.
Для тех, кто хочет поддержку CORS, но еще не может перейти на 2015.2, поддержка CORS реализована в этом репо.
Вышла новая книга по Caché — Об’єктно-реляційна СУБД Caché. Багатовимірний сервер даних і способи реалізації бізнес логіки засобами вбудованої мови Caché ObjectScript. Гайдаржи В., Михайлова І
Заказать можно здесь.
Согласен, что хранимость логов это плюс: можно SQL по ним потом легко или DeepSee. Да и параметр loglevel бы добавить. Про отключение журналирования +1
Штука хорошая. Как я понял, все записи в лог помещаются в хранимые классы — это очевидный оверхед к работе системы. А есть какой-то флаг включать/отключать логирование?
Все получается. Один нюанс: класс %SYS.Audit как источник данных для куба нужно вводить вручную (как и показано на видео) — в окне выбора не показывается, как и все системные классы.

На самом деле, компилятор классов генерирует INT-код.

Тоже думал так, но похоже что сначала mac? Источник.
Как видно, вы не можете представить себе проекта с тоннами унаследованного кода, куда, тем не менее, продолжает добавляться новый функционал )))

Представить не сложно ) Непонятно только, зачем в новую функциональность вносить точечный синтаксис? Читабельность от этого точно не повышается, а вероятность ошибок увеличивается.
Генерировать в Caché блоки «традиционные» блоки do с точками — не могу представить ни одного случая, зачем это может понадобиться. Синтаксис с фигурными скобками как раз и пришел на смену точек, чтобы устранить не писать такие потенциально ошибочные, затрудняющие чтение и наполненные лишними точками места.
BTW, приходите на нашу конференцию на ритфест 21-22 мая. Можно будет задать вопросы лично инженерам и разработчикам InterSystems (кроме России будут инженеры из Австралии и Бельгии). Также, что, наверняка, не менее интересно, можно будет пообщаться с инженерами партнеров InterSystems в России, тех кто используют наши технологии для разработки информационных систем и делают на этом бизнес.
Еще одно решение, еще и с использованием Puppet.
Предлагают вручную писать код, который обходит Б-деревья (в терминологии Caché — работает с глобалами).

В Caché B-деревья никто не обходит. Глобалы действительно хранятся в виде B-дерева, но это физический уровень хранения, о котором заботится движок, и не нужно думать, где именно лежат блоки данных в B-дереве.
В Caché при «ручном» выполнении запросов обходятся собственно глобалы, и таких видов обхода ровно два.
Функция $Order- перебор ключей на определенном уровне индексов глобала. Документация.
Вот пример обхода всех записей класса Sample.Person и вывода их на текущее устройство.

set personid=$Order(^Sample.PersonD("")) // берем первый ID человеков
while personid {
set person=##class(Sample.Person).%OpenId(personid)  // открываем объект по id
do person.PrintPerson() // выводим данные человека на устройство
set personid=$Order(^Sample.PersonD(personid)) // берем ID следующего человека
}

Структура хранения класса в глобалах описана в исходном коде класса в блоке XData.
Функция $Query — обход всего глобала, учитывая все вложенные индексы. Документация.

Но вот только Tarantool — это специализированная СУБД, которая вообще не поддерживает SQL.
Я бы не сказал, что это преимущество Tarantool.
— роуты http->function пишутся в XML-подобном стиле;

это довольно общее место в Caché. Ресурсы, которые относятся к классу или удобно использовать из класса можно держать в блоках XData. Записываются ресурсные данные в виде XML-ных блоков. Так в хранимых классах описывается структура хранения, в классах-кубах описываются измерения и показатели, в рест-брокерах — маршруты.

$$$OK — это макрос.
— конфигурация в окошках (я посмотрю, как вас будут любить админы, которые будут раскатывать 200 инстансов базы по серверам c помощью chef/puppet...)

Конфигурация хранится в конфигурационном файле. А для одновременного безопасного изменения на сотнях инстансов служит Enterprise Manager.
— метод GetGridData вообще пишет дебажные логи в не-json формате в выходной канал. Способов логирования ошибок система не предоставляет?

Отладка и логи есть конечно нормальные — это достойно отдельной статьи, спасибо за коммент.
Системные классы по работе с JSON разумеется есть: объекты, SQL. Безопасность тоже несложно настраивается — ресурсы и роли для веб-приложения.

А статья скорее про принцип построений приложений с Caché: сервер сайд: хранилище+REST API <-JSON-> frontend на статических HTML+JS.
Caché основана на системе MUMPS, уходящей корнями ещё в 60-ые годы. Там был весьма специфичный язык программирования, в котором используется очень много псевдографики, и встроенная возможность хранения данных в Б-дереве, которое из этого языка программирования видно как вложенный массив (именно «вложенный», термин «многомерный» добавляется исключительно для понтов). Для своих лет, вероятно, система была довольно продвинутой.

Про MUMPS все верно. Действительно в 60-е и 70-е была весьма продвинутой системой. Более того: в 80-х ее даже скопировали в СССР вместе с PDP-11 и создали советский MUMPS — Диамс и распространили на всю страну. Кое где это чудо до сих пор работает(!) еще на тех же СМ-ках (порт в Магадане, колхозы в Беларуси). Подробности можно нагуглить, вот интересный рассказ. В мире осталось несколько инкарнаций MUMPS, самая массовая это GT.M, есть и российская реализация. Есть и апологеты. Термин «вложенный массив» — ваш? Про псевдографику в коде — это про что конкретно?

Caché, с свою очередь, является попыткой модернизировать MUMPS до уровня 21ого века. В язык программирования была добавлена объектность и прочие современные возможности, в результате чего он стал странным смешением псевдографики и современного синтаксиса. Для хранения данных были добавлены SQL и объектный доступ, реализованные на базе этих самых вложенных массивов, пресловутых глобалов. При этом оба эти новых способа доступа получились очень отсталыми на фоне тех возможностей, которые предоставляются современными реляционными СУБД и ORM. Об их недостатках можно говорить очень много, я не хочу сейчас распылять на этом внимание. Достаточно сказать, что SQL в Caché застрял на уровне стандарта 92-ого года, самый сильный поддерживаемый уровень изоляции данных там read committed (не настоящий, с нарушениями), планировщик запросов путается в JOIN'ах 3ёх таблиц.

В Caché тоже можно писать «как в MUMPS». Но зачем? На курсах обучения InterSystems этому не учат — а учат, как эффективно писать приложения на Caché с использованием объектного подхода, SQL и прямого доступа к глобалам, где это необходимо. Вы проходили обучение в InterSystems?
SQL 92 да. Но скажите, какие отличительные возможности SQL 2011 от SQL 92 вы используете в своей работе каждый день? Думаю, если нашим клиентам будет не хватать SQL 2011, такую поддержку сделают. В CachéSQL есть свои удобные расширения тоже.
Оптимизатор SQL возможно не лучший в мире, хотя и постоянно улучшается. Но! В Caché всегда есть возможность написать свою реализацию работы конкретного SQL-запроса, если SQL не справляется.
Про отсталость объектной СУБД по сравнению с ORM — можно подробности? ИМХО в случае с .NET и Java bindings Caché как раз убирает оверхэд на объектно-реляционное преобразование, которое есть в некоторых ORM.
Но всё это компенсируется агрессивностью маркетинга. Он не перестаёт кричать, что них круче всё и вся, зачастую выдавая новейшие технологические фишки из 70-ых-80-ых годов прошлого века.

А где Вы нашли агрессивный маркетинг? Помоему его вообще почти нет в России — я не вижу в аэропортах и на улицах биллбордов о сверхскоростной и надежной СУБД Caché.
Из вышесказанного очевидно, что такая система не может завоевать популярность и признание у широкого круга разработчиков. Её судьба — замкнуться в рамках узкой «секты» и не выходить за её пределы. Отражение этого процесса мы можем видеть и на хабре.

Видимо, у Вас был негативный опыт с СУБД Caché. ИМХО на любой платформе можно писать хорошо и плохо. Примеры «ада» написанного на Caché и MUMPS есть, что справедливо также для любого языка вообще. Но, есть и весьма впечатляющие системы с десятками тысяч одновременных пользователей в том числе в России и СНГ, построенные на технологиях InterSystems.
Для меня Caché — это СУБД, которая весьма эффективно и, что важно, очевидно и поддерживаемо позволяет манипулировать данными произвольной сложности. И продуктивно выдавать их во внешние системы для UI с помощью JSON, вебсервисов, SQL и т.п. Также подкупает легкость администрирования и масштабирования системы.
И да, я работаю в InterSystems.
Идея ИМХО в том, что если проекту понадобилось масштабирование, то это коммерчески успешный проект, и в этом случае переход на Caché и покупка поддержки не выглядит бессмысленной тратой, а является закономерной оплатой снижения рисков.
На Хабре выходила статейка как работать с GlobalsDB из .NET

Information

Rating
Does not participate
Registered
Activity