Фактически Virtuoso - это целый набор приложений и уровней сервисов, построенных на основе их собственной базы данных SQL, отсюда и понятная путаница.
Native RDF Quad Store - это собственная реализация четырех хранилищ Virtuoso, которая, как вы заметили, по иронии судьбы, на самом деле основана на SQL. Это хранится и реализуется полностью в собственной реализации базы данных SQL Virtuoso. Таким образом, хотя он основан на SQL, он имеет фиксированный макет таблицы и использует пользовательские типы данных для хранения данных.
RDF Triple Store на основе SQL относится к функции коммерческих версий Virtuoso, которая позволяет вам определять правила сопоставления для обработки произвольных нормальных реляционных баз данных (как на основе Virtuoso, так и на других базах данных, например, MySql, PostgreSQL) как хранилище RDF.
Различия в производительности
Разница в производительности происходит из-за того, что хранилище Native Quad имеет известную структуру, настраиваемые типы данных RDF и множество программных оптимизаций, специфичных для него в стеке Virtuoso. Поэтому, когда Virtuoso использует SPARQL и компилирует его в эквивалентный запрос SQL, он чрезвычайно эффективно работает в своей базе данных. Использование настраиваемых типов данных RDF позволяет им передавать всю логику SPARQL на уровень механизма запросов, что также ускоряет оценку.
Для хранилища Triple на основе SQL задействован слой сопоставления, они должны вызвать базу данных SQL (которая может быть внешней) и преобразовать ее содержимое в форму RDF, чтобы затем выполнить вычисления, необходимые для ответа на запросы SPARQL. Этап сопоставления может быть чрезвычайно дорогостоящим и затрудняет оптимизацию запросов, поскольку они имеют доступ к меньшему количеству предварительной информации о данных RDF.
Кроме того, поскольку данные часто находятся только в стандартных типах SQL, они не могут передать определенную логику в базовый механизм запросов, потому что семантика типов SQL и SPARQL во многих случаях не совпадает. Следовательно, значения должны быть извлечены, преобразованы соответствующим образом, а затем результаты выражения вычислены над уровнем механизма запросов и затем возвращены по мере необходимости. Это снижает производительность, поскольку движку приходится переключаться между разными контекстами обработки и потенциально выполнять множество запросов SQL для ответа на один и тот же запрос SPARQL.
person
RobV
schedule
18.07.2013