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

ИДЕЯ Идея проекта – попробовать реализовать базовые функции MongoDB API для поиска, сохранения, обновления и удаления документов так, чтобы можно было бы не меняя клиентский код вместо MongoDB использовать InterSystems Caché. МОТИВАЦИЯ Возможно, если взять интерфейс MongoDB и в качестве хранилища данных использовать InterSystems Caché, то можно получить некоторый выигрыш в производительности. Ну, а почему […]

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

Здравствуйте. Эта статья – небольшой обзор инструмента, который помогает разбираться с устройством и структурой данных пакетов и классов внутри СУБД Caché. Если кратко, его миссия – выполнить визуализацию класса или целого пакета, показать связи между классами и предоставить максимум информации будь-то программисту или тимлиду без надобности отправляться в Студию и смотреть там программный код. Тех, […]

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

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

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

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

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

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

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

В прошлых частях (1, 2) мы говорили о глобалах как о деревьях, в этой мы рассмотрим глобалы как разреженные массивы. Разреженный массив – это разновидность массива, в котором большинство значений принимает одинаковое значение. На практике часто встречаются настолько огромные разреженные массивы, что нет никакого смысла занимать память одинаковыми элементами. Поэтому есть смысл разреженные массивы реализовывать […]

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

Блоки. Внутреннее устройство файла базы данных Caché Не так давно на хабре в блоге InterSystems были выложены статьи о том, что собой представляет глобал в Caché, с чем его готовят и как подают (часть 1 и часть 2). Это всё, конечно, интересно, удобство работы с любыми моделями данных, какие только пожелает разработчик. Но что обеспечивает […]

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

Пост написан в дополнение к статье Декларативная разработка на Caché. Как делать такое в Caché с помощью COS? Под катом несколько упражнений на заданную тему.

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

Начало – см. часть 1. 3. Варианты структур при использовании глобалов Такая структура как упорядоченное дерево имеет разные частные случаи. Рассмотрим те, которые имеют практическую ценность при работе с глобалами. 3.1 Частный случай 1. Один узел без ветвей

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

Настоящие мечи-кладенцы баз данных – глобалы – давно известны, но до сих пор немногие умеют эффективно ими пользоваться или вовсе не владеют этим супероружием. Если использовать глобалы в решении тех задач, в которых они действительно хороши, то можно добиться выдающихся результатов. Либо в производительности, либо в упрощении решения задачи (1, 2). Глобалы – это специальный […]