InfiniteGraph is a distributed graph database application developed by the California-based company, Objectivity. Companies focused on the relationships within their data make up the primary market for InfiniteGraph. The database is known for its ability to find connections inside large datasets, as well as its robust performance and easy scalability.
InfiniteGraph uses a unique load-based pricing model that allows interested parties to try the software, including full database development, essentially free of charge. Two pricing options exist for companies deciding to fully deploy InfiniteGraph. The first option is “pay as you go,” which sports a run-time usage-based pricing model. Companies with large or classified applications can take advantage of a site-wide license option.
Those interested in using the free demo version of InfiniteGraph need to either have a Java compiler combined with some skill using a command line, or an installed IDE such as Eclipse. Database model development in InfiniteGraph requires at least some basic familiarity with the Java language, considering models and relationships (vertices and edges in InfiniteGraph nomenclature) are defined as Java classes. Once a database is compiled, the InfiniteGraph Visualizer app (included with package) allows for graph navigation and data browsing.
Objectivity might benefit from providing a pre-compiled database with the InfiniteGraph download package, so interested parties can investigate the Visualizer app and the software’s data mining capabilities without the need of a Java compiler and/or having to engage their development staff.
A Tour of the InfiniteGraph Visualizer
InfiniteGraph’s Visualizer is a tool included with the full product that allows the browsing of an InfiniteGraph database. Both the actual data and the database’s metadata can be analyzed with the Visualizer. The app provides a simple to use interface for querying data and viewing a graph model. A user’s layout and working directory preferences can be persisted as a workspace for future recall.
The Visualizer app uses a connection metaphor to load a database for perusal. Creating a new connection involves selecting a database “boot” file (essentially the Java-compiled database) and loading it into the program. Once a database is connected, extra menu entries appear, providing functionality for analyzing a graph database and its model. A convenient button bar also provides quick access to the menu entries.
Figure 1.1: Querying for a “named vertex” in InfiniteGraph’s Visualizer tool.
A user may become confused after not seeing anything once a graph database is connected in the Visualizer. A named vertex must be queried first. Once successfully queried, a graph appears detailing the found vertex and its current “edges” (relationships in traditional database-speak) currently in the database.
In the Visualizer app, highlighting any vertex displays its data in the grid layout located beneath the graph window. In a similar fashion, highlighting an edge between two vertices displays the data for that edge.
Figure 1.2: Displaying private message details between two vertices in the InfiniteGraph Visualizer tool.
The user has a variety of options for the visual layout of the displayed, including Radial, Tree (two different kinds), Grid and Spring. It is also easy to drag and drop the displayed vertices and edges into any layout suitable to the user. The Workspace persistence model includes some nice features related to how graphs are displayed, including fonts and coloring.
Figure 1.3: The preferences dialog in the InfiniteGraph Visualizer application.
In addition to searching by Named Vertex, the user can also find records by entering the ID of the record in question. The Visualizer app also provides a means to limit the number of records in a result set.
The inclusion of an in-app help file would aid the user in making sense of some of less obvious features of the Visualizer, most notably the Index Query Manager functionality. This information is available in documentation at the InfiniteGraph website, but a help file would definitely help connect everything in one vital place.
A quick perusal through one of the sample databases available at the InfiniteGraph website reveals the database’s suitability in quickly finding relationships in a Big Data application. Given the burgeoning popularity of social media applications and their dependence on relationships within the data, there remains little doubt concerning the usefulness of high-performance graph databases like InfiniteGraph.
New Features in InfiniteGraph 2.1
Objectivity recently released version 2.1 of InfiniteGraph which contains some interesting enhancements that provide easier integration with the growing graph database community.
TinkerPop Blueprints: Blueprints is an open source project that supports the property graph database model. It provides a collection of tools and testing frameworks that facilitate the implementation of applications using graphs. In some ways, Blueprints is similar to the popular JDBC and ODBC database connectivity layers used in Java and Microsoft languages, respectively.
Essentially, graph database applications that support Blueprints will work with every database vendor providing a Blueprints-enabled interface. With its Blueprints support, InfiniteGraph 2.1 also features compatibility with the Gremlin graph database traversal language, additionally developed by TinkerPop. Gremlin is fully compatible with Java syntax and is primarily used for graph database querying, manipulating, and analysis.
Support for Blueprints and Gremlin further illustrate InfiniteGraph’s efforts to position itself as a major player in the graph database industry and interested parties already with investments in applications using Blueprints need not worry about losing that development effort should they switch to a InfiniteGraph backed solution.
Plug-in Framework: Version 2.1 of InfiniteGraph includes a new Plug-in Framework to assist developers in leveraging their graph database development efforts. The framework allows the developer to modularize commonly used queries and tests, supporting code reuse with the hopes of improving developer productivity.
Two basic types of plug-ins are supported. The Navigator plug-in type specializes in traversal queries, like result and path qualifiers. On the other hand, the Formatter plug-in is primarily used for formatting result outputs from graph queries. Both plug-in types are usable in the InfiniteGraph Visualizer as well as applications using InfiniteGraph as a database.
Improved Visualizer Integration: The new Plug-in Framework in InfiniteGraph improves the functionality of the included Visualizer application. As previously mentioned, plug-ins can be imported for use in the Visualizer. Formatter plug-ins now support export into GraphML and JSON formats directly from the Visualizer. Support for user-defined export formats is also included.
InfiniteGraph is definitely a major force in the growing world of graph databases. The database sports fast querying and retrieval of records, making it highly suitable for applications needing that specialized “find a needle in a haystack” functionality.
Its free to develop and deploy pricing model is perfect for both start-ups and for specialized projects at larger organizations. This versatile pricing model also provides flexibility for both growing companies and firms needing a measure of cost certainty.
Those curious in looking at InfiniteGraph 2.1 need to be aware of the Java language requirements of the software. Some familiarity with Java syntax and compilers or even a fully-fledged IDE like Eclipse is a requirement to get started with InfiniteGraph.
The new features of InfiniteGraph enhance developer productivity with the addition of plug-in support while compatibility with Blueprints and Gremlin cement the database’s relevance in the graph database space. Organizations curious about graph databases would do well to check out InfiniteGraph. Time is the only initial cost.