AllegroGraph

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:24, 6 июня 2018.
AllegroGraph
Allegro1.jpg
Логотип разработчика
Разработчики: Franz Inc
Постоянный выпуск: 6.0.3/ Октябрь 24, 2017
Написана на: Common Lisp
Операционная система: Microsoft Windows (32 и 64-разрядные), MacOS X (intel, 32-бит, 64-бит), Linux (32 бит и 64 бит)
Лицензия: Проприетарное программное обеспечение.
Веб-сайт franz.com/agraph/allegrograph/

AllegroGraph – современная, высокопроизводительная, устойчивая графическая база данных с закрытым исходным кодом. AllegroGraph совмещает эффективное использование оперативной памяти с использованием дисковых хранилищ, что позволяет ему масштабировать миллиарды четверок (quads), сохраняя при этом высокую производительность. Поддерживает языки запросов к данным SPARQL, RDFS + + и Prolog и автоматически использует те из них, которые совместимы с приложениями пользователя. AllegroGraph разрабатывает фирма Franz Inc, которая широко известна благодаря таким продуктам, как TopBraidComposer (редактор онтологий), RacerPro (OWL DL онтология) и др. [Источник 1]

В настоящее время используется в проектах с открытым исходным кодом, в коммерческих проектах и проектах Министерства обороны США. Используется в качестве компонента хранения данных в проекте TwitLogic, привнесшем концепцию Семантической паутины в систему обработки данных социальной сети Twitter [Источник 2].

Описание

Разработчиком Allegrograph является Franz Inc. AllegroGraph был разработан в соответствии со стандартами консорциума Всемирной паутины для Resource Description Framework, поэтому он считается базой данных RDF , своего рода RDF-хранилищем. Первая версия AllegroGraph была выпущена в конце 2004 года.

AllegroGraph поддерживает языки Clojure и LISP, Java, Python, Ruby, Perl, C#. Продукт доступен для 32 и 64 – разрядных операционных систем, таких как Windows, Linux и Mac OS X.

FranzInc также разрабатывает проект AGWebView, который представляет собой Web-интерфейс для AllegroGraph.

Системные требования

Сервер для загрузки необходимых файлов продукта AllegroGraph запускается автоматически на ОС Linux 86-64 разрядных версий. Для того, чтобы запустить продукт на других ОС рекомендуется установить программу Linux Virtual Machine или EC2.

Требования для виртуальной машины (требуется 64-разрядное оборудование):

  • Для ОС Linux (х86-64), с glibc 2.11 и выше - Apple для Mac OSX 10.9 и новее;
  • Для Amazon EC2 (Linux x86-64) - 32 или 64-разрядная версия Microsoft Windows.

Виртуальная машина позволит запустить версию AllegroGraph Linux в операционной системе Windows или Mac. Производительность будет медленнее, чем при запуске в исходном формате, поэтому рекомендуется сначала установить AllegroGraph на Linux, для оценки эффективности.

Особенности

AllegroGraph спроектирован для работы с максимальной скоростью загрузки и запроса. Загрузка четверок (quads), через высоко-оптимизированные синтаксические RDF/XML- и N-Quads-анализаторы, является лучшей в своем классе, особенно в области работы с большими файлами. В 2004 году AllegroGraph (версия 1.0) стала первой базой данных, способной загружать и индексировать 1 миллиард триплетов, используя архитектуру x86 на 64-битном оборудовании. И в дальнейшем, эта специализированная графическая база данных NoSQL (а не просто усовершенствованная РСУБД) продолжила наполнять рынок инновациями - так, в 2008 году на конференции SemTech 10 млрд. четверок (quads) были загружены на облачный веб-сервис Amazon EC2. Присущие Allegrograph возможности автоматического управления доступом ко всем аппаратным средствам с целью максимизации загрузки, а также широкие возможности индексации и запросов существенно подняли планку производительности для баз данных RDF.

Все особенности:[Источник 3]

  • Полное соответствие требованиям ACID и поддержка операций фиксации, отката, и контрольных точек(Commit, Rollback, and Checkpointing.);
  • Полная и быстрая восстанавливаемость;
  • Полная одновременность чтения, почти полная одновременность записи;
  • Создание резервных копий онлайн, задание точки восстановления системы (Point-in-Time Recovery), репликация, теплый резерв (Warm Standby);
  • Динамическая и автоматическая индексация - все зафиксированные тройки всегда индексируются;
  • Расширенное индексирование текста - индексирование текста на предикат;
  • Объединение в одно целое платформы SOLR и СУБД MongoDB;
  • Поддерживает языки Java Sesame, Java Jena, Python, C#, Clojure, Perl, Ruby, Scala и Lisp;
  • Симметричная мультипроцессорность (SMP) - автоматическое управление ресурсами (Automatic Resource Management) для всех процессоров и дисков и оптимизированное использование памяти;
  • Сжатие индексов на основе столбцов - снижение подкачки, повышение производительности;
  • Тройной уровень безопасности с фильтрами безопасности;
  • Облачный AllegroGraph - Amazon EC2;
  • RDF - сервер AllegroGraph может быть создан с помощью языка JavaScript;
  • Интерфейс на основе JavaScript (JIG) для общего обхода графов;
  • Поддержка алгоритма Soundex (сравнение двух строк по их звучанию) позволяет свободно выполнять индексирование текста на основе фонетического произношения;
  • Показатели, задающиеся пользователем, полностью контролируемые системным администратором;
  • Клиент-серверная архитектура GRUFF с графическим построителем запросов;
  • Подключаемый интерфейс для текстовых индексаторов;
  • Специализированные (dedicated) и открытые сеансы - в специализированных (dedicated) сеансах пользователи могут работать со своими собственными наборами правил для одной и той же базы данных.

Архитектура

Архитектура AllegroGraph

AllegroGraph основана на архитектуре REST. Поддерживаются адаптеры для различных языков, таких как Sesame Java, Sesame Jena, Python с использованием Sesame и Lisp (фрейморки). Есть адаптеры свободного доступа для проектов на языках C#, Ruby, Clojure, Scala и Perl.

Семантическая сеть

Логическая схема хранения информации, связанной с Джансом и его питомцами (пример логической схемы хранения данных в AllegroGraph)

AllegroGraph представляет собой базу данных. Для хранения самой разной информации, существует несколько способов, регламентированных W3C для Resource Description Framework (RDF). Один из них основывается на использовании триплетов. Триплет - основной ресурс данной базы данных, построенный в форме логического утверждения. Каждый триплет имеет структуру: «субъект — предикат — объект». При наличии множества разных триплетов с различными контекстами существует возможность добавить дополнительный слот для каждого утверждения-триплета, который будет называться по имени графа.

В семантических сетях веб-страницы содержат достаточное количество данных для того, чтобы машина смогла управлять ими так же легко, как это сейчас делают люди. Таким образом, AllegroGraph представляет собой высокопроизводительную базу данных для хранения информации и её запрашивания.

Триплеты, соответствующие утверждениям на картинке выше

Блок-схема данных AllegroGraph

Логическая структура AllegroGraph

Основная часть хранилища AllegroGraph состоит из утверждений-триплетов. Исторически сложилось, что каждое утверждение имеет 5 полей:

  • oSubject ("Субъект") (s);
  • oPredicate ("Предикат" или "Свойство") (р);
  • oObject (Объект) (о);
  • oGraph (Граф) (g);
  • oID (id Триплета) (i).

Все s, p, o и g являются строками произвольного размера. Хранить все повторяющиеся строки неэффективно, поэтому для каждой строки существует собственный уникальный номер (так называемый Unique Part Identifier или UPI). Строковой реестр управляет этими строками, а индивидуальные UPI предотвращают дублирование. Для ускорения запросов, AllegroGraph создает индексы, которые содержат утверждения, а также дополнительную информацию. AllegroGraph может также выполнять полнотекстовый поиск (поиск документов, содержащих произвольные сочетания указанных слов) с помощью предиката FREETEXT в утверждениях, используя значения полнотекстовых индексов (FULLTEXT Indexes).

Также, AllegroGraph обеспечивает возможность восстановления удаленных триплетов.

AllegroGraph и Сеть

Специализированные типы данных

AllegroGraph поддерживает несколько специализированных типов данных для эффективного хранения и поиска геопространственной и временной информации.

Геопространственные данные

AllegroGraph использует новый механизм (алгоритм) для эффективного хранения и поиска геопространственных данных. Поддерживаются как прямолинейные декартовые системы координат, так и сферические. Координаты в двух измерениях кодируются в одной UPI. После того, как данные были закодированы таким образом, AllegroGraph может быстро выполнять следующие виды запросов:

  • bounding-box: возвращает указатель, который перебирает все триплеты в заданной прямоугольной области;
  • center/radius: возвращает указатель, который перебирает все триплеты в заданной круговой области.

Приложения AllegroGraph также способны быстро определять геопространственные данные, используя метод многоугольников:

  • определяя, лежит ли точка внутри или вне заданного многоугольника;
  • определяя, перекрываются ли два многоугольника;
  • осуществляя поиск всех триплетов, которые лежат внутри заданного многоугольника.

Временные данные

AllegroGraph осуществляет эффективное хранение и поиск следующих временных данных:

  • данные дата/время (datetimes), согласно стандарту ISO8601 в следующем формате: "2008-02-01T00:00:00-08:00";
  • моменты времени: ex:point1, ex:h-hour, ex:when-the-meeting-began, и т.п;
  • интервалы времени: ex:delay-interval (say, from point ex:point1 to ex:h-hour).

После того, как данные были закодированы, возможно осуществление запросов, с использованием различных видов временных связей с данными, включая связи между:

  • моментами времени и datetimes
  • интервалами времени и datetimes
  • двумя моментами времени
  • двумя интервалами времени
  • моментами времени и интервалами

Программирование с AllegroGraph

AllegroGraph работает с несколькими языками программирования и средами.

  • Java

Клиентский интерфейс Java реализует большинство Sesame и\ Jena интерфейсов для доступа к хранилищам удаленных RDF.

  • Python

API для Python предлагает удобный и эффективный доступ к серверу AllegroGraph на основе приложения Python. Этот API предоставляет методы для создания, запросов и сохранения данных RDF, для управления сохраненными триплетами.

  • HTTP

Веб-разработчики и программисты могут работать с AllegroGraph 4.12.1, используя протокол RESTful HTTP (GET, PUT, POST) для добавления и удаления триплетов, а также для запроса отдельных триплетов.

  • Так же поддерживается язык Lisp.

Конкуренты

Как и у всех компаний в мире и любого программного обеспечения, у Franz Inc с его AllegroGraph сущестувуют свои конкуренты. Ими являются RDF хранилища BigOWLIM, PelletDb, СУБД Neo4J и InfiniteGraph.

Источники

  1. AllegroGraph // Обзор постреляционных СУБД / URL: http://docplayer.ru/29084601-Obzor-postrelyacionnyh-subd-allegrograph.html (дата обращения: 24.03.2018)
  2. AllegroGraph // Wikipedia [2001-2018] / URL: https://en.wikipedia.org/wiki/AllegroGraph (дата обращения: 24.03.2018)
  3. AllegoGraph features // Franz Inc. / URL: https://franz.com/agraph/allegrograph/ (дата обращения: 24.03.2018)

Ссылки