Вы использовали Intersystems Caché? Какой у тебя опыт? - PullRequest
13 голосов
/ 05 апреля 2010

Я столкнулся с несколькими утверждениями, что использование CacheDB вместо проверенной RDBMS. Но я не мог понять, чем он лучше RDBMS? если так, почему они имеют префикс Cache?

Это RDBMS или Caché сервер? Не могли бы вы написать краткие заметки о сценарии использования в вашем проекте?

Ответы [ 3 ]

29 голосов
/ 17 августа 2011

Кэш - это уникальный зверь, в зависимости от того, как вы его используете, его можно описать как база данных без SQL, СУБД или объектно-ориентированная база данных. Конечно, это не все вещи для всех людей, поэтому, зная, каким образом это каждый, нужно какое-то объяснение.

Все это построено на основе предреляционного процедурного языка, называемого MUMPS (ужасное маркетинговое название, которое также ужасно для Googling, поэтому теперь они просто используют Cache, который ужасен только для Googling). Этот язык включает в себя операции для сохранения данных в качестве собственных команд, поэтому механизм сохранения можно оптимизировать, не затрагивая код приложения.

Этот язык имеет один тип коллекции, словарь ключ / значение с 0 или более отсортированными ключами и один тип данных, в котором есть операторы для выполнения сложных задач, а другие - для множества. Все ключи и значения являются экземплярами этого типа данных.

Это было долгое время, и приложения, написанные десятилетия назад, по-прежнему работают.

Этот язык предшествует первой СУБД, но позднее к реализации языка добавлена ​​поддержка СУБД. Кэш компилирует SQL (статически или динамически) в более современную версию MUMPS, которая затем управляет механизмом хранения. Если это звучит странно, на самом деле это не так - каждая СУБД компилирует или интерпретирует SQL в соответствии с указаниями для своего механизма хранения.

Кэш превратился в объектно-ориентированный язык (как и многие другие языки со временем), что означает, что теперь существует 2 типа данных: исходный плюс тип объекта. Объекты не могут быть сохранены в виде ключей или значений на диске напрямую, но могут наследовать или реализовывать постоянные методы.

Поэтому люди, использующие Cache, могут использовать объектно-ориентированный код, SQL или процедурный код или комбинировать их по своему усмотрению.

Каковы преимущества и недостатки?

Для людей, работающих с устаревшими приложениями MUMPS, у них практически нет выбора, поэтому я сосредоточусь на всех остальных.

Большим недостатком является то, что он имеет небольшую долю рынка (по сравнению с другими СУБД, хотя его можно сравнить с другими продуктами) и оценивается в том же ценовом диапазоне, что и коммерческие СУБД (хотя, вероятно, работать намного проще индивидуальной сделки для какого-то особенного ее использования), поэтому должна быть какая-то убедительная причина для ее покупки.

Кроме того, небольшая доля рынка означает меньший рынок для разработчиков. Кроме того, различные способы его использования означают, что не все разработчики Cache подходят для всех проектов - кто-то, кто поддерживает унаследованное (от до появления структурированного программирования) приложение в течение последних 20 лет, может не очень хорошо использовать Cache для объектно-ориентированного веба. приложения.

Другая проблема заключается в том, что за пределами того, что поставляет Intersystems (поставщик), почти нет библиотек кода, и они не могут конкурировать с чем-то вроде .NET или Java по размеру.

Большим преимуществом является то, что Cache Object Script (современный язык MUMPS) является гораздо большим языком, чем вы обычно получаете внутри базы данных. Это дает больше преимуществ, чем больше бизнес-логики в базе данных.

На самом деле, ИМХО большинство преимуществ Cache появляется, если вы используете его для своей бизнес-логики. Сочетание вашей базы данных и бизнес-логики намного проще, проще добиться высокой производительности и, в частности, не приводит к проблемам долгосрочного обслуживания, когда среда так сильно ее поддерживает.

Недостатком объединения базы данных и бизнес-логики в Cache является то, что перенос либо будет довольно сложным, и обычно ваша бизнес-логика написана на свободном языке, и для ее запуска вам не нужна какая-либо лицензия. Здесь вы в значительной степени находитесь в той же лодке, как если бы ваша бизнес-логика была на TSQL, за исключением того, что портировать ее еще сложнее.

Если ты О.К. с этим, однако, многие вещи прекрасны. Нет ORM - коммерческий или ручной код. SQL скомпилирован в код, который вы можете посмотреть (он сгенерирован таким образом, что он оптимизирован для скорости по сравнению с читабельностью, а имена переменных могут быть такими, как 'T32', но он все равно читаем, если вам нужно), даже через шаг или точку останова. Стоимость написания SQL-курсоров очень низкая. Вы можете написать объектно-ориентированный код. Это интерпретируется, так что легче развиваться быстро. Если вам нужна скорость, вы можете отключить транзакции и перейти к No SQL.

Мне также было очень легко управлять. В большей части моего опыта работы с ним нет такого понятия, как администратор баз данных - он вам просто не нужен.

4 голосов
/ 17 августа 2010

Межсистемный кэш может быть определен как объектно-ориентированная база данных.

На мой взгляд, это обычная база данных СУБД с объектно-ориентированным механизмом сценариев. В Oracle хранятся процы, в кэше - объектный скрипт.

Мы переходим на Intersystems Cache, чтобы воспользоваться их инструментами BI и отчетности. Я до сих пор не сталкивался с ситуацией, которая не может быть решена с помощью хранимой процедуры MySQL или Oracle. Я предпочитаю писать все в процедурах SQL, чтобы избежать головной боли в будущем.

Люди с сильным объектно-ориентированным фоном могут предпочесть использование ObjectScript.

На случай, если вы этого не видели, вот их документация

1 голос
/ 03 марта 2017

Это не СУБД по замыслу. Это объектная база данных. Вы можете использовать интерфейс sql и видеть данные, как поступающие из традиционной РСУБД.

Я пробовал это несколько лет назад, просто для хобби, в основном для обучения.

Одна примечательная вещь состоит в том, что до «всех этих облачных вещей» у них уже была система, где вы можете хранить данные через один узел, и он будет реплицировать их для нескольких других узлов. Так что если вам нужно масштабирование, это можно сделать. Это было около 10 лет назад, когда репликация данных между базами данных была сделана собственными инструментами, afaik. Они утверждают, что существует система с 50 тыс. Человек, работающих в сети с одной базой. Репликация может быть выполнена несколькими способами.

Данные хранятся в деревьях, они называют их глобальными. И все, что вы храните, это дерево. Они имеют доступ к объектам, фактически объекты в базе данных являются объектами на вашем языке (Objectscript, я думаю, у них была поддержка Java). В данных есть реальное наследование (глобальные, называть это таблицей было бы некорректно). Так что нет необходимости в hibernate / orm / jpa / ... вещи.

Хотя язык у них хм. Если вам нравятся лайнеры Perl one, у вас все хорошо. В противном случае это chalenging.

...