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

Компания InterSystems временно не ведёт блог на Хабре

Сначала показывать

Новые динамические объекты и поддержка JSON в InterSystems Caché

Время на прочтение5 мин
Количество просмотров5.2K
Dynamism of A Dog on a Leash (1912) Giacomo BallaВообще, в InterSystems Caché и динамические объекты, и поддержка JSON есть уже достаточно давно, но в версии 2016.1 они были переосмыслены, а код реализации переведён с COS уровня на уровень ядра/С, что позволило добиться существенного повышения производительности в этих областях. О том, что есть нового и как переходить (а также о том, как сохранить совместимость с предыдущими версиями) я расскажу в этой статье.

Возможности по работе с JSON


И начну с примера. Теперь такой синтаксис — работает и это самое большое нововведение в синтаксисе COS:
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии0

Таблицы сортировки в СУБД Caché

Время на прочтение8 мин
Количество просмотров6.9K
Зато какая сортировка!
(А. С. Пушкин)


Если бы это была запись для твиттера, то она была бы следующей: «Программисты на Caché ObjectScript! Используйте Cyrillic4 вместо Cyrillic3!». Но тут Хабр, поэтому придётся развернуть мысль – добро пожаловать под кат.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии16

XData Studio Assist — автодополнение в XData блоках классов InterSystems Caché

Время на прочтение12 мин
Количество просмотров2.4K
Эта статья – перевод моей статьи, опубликованной на новом портале InterSystems Developer Community. В ней рассказывается о ещё одной возможности в Studio — поддержке автодополнения при создании XML документов в XData. Эта статья развивает идею, поднятую Альбертом Фуэнтесом, об использовании XData и кодогенераторов, для упрощенного создания неких правил. Вы уже могли сталкиваться с автодополнением в XData при разработке ZEN приложения, %Installer-манифеста или REST брокера. Называется это Studio Assist. Я расскажу, как можно настроить и использовать такую возможность.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии3

Установка приложений в Caché с использованием проекций

Время на прочтение6 мин
Количество просмотров5.4K

Здравствуйте. В этой статье будет описан еще один способ создания установщика для приложений в InterSystems Caché. Под приложениями здесь имеются в виду разные библиотеки или утилиты, которые могут быть добавлены или удалены из Caché всего одним действием. Если вы всё ещё пишете инструкции для пользователей по установке ваших приложений в Caché, состоящие более чем из одной строки — самое время это автоматизировать.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии25

Метеостанция на Arduino с визуализацией данных

Время на прочтение6 мин
Количество просмотров35K
Paul Klee In The Style Of Kairouan

Введение


Про метеостанции на Arduino писали и не раз. В своё оправдание скажу, что был хакатон — а нашей команде (в составе меня и хабраюзера ViArt) хотелось попробовать работу с Arduino. Кроме того к нашей метеостанции прикручена визуализация данных. Если хотите узнать, какая база данных может получать данные по com-порту без промежуточных звеньев в виде web-сервера, файлов или ещё каких-то ухищрений, добро пожаловать под кат.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии20

MonCaché — реализация MongoDB API на основе InterSystems Caché

Время на прочтение9 мин
Количество просмотров5.4K

ИДЕЯ


Идея проекта — попробовать реализовать базовые функции MongoDB API для поиска, сохранения, обновления и удаления документов так, чтобы можно было бы не меняя клиентский код вместо MongoDB использовать InterSystems Caché.

МОТИВАЦИЯ


Возможно, если взять интерфейс MongoDB и в качестве хранилища данных использовать InterSystems Caché, то можно получить некоторый выигрыш в производительности.

Ну, а почему бы и нет?! ¯\_(ツ)_/¯
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии13

Caché Class Explorer — исследуем Caché в нотации UML

Время на прочтение5 мин
Количество просмотров7.7K
Здравствуйте. Эта статья — небольшой обзор инструмента, который помогает разбираться с устройством и структурой данных пакетов и классов внутри СУБД Caché.

Если кратко, его миссия — выполнить визуализацию класса или целого пакета, показать связи между классами и предоставить максимум информации будь-то программисту или тимлиду без надобности отправляться в Студию и смотреть там программный код.

Тех, кто обучается или ведёт обучение по технологиям InterSystems, днями просматривает или изменяет коды разных проектов и просто заинтересованным лицам — приглашаю ознакомиться с Caché Class Explorer!
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии2

Запросы классов в InterSystems Caché

Время на прочтение13 мин
Количество просмотров4.9K
Andre Derain Landscape ear Chatou

Введение


Запросы классов InterSystems Caché — это полезный инструмент, используемый для абстракции от непосредственно SQL запросов в COS коде. В самом простом случае это выглядит так: допустим вы используете один и тот же SQL запрос в нескольких местах, но с разными аргументами.

Для того чтобы не писать его каждый раз, вы можете обозначить текст запроса как запрос класса и в дальнейшем обращаться к этому запросу по его имени. А ещё есть кастомные запросы, в которых логику получения следующей строки результатов вы пишете сами. Под катом я расскажу о том, как этим всем можно пользоваться.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии0

Собственные типы индексов в СУБД Caché

Время на прочтение7 мин
Количество просмотров7.2K
В объектной и реляционной моделях данных СУБД Caché есть три типа индексов — обычные, bitmap и bitslice. Если по каким-то причинам этих индексов не хватает, начиная с версии 2013.1 программист может определить свой тип индексов и использовать его в любых классах.

Подробности под катом (если вас не пугают слова типа метод-генератор).
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Развёртывание приложений в InterSystems Caché

Время на прочтение9 мин
Количество просмотров4K
Kazuya Akimoto Ten Blue Eyes

Введение


Итак, вы разработали своё приложение на технологиях InterSystems. Теперь его надо развернуть у клиента и часто не один раз. В процессе разработки у вас появилась инструкция по установке – потому что недостаточно просто импортировать классы, нужно ещё и доработать систему напильником провести тонкую настройку среды под ваши нужды.

Для решения этих задач существует утилита %Installer. Эта статья о ней.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Блоки. Внутреннее устройство файла базы данных Caché. Часть 3

Время на прочтение5 мин
Количество просмотров6.4K
Как и в двух предыдущих частях (часть 1, часть 2), я продолжаю знакомить вас с внутренним устройством баз данных Caché. На этот раз я расскажу о том, что еще можно узнать, и в чем может помочь мой проект Caché Blocks Explorer.


Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии1

Удалённое выполнение кода в InterSystems Caché (RCE)

Время на прочтение7 мин
Количество просмотров5.1K
Van Gogh Fishing Boats on the Beach

Введение


В том случае, если вы управляете более чем одним сервером Caché может возникнуть задача выполнения произвольного кода из одного сервера Caché на другом. Кроме того, может потребоваться выполнение произвольного кода на удалённом сервере Caché, например, для нужд сисадмина… Для решения этих задач была разработана утилита RCE.

Какие вообще есть варианты решения подобных задач, и что предлагает RCE (Remote Code Execution) – под катом.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии8

Блоки. Внутреннее устройство файла базы данных Caché. Часть 2

Время на прочтение5 мин
Количество просмотров7.2K
Эта публикация – продолжение моей статьи, в которой я рассказал, как устроена база данных Caché изнутри. В ней я описал типы блоков, как они связаны, какое отношение имеют к глобалам. В той статье была теория. Я создал проект, позволяющий визуализировать дерево блоков – и в этой статье вы всё это увидите. Добро пожаловать под кат.


Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии10

Глобалы — мечи-кладенцы для хранения данных. Разреженные массивы. Часть 3

Время на прочтение6 мин
Количество просмотров13K
В прошлых частях (1, 2) мы говорили о глобалах как о деревьях, в этой мы рассмотрим глобалы как разреженные массивы.

Разреженный массив — это разновидность массива, в котором большинство значений принимает одинаковое значение.

На практике часто встречаются настолько огромные разреженные массивы, что нет никакого смысла занимать память одинаковыми элементами. Поэтому есть смысл разреженные массивы реализовывать так, чтобы память не расходовалась на хранение одинаковых значений.
В некоторых языках программирования разреженные массивы входят в сам язык, например в J, MATLAB. В других языках программирования есть специальные библиотеки, которые позволяют реализовать их. Для С++ — Eigen и др.

Глобалы — хорошие кандидаты для реализации разреженных массивов, потому что:
Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии17

Блоки. Внутреннее устройство файла базы данных Caché

Время на прочтение5 мин
Количество просмотров15K
Не так давно на хабре в блоге InterSystems были выложены статьи о том, что собой представляет глобал в Caché, с чем его готовят и как подают (часть 1 и часть 2). Это всё, конечно, интересно, удобство работы с любыми моделями данных, какие только пожелает разработчик. Но что обеспечивает хорошую скорость обращения с этими глобалами?


подробнее о блоках
Всего голосов 19: ↑16 и ↓3+13
Комментарии9

Хакатон на школе InterSystems 2015

Время на прочтение7 мин
Количество просмотров3.7K
InterSystems никогда раньше не проводила хакатонов. Школы собирали каждый год, тренировали, разбивали на команды, делали задания, различной продолжительности, но так это не называли. Но время идет. Не хотелось в очередной раз повторять одно и тоже. Хотелось чего-то нового.

Хакатонов, тех же.

Если уж мы собираем полсотни высокопрофессиональных программистов Caché почему бы не попытаться, разбив их на команды, создать нечто новое? Не все, скорее всего, согласятся участвовать и захотят программировать ночи напролет, но даже и малая часть, всего две-три команды вполне могут создать что-то стоящее. Даже если в итоге получится всего пара, но осмысленных проектов, то будем считать эксперимент успешным. (И забегая вперед, мы можем с удовлетворением констатировать, что получили больше чем «пару» достойных проектов)
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии3

В поисках аналога функций первого порядка в СУБД Caché

Время на прочтение20 мин
Количество просмотров3.5K
Пост написан в дополнение к статье Декларативная разработка на Caché.

[2, 3, 5, 7, 11, 13, 17].forEach(function(i) {
  console.log(i);
});

Как делать такое в Caché с помощью COS?
Под катом несколько упражнений на заданную тему.
Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии6

Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 2

Время на прочтение8 мин
Количество просмотров13K
Начало — см. часть 1.

3. Варианты структур при использовании глобалов


Такая структура как упорядоченное дерево имеет разные частные случаи. Рассмотрим те, которые имеют практическую ценность при работе с глобалами.

3.1 Частный случай 1. Один узел без ветвей


Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии192

Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 1

Время на прочтение5 мин
Количество просмотров36K
Настоящие мечи-кладенцы баз данных — глобалы — давно известны, но до сих пор немногие умеют эффективно ими пользоваться или вовсе не владеют этим супероружием.

Если использовать глобалы в решении тех задач, в которых они действительно хороши, то можно добиться выдающихся результатов. Либо в производительности, либо в упрощении решения задачи (1, 2).

Глобалы — это специальный способ хранения и обработки данных, совершенно другой, чем таблицы в SQL. Они появились в 1966 году в языке M(UMPS) (эволюционное развитие — Caché ObjectScript, далее COS) в медицинских БД и до сих пор там активно используются, а также проникли в некоторые другие области, где требуется надёжность и высокая производительность: финансы, трейдинг и т.д.

Глобалы в современных СУБД поддерживают транзакции, журналирование, репликацию, партиционирование. Т.е. на них можно строить современные, надёжные, распределённые и быстрые системы.

Глобалы не ограничивают вас пределами реляционной модели. Они дают свободу для разработки структур данных, оптимизированных под конкретные задачи. Для многих приложений разумное использование глобалов может быть поистине секретным оружием, обеспечивая производительность, о которой разработчики реляционных приложений могут только мечтать.

Глобалы как способ хранения данных можно использовать во многих современных языках программирования, как высокоуровневых, так и низкоуровневых. Поэтому в этой статье я сфокусируюсь именно на глобалах, а не на языке, из которого они когда-то вышли.
Читать дальше →
Всего голосов 39: ↑28 и ↓11+17
Комментарии336

Релиз InterSystems Ensemble 2015.1 и 2015.2

Время на прочтение3 мин
Количество просмотров2.7K
В июле состоялся релиз интеграционной платформы InterSystems Ensemble 2015.2. В этой статье обзор основных улучшений 2015.2 и 2015.1.

Главное: поддержка push-уведомлений для iOS и Google-устройств, оптимизация архитектуры баз данных для Ensemble продукций, оптимизация «сквозных» (pass-through inproc) операций.
Подробности под катом
Всего голосов 10: ↑10 и ↓0+10
Комментарии0