Current Release

This documentation covers the latest release of VIVO, version 1.14.x.
If you are able to help contribute to this documentation, please contact vivo at lyrasis dot org
Looking for another version? See all documentation.

SDB vs TDB

Starting with VIVO v1.11.1, the default database of VIVO switched from Jena SDB to Jena TDB. The Jena project 'retired' SDB at the end of 2020.


VIVO can optionally use MySQL as a backing store for Jena SDB. Whilst VIVO / Jena will create the necessary tables for the triple store, first SDB must be enabled and a database (schema) and authentication details need to have been created.

First, select and enable SDB in applicationSetup.n3 by replacing :hasContentTripleSource :tdbContentTripleSource ; with :hasContentTripleSource :sdbContentTripleSource ;

applicationSetup.n3
:application
    a   vitroWebapp:application.ApplicationImpl ,
        vitroWebapp:modules.Application ;
    :hasSearchEngine              :instrumentedSearchEngineWrapper ;
    :hasSearchIndexer             :basicSearchIndexer ;
    :hasImageProcessor            :iioImageProcessor ;
    :hasFileStorage               :ptiFileStorage ;
    :hasContentTripleSource       :tdbContentTripleSource ;
    :hasConfigurationTripleSource :tdbConfigurationTripleSource ;
    :hasTBoxReasonerModule        :jfactTBoxReasonerModule .

Next, uncomment the block describing :sdbContentTripleSource

applicationSetup.n3
:sdbContentTripleSource
    a   vitroWebapp:triplesource.impl.sdb.ContentTripleSourceSDB ,
        vitroWebapp:modules.tripleSource.ContentTripleSource .


To create the backing database, log in to MySQL as a superuser (e.g. root) 

$ mysql -u root -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.9 MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> CREATE DATABASE vitrodb CHARACTER SET utf8;
mysql> GRANT ALL ON vitrodb.* TO 'vitrodbUsername'@'localhost' IDENTIFIED BY 'vitrodbPassword';
mysql> FLUSH PRIVILEGES;

For MySQL 8+, the second command must be split into two commands like so:

mysql> CREATE USER 'vitrodbUsername'@'localhost' IDENTIFIED BY 'vitrodbPassword';
mysql> GRANT ALL PRIVILEGES ON vitrodb.* TO 'vitrodbUsername'@'localhost';
mysql> FLUSH PRIVILEGES;

Finally, you will need to edit runtime.properties and ensure that the VitroConnection properties are correct for your database engine. They should look something like this.

VitroConnection.DataSource.url = jdbc:mysql://localhost/vitrodb
VitroConnection.DataSource.username = vitrodbUsername
VitroConnection.DataSource.password = vitrodbPassword
  • No labels
Write a comment...