Где я могу найти детали реализации глобальных объектов Mumps?

Я ищу подробное определение / обсуждение реализации глобальных Mumps. Есть документ под названием «Глобальные системы MUMPS и их реализация», но мне не удалось найти способ заказать его, не говоря уже о доступе к цифровой копии. (напечатано в 75 г.)

В общем, я пытаюсь найти подробное обсуждение внутреннего устройства базы данных Mumps.


person mahonya    schedule 25.09.2012    source источник


Ответы (4)


Я предполагаю, что внутреннее устройство базы данных будет сильно отличаться между различными реализациями MUMPS. Итак, я думаю, вам лучше всего было бы посмотреть, как это делается в реализации MUMPS с открытым исходным кодом:

person Laurent Parenteau    schedule 27.09.2012
comment
Спасибо, похоже, это единственный способ разобраться на данный момент. - person mahonya; 28.09.2012

Взгляните на этот документ, Единый локальный, глобальный и «Типовой дизайн микрокомпьютерной системы против эпидемического паротита» Фрэнка Брауна. Доктор Браун был разработчиком глобальной системы от COMP Consultants Standard MUMPS. Я был разработчиком, на сборке 8086! Да, еще в 1981 году.

По сути, это было простое B-дерево со сжатыми ключами.

person I. J. Kennedy    schedule 23.01.2013
comment
Спасибо. Однако у меня проблемы с доступом к бумаге. Я что-то упускаю или это недоступно в Интернете? - person mahonya; 23.01.2013
comment
@sarikan, ссылка должна перенаправить вас на страницу статьи на citeseer. Найдите (крошечный) значок PDF. Вот прямая ссылка: citeseerx.ist. psu.edu/viewdoc/ - person I. J. Kennedy; 24.01.2013
comment
Я, должно быть, пропустил это раньше. Большое спасибо! - person mahonya; 24.01.2013

Я не совсем уверен, что вам нужно. Глобальные объекты эпидемического паротита - это просто разреженный многомерный массив. Программист может реализовать свою стратегию базы данных по своему усмотрению. Например, база данных клиентов может быть реализована как:

^CUSTOMER(custnum,"NAME")=name
^CUSTOMER(custNum,"ADDRESS")=address
^CUSTOMER(CustNum,"PHONE")=phone

в качестве альтернативы база данных клиентов может быть реализована как:

^CUSTOMER(custNum)=name|address|phoneNum

Здесь я использовал вертикальную черту "|" в качестве разделителя в записи о клиенте. В большинстве реализаций свинки длина строки записи ограничена 32 КБ.

В реляционном смысле глобал CUSTOMER можно рассматривать как таблицу с custNum в качестве ключа и именем, адресом и телефоном в качестве столбцов.

Похожую схему можно использовать для таблицы заказов:

^ORDERS(orderNum)=date|invoiceNum|totalPrice

Чтобы связать клиента с заказом, мы могли бы использовать отдельный глобал:

^custOrders(custNum,orderNum)=""

или, в качестве альтернативы, добавьте их в глобальный список клиентов:

^CUSTOMER(custNum)=name|address|phone
^CUSTOMER(custNum,orderNum)=""

или даже объединить две таблицы в одну глобальную:

^CUSTOMER(custNum)=name|address|phone
^CUSTOMER(custNum,orderNum)=date|invoiceNum|totalPrice

Используемая стратегия зависит от разработчика, она является чрезвычайно гибкой и мощной.

Есть еще пара документов, которые я бы порекомендовал в дополнение к документу, на который вы ссылаетесь выше. Для некоторых основ о глобальных объектах и ​​о том, что они из себя представляют, я бы порекомендовал:

Экстремальное программирование баз данных с глобальными MUMPS

Для более продвинутой темы я рекомендую:

Универсальный движок NoSQL, использующий опробованный и проверенные технологии

Автором обоих документов является Роб Твид, который является своего рода проповедником паротита в своей компании M / Gateway События. Первый документ дает хорошее представление о глобальных объектах эпидемического паротита, а второй - об их использовании в различных стратегиях, включая noSQL.

person igotmumps    schedule 27.09.2012
comment
Спасибо что нашли время ответить. Я имел в виду, как реализована функциональность MUMPS, то есть как глобальные объекты сохраняются на диске (b-tree?), Как работает обработка параллелизма. Я не собираюсь изучать использование MUMPS. Я действительно встретил Роба несколько месяцев назад. Может мне его пинговать :) - person mahonya; 28.09.2012
comment
Большинство реализаций Mumps используют дерево B + для сохранения. В случае GT.M (с которым я наиболее знаком) параллелизм может обрабатываться с транзакциями, поскольку GT.M полностью совместим с ACID. Я ожидал, что Cache будет таким же. - person igotmumps; 10.10.2012

Согласен с предыдущим ответом; Вопрос направлен на детали реализации, которые продавец будет считать собственностью. Есть понимание версий с открытым исходным кодом / исторических версий, но Cache и текущие версии будут отличаться по мере того, как они получат свои современные возможности масштабирования.

person lschofield    schedule 13.12.2012
comment
Это ответ или комментарий? - person WEFX; 14.12.2012
comment
Ответ - Внутреннее устройство базы данных MUMPS оставлено на усмотрение создателя и не является частью стандарта. Сбалансированные деревья - это исторический подход, но специфика записи файлов остается на усмотрение разработчика. Комментарий, изменяющий потерянный контекст, я имел в виду ответ Лорана Паренто. Участие в проектах с открытым исходным кодом, вероятно, единственный способ получить подробное определение и обсуждение; Я предполагаю, что доминирующий поставщик будет считать их информацию частной. - person lschofield; 22.08.2013