Где я могу найти детали реализации глобалов Mumps?
Я ищу подробное определение / обсуждение реализации глобальных изменений Mumps. Существует документ под названием "Глобальные таблицы MUMPS и их реализация", но мне не удалось найти какой-либо способ заказать его, не говоря уже о доступе к цифровой копии. (было напечатано в 75)
В общем, я пытаюсь найти подробное обсуждение внутренних данных базы данных Mumps.
4 ответа
Я предположил бы, что внутренняя часть базы данных будет сильно отличаться между различными реализациями MUMPS. Поэтому я думаю, что вам лучше всего посмотреть, как это делается в реализации MUMPS с открытым исходным кодом:
Взгляните на эту статью Фрэнка Брауна " Унифицированный локальный, глобальный и рутинный дизайн для микрокомпьютерной системы Mumps". Доктор Браун был разработчиком глобальной системы в COMP Consultants Standard MUMPS. Я был исполнителем, в сборке 8086! Да, еще в 1981 году.
По сути, это было простое B-дерево со сжатыми ключами.
Я не совсем уверен, что вы после. Глобальный паротит - это просто редкий многомерный массив. Программист может свободно реализовывать свою стратегию базы данных по своему усмотрению. Например, база данных клиентов может быть реализована как:
^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 Developments. Первый документ дает хорошее представление о глобалах паротита, а второй - об их использовании в различных стратегиях, включая noSQL.
Согласен с предыдущим ответом; вопрос направлен на детали реализации, которые будут считаться собственником собственника. Существует понимание версий с открытым исходным кодом / исторических версий, но Cache и текущие версии будут отличаться, когда они попадают в свои современные возможности масштабирования.