VMDS

редактировать

VMDS сокращает реляционный технология базы данных под названием Version Managed Data Store, предоставляемая GE Energy как часть ее технологической платформы Smallworld и с самого начала была разработана для хранения и анализа очень сложных пространственных и топологические сети, обычно используемые корпоративными коммунальными предприятиями, такими как распределение электроэнергии и телекоммуникации.

VMDS был первоначально представлен в 1990 году и с годами совершенствовался и обновлялся. Текущая версия - 6.0.

VMDS был разработан как пространственная база данных. Это дает VMDS ряд отличительных характеристик по сравнению с обычными реляционными базами данных только с атрибутами.

Содержание
  • 1 Распределенная серверная обработка
  • 2 Поддержка длинных транзакций
  • 3 Пространственные и топологические возможности
  • 4 Абстракция данных
  • 5 См. Также
Распределенная серверная обработка

VMDS состоит из двух частей: простого, хорошо масштабируемого сервера блоков данных под названием SWMFS (Smallworld Master File Server) и интеллектуального клиента API, написанного на C и Мэджик. Пространственные и атрибутные данные хранятся в блоках данных, которые находятся в специальных файлах, называемых файлами хранилища данных на сервере. Когда клиентское приложение запрашивает данные, оно обладает достаточным интеллектом, чтобы разработать оптимальный набор требуемых блоков данных. Затем этот запрос передается в SWMFS, которая возвращает данные клиенту через сеть для обработки.

Этот подход особенно эффективен и масштабируем при работе с пространственными и топологическими данными, которые имеют тенденцию течь в больших объемах и требуют большей обработки, чем обычные данные атрибутов (например, во время операции перерисовки карты). Такой подход делает VMDS хорошо подходящим для развертывания на предприятии, которое может включать сотни или даже тысячи одновременно работающих клиентов.

Поддержка длинных транзакций

Реляционные базы данных поддерживают короткие транзакции, в которых изменения данных относительно малы и кратки по продолжительности (максимальный период между началом и конец транзакции обычно составляет несколько секунд или меньше).

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

Из-за продолжительности длительной транзакции в этом контексте количество изменений может быть значительным (не только в рамках транзакции, но и в контексте базы данных в целом). Соответственно, вполне вероятно, что одна и та же запись может быть изменена более одного раза. Чтобы справиться с этим сценарием, VMDS имеет встроенную поддержку для автоматического управления такими конфликтами и позволяет приложениям просматривать изменения и принимать только те изменения, которые являются правильными.

Пространственные и топологические возможности

Наряду с обычными функциями реляционной базы данных, такими как запросы атрибутов, поля соединения, триггеры и вычисляемые поля, VMDS имеет множество пространственных и топологических возможностей. Это позволяет сохранять и анализировать пространственные данные, такие как точки, тексты, полилинии, полигоны и растровые данные.

Пространственные функции включают в себя: поиск всех объектов внутри многоугольника, вычисление многоугольников Вороного набора участков и выполнение кластерного анализа набора точек.

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

Абстракция данных

В VMDS все данные представляются приложению как объекты. Это отличается от многих реляционных баз данных, которые представляют данные в виде строк из таблицы или результата запроса с использованием, скажем, JDBC. VMDS предоставляет инструмент моделирования данных и базовую инфраструктуру как часть технологической платформы Smallworld, которая позволяет администраторам связывать таблицу в базе данных с образцом (или классом) Magik. Методы Magik get и set для примера Magik могут быть автоматически сгенерированы, которые открывают поле (или столбец) таблицы. Каждая строка VMDS проявляется в приложении как экземпляр объекта Magik и известна как RWO (или объект реального мира). Таблицы на языке Smallworld известны как коллекции.

# all_rwos содержит все строки в базе данных и является неоднородным all_rwos << my_application.rwo_set() # valve_collection holds the valve collection valves << all_rwos.select(:collection, {:valve}) number_of_valves << valves.size

Запросы создаются с использованием объектов предикатов:

# находят «открытые» клапаны. open_valves << valves.select(predicate.eq(:operating_status, "open")) number_of_open_valves << open_valves.size
_for valve _over open_valves.elements () _loop write (valve.id) _endloop

Соединения реализованы как методы на родительском RWO. Например, у менеджера может быть несколько сотрудников, которые ему подчиняются:

# получить коллекцию сотрудников. сотрудники << my_application.database.collection(:gis, :employees)
# найдите менеджера по имени "Стив" и получите первый соответствующий элемент steve << employees.select(predicate.eq(:name, "Steve").and(predicate.eq(:role, "manager")).an_element()
# отобразите имена его непосредственных подчиненных. имя - это поле (или столбец) # в коллекции (или таблице) сотрудников _for сотрудника _over steve.direct_reports.elements () _loop write (employee.name) _endloop

Выполнение транзакции:

# каждый ключ в хэш-таблице соответствует имени поля (или столбца) в # коллекции (или таблице) valve_data << hash_table.new_with( :asset_id, 57648576, :material, "Iron")
# получить коллекцию клапанов напрямую valve_collection << my_application.database.collection(:gis, :valve)
# создать транзакцию вставки для вставки нового Запись клапана в коллекцию может содержать комментарий #, описывающий транзакцию транзакции << record_transaction.new_insert(valve_collection, valve_data, "Inserted a new valve") transaction.run()
См. также
Последняя правка сделана 2021-06-18 07:46:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте