AnzoGraph

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:07, 13 февраля 2019.
Anzograph
Anzograph.png
Создатели: Anzograph
Разработчики: Anzograph
Выпущена: 2007
Постоянный выпуск: 4.0.8 / 4 февраля 2018 года
Состояние разработки: Развивается
Написана на: C и C++
Операционная система: Кросс-платформенное ПО
Платформа: x86-64
Локализация: Английский
Тип ПО: DBMS
Лицензия: Проприетарное
Веб-сайт cambridgesemantics.com/product/anzograph/

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

Особенности и преимущества

Встроенная база данных графиков.

AnzoGraph создан для обработки графиков нагрузки по всему стеку вычислений, от языка запросов до базы данных и подсистемы управления памятью, а также файловой системы. Данные хранятся в собственном формате, на диске или в памяти. Использованная в AnzoGraph органическая графовая модель позволяет избежать накладных расходов, которые обычные Графовые базы данных используют для имитации обхода графа и переформатирования данных на диске. AnzoGraph обрабатывает запросы быстрее, лучше масштабируется и эффективно работает на аппаратных, виртуальных или облачных платформах с обязательным аргументом group. [Источник 1].

Массивно-параллельная архитектура

AnzoGraph - это графовая СУБД с массивно-параллельной архитектурой (англ. massive parallel processing, MPP). Его сжатая память и хранение данных на дисках и архитектура MPP обеспечивают чрезвычайно быструю загрузку данных в реальном времени и интерактивную аналитику при огромном объеме данных.

Производительность в масштабе

AnzoGraph масштабируется в соответствии с вашими потребностями путем распределения данных графа по узлам кластера и параллельной обработки запросов на всех узлах. Благодаря MPP и быстрой реализации сети внутри кластера, нагрузка и производительность запросов увеличивается по мере роста данных и размера кластера.

Графическая технология OLAP

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

Загрузка данных в AnzoGraph

Требования к загрузке и рекомендации

Загрузка данных в AnzoGraph из файлов файловой системы AnzoGraph, удаленного веб-сервера или смонтированной файловой системы [Источник 1]. .

Поддерживаемые для загрузки файлы

Turtle (.ttl файл): Краткий, тройной RDF язык, который записывает графики RDF в сжатом виде.

N-Triple (.n3 и .nt файлы): подвид Turtle, реализованный в более простой форме.

N-Quad (.nq и .nt файлы): N-Triple с пустым значением узла или графика.

TriG (.trig файл): расширение Turtle, поддерживающее полный набор данных RDF.

CSV (.csv файл): формат значений, разделенных запятыми.

Имеется возможность сжатия любого из типов файлов, и загрузка GZIP (.gz файлы) в базу данных. Кроме того, AnzoGraph поддерживает загрузку архивов, содержащих файлы загрузки. Например, если у вас есть каталог сжатых TTL файлов, вы можете создать tar каталог и загрузить результат .ttl.gz.tar.

Требования к имени каталога

Важно организовать загрузку файлов в каталоги по типу расширения файла и включить расширение типа файла в имени каталога. Например, поместить TTL-файлы в имя.название каталога, поместите TRIG файлы в name.ttl директорию, поместить NQ файлы в name.nq, и так далее.

Требования к Web-Серверу

При загрузке каталогов файлов с веб-сервера (HTTP/S URLs) необходимо подключить ls.dir файл оглавления в корневом каталоге, который содержит файлы, подготовленные для загрузки. Если у вас есть сервер данных с несколькими каталогами, и вы планируете загружать по одному каталогу за раз, подключите ls.dir файл в каждом каталоге. Если у вас есть сервер с несколькими каталогами, и вы планируете загружать сразу из всех каталогов, включите ls.dir файл на верхнем уровне сервера. Все ls.dir файлы должны включать только имена файлов и список файлов в любых подкаталогах. Выполните следующую команду, чтобы создать общ.файл dir:

find . -type f -print| sed 's/\.\///g' |grep -v ls.dir| tee ls.dir 

Сведения об архитектуре и производительности

В зависимости от того, как и где вы размещаете файлы загрузки, AnzoGraph загружает файлы параллельно, используя все доступные ядра на сервере или все серверы в кластере. Расположение загружаемых файлов и количество серверов, которые могут получить доступ к этим файлам, влияют на производительность сети и нагрузки. Для оптимальной производительности разбейте данные на несколько файлов меньшего размера и убедитесь, что все серверы в кластере имеют доступ к файлам. Например, в четырехузловом кластере с общим количеством виртуальных ядер - 256, AnzoGraph достигает наилучшей производительности при загрузке, когда все четыре узла могут получить доступ к файлам, а число файлов кратно 256, так что все 256 ядра загружают файлы параллельно.

  • При загрузке данных из одного файла, загрузку выполняет только ведущий сервер. Например, в кластере с 8 узлами загрузка одного файла использует только 1/8 ресурсов ЦП кластера для загрузки данных. Загрузка одного большого файла может занять больше времени, чем загрузка каталога файлов, к которым имеют доступ все серверы AnzoGraph.
  • При загрузке данных из каталогов файлов, доступных только главному серверу, загрузку выполняют только ядра ведущего сервера. Например, в кластере с 4 узлами, где каждый сервер имеет 32 ядра (всего 128 ядер), нагрузку выполняет только ведущий сервер, то есть AnzoGraph загружает 32 файла одновременно.
  • Когда файлы находятся в S3, на веб-сервере или в смонтированной файловой системе, а ведущие и вычислительные серверы имеют доступ к этим файлам, все серверы загружают подмножество файлов. Например, на 4-узловом кластере, где каждый сервер имеет 32 ядра, 128 ядер будут работать параллельно для загрузки данных, т. е. anzograph загружает 128 файлов одновременно.

Загрузка файлов Triple и Quad

Синтаксис загрузки

Выполните следующую инструкцию, чтобы загрузить данные из файлов Turtle, N-Triple, N-Quad или TriG [Источник 1].

LOAD [ WITH 'leader' | 'compute' | 'global' ] <URL> [ INTO GRAPH <graph_name> ] 

leader - данный атрибут прописывается при загрузке файлов, к которым может получить доступ только ведущий сервер. Является значением по умолчанию для оператора LOAD.

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

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

<URL> - обязательный атрибут для указания URL-адрес сервера, каталога или файла, который вы хотите загрузить. При указании каталога AnzoGraph загружает все допустимые файлы в этом каталоге.

<graph_name> - необязательный атрибут, необходимый при загрузке файлов, таких как Turtle или N-Triple без спецификаций графика для указания графика загрузки данных. Если график не существует, система автоматически создаст его, а затем загрузит в него данные. Если график не указан, AnzoGraph загружает данные по умолчанию в график.

Загрузка табличных файлов

Добавление табличного синтаксиса

Загрузите данные из CSV-файлов, написав запрос INSERT с атрибутом TABLE, в котором указываются создаваемые параметры, загружаемый файл или файлы разделитель, используемый в CSV-файлах, и схема. Используйте следующий синтаксис для записи запроса INSERT для загрузки данных из CSV-файлов. В приведенной ниже таблице описаны все параметры предложения TABLE [Источник 2].

[ PREFIX ... ]
INSERT { quad_or_triple_patterns }
WHERE {
TABLE <URL>
('Content-Type'='type',['Filesystem'='access_type',]
Schema'='delimiter header_indicator,column_name:data_type[ ,... ]')

Примеры

В следующем примере загружается один файл CSV в локальной файловой системе на одном экземпляре AnzoGraph. Поскольку среда представляет собой один сервер, параметр файловой системы в предложении TABLE опущен. Разделителем в файле является запятая, файл содержит заголовки и имеет восемь столбцов:

[ PREFIX ... ]
PREFIX : <http://cambridgesemantics.com/#>
INSERT { GRAPH <http://cambridgesemantics.com/movies> {
:MovieBookData a :MovieBooks;
:MovieID ?MovieID;
:MovieTitle ?MovieTitle;
:MovieAbstract ?MovieAbstract;
:MovieBookID ?MovieBookID;
:MovieBookName ?MovieBookName;
:MovieBookAbstract ?MovieBookAbstract;
:MovieBookAuthorID ?MovieBookAuthorID;
:MovieBookAuthorName ?MovieBookAuthorName;
}
}
WHERE { TABLE <dir:/home/user/movie.csv/MovieAbstractBook.csv>
        ('Content-Type'='text/CSV','Schema'=',H,MovieID:long,MovieTitle:char,
          MovieAbstract:char,MovieBookID:long,MovieBookName:char,MovieBookAbstract:char,
          MovieBookAuthorID:long,MovieBookAuthorName:char')
}

Анализ загрузки файлов без загрузки данных

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

Синтаксис запроса

Синтаксис, используемый для запроса файлов загрузки, зависит от типа файла:

  • Для файлов в triple или quad форматах, например Turtle (.ttl), N-Triple (.n3 и .nt), N-Quad (.nq и .quads) и TriG (.trig) нужно использовать синтаксис в Triple или Quad формате.
  • Для анализа файлов в табличном формате, например CSV-файлов, используйте синтаксис табличного формата.

В настоящее время AnzoGraph не поддерживает предварительный анализ XML-или JSON-файлов.


Triple или Quad форматы

Используйте следующий синтаксис для анализа файлов в формате triple или quad:

SELECT expression
FROM EXTERNAL <dir:/path/dir_or_file_name>
[ FROM EXTERNAL <dir:/path/dir_or_file_name> ]
WHERE { triple_patterns }

Табличный формат

Используйте следующий синтаксис для анализа CSV-файлов:

SELECT expression
WHERE {
TABLE <dir:/path/dir_or_file_name>
('Content-type'='type','Filesystem'='access_type',
'Schema'='delimiter header_indicator,number_of_columns')
quad_or_triple_patterns

Выборочная загрузка данных из файлов

Если вы не хотите загружать все данные в файлы, AnzoGraph позволяет вручную выбрать данные для загрузки, написав запрос INSERT, определяющий данные, которые будут включены [Источник 2].

Синтаксис вставки данных из файлов

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

  • Для файлов в triple или quad форматах, например Turtle (.ttl), N-Triple (.n3 и .nt), N-Quad (.nq и .quads), и TriG (.trig) используйте синтаксис в формате Triple и Quad.
  • Для файлов в табличном формате, таких как CSV-файлы, следуйте синтаксису в разделе "Загрузка табличных файлов".
[ PREFIX ... ]
INSERT { quad_or_triple_patterns }
USING [ NAMED ] EXTERNAL <URL_to_file>("content-type"='type',"filesystem"='access_type')
[ ... ]
WHERE { quad_or_triple_patterns }

Источники

  1. 1,0 1,1 1,2 AnzoGraph // cambridgesemantics. [2009—2018]. Дата обновления: 05.03.2018. URL: https://www.cambridgesemantics.com/product/anzograph (дата обращения: 05.01.2019).
  2. 2,0 2,1 cambridgesemantics/anzograph // hub.docker. [2019—2019]. Дата обновления: 23.01.2019. URL: https://hub.docker.com/r/cambridgesemantics/anzograph (дата обращения: 29.01.2019).