Architecture

Graphlytic is a web application which is accessible in web browser. It uses Neo4j graph database.

Graphlytic

Graphlytic is a web application implemented in Java. Web application is delivered with Jetty Web server and can be started directly without deployment to any web server. Frontend of Graphlytic uses HTM5, JS, CSS.

Neo4j Server

Graphlytic visualize data from Neo4j database. You can use existing Neo4j database or install a new one. Existing data in Neo4j stays unchanged because Graphlytic don't execute any change to existing data if it is not required by user. For better safety and data separation we recommend to use separate Neo4j database to work with Graphlytic.

Communication

Browser communicate with Graphlytic over HTTP or HTTPS. Graphlytic uses Bolt or REST protocol to communicate with Neo4j Server. Communication between Graphlytic and Neo4j Graphlytic Plugin is possible only through REST and it is not possible through Bolt (see more in next chapter).

Read security to know more about securing connections.

images/download/attachments/15433920/graphlytic_architecture.png

Neo4j plugin

Graphlytic requires some advanced features which are not delivered with Neo4j. There is plugin a for Neo4j delivered with Graphlytic installation package and has to by copied into Neo4j during installation. Plugin extends Neo4j ServerPlugin API and uses REST interface. Plugin is not implemented as Neo4j Procedure because Neo4j Procedure doesn't allow to create new transactions and/or spawning threads which is required by this plugin. This means that communication with this plugin is possible only through REST and it is not possible through Bolt.

Indexer

It uses Neo4j indexes but make some logic to get required fulltext index. Stores which fields has to be indexed int fulltext index and provide automatic indexing for nodes during commit phase.

Indexing is not using fulltext configuration which can be done in Neo4 configuration file because configuration of indexer should be done in GUI of Graphlytic during runtime of Graphlytic. Check Node index or Relationship index to see how to configure indexer.

Data audit

Audit data changes into log file. Every change (create, update, delete) of data nodes and relationship is written into log file. This can be disabled by configuration (see Logging chapters in installation manual).

Widgets

Graphlytic functionality can be extended by widgets. You can create and deploy your own widgets. Widget is group of javascript, css and html files. Be careful about content of these custom files because deploy of these files can cause security vulnerability of Graphlytic.

Icons

Graphlytic contains Using internal or external icons but you can use your own icons in Graphlytic visualizations. Supported files are: jpg, png, gif.

ETL engine

ETL engine contains several drivers for databases: Postgresql, MySQL, MSSQL, Oracle, DB2, Derby, H2, HSQLDB, Sybase, XSL. Not all JDBC drivers are included in Graphlytic.

ETL engine contains other drivers: CSV, Neo4j, Mail, Groovy, Log, Text, XPath and more. ETL engine is configured in XML.

Using combination of driver you can create many scenarios. Here is a small overview of using scenarios which can be configured. Some examples are in Administration manual (see ETL job examples).

images/download/thumbnails/15433920/etl_1.png

Example 1: Load data from SQL database by SQL query and insert every record of result into CSV file.

images/download/thumbnails/15433920/etl_2.png

Example 2: Load data from CSV into Neo4j using Cypher (LOAD CSV command).

images/download/attachments/15433920/etl_3.png

Example 3: Load data from SQL database by SQL query, transform every record of result by Groovy (for example remove special characters) then insert every transformed record into CSV file. After this load data from CSV into Neo4j using Cypher (LOAD CSV command).

images/download/attachments/15433920/etl_4.png

Example 4: Load data from Neo4j using Cypher query, transform every record of result by Groovy and append every record into result string. Send string as html mail to several recipients.

Graphlytic data

Graphlytic stores its data into HSQL database which is delivered with Graphlytic installation. HSQL is embedded in Graphlytic and it starts automatically when Graphlytic is started. Graphlytic doesn't store any data into Neo4j database. Graphlytic only created indexes in Neo4j database.