Hello hello! I’m excited to announce the latest release of G.V(), 2.16.27, packed full of user experience/quality of life improvements for the software as well as some extra goodies.
Free trials are now up to a month!
So far, to allow users to trial G.V() Pro, we’ve been offering a 2 weeks trial which should give most people enough time to play with all of its features. We’ve also been offering users the option to get in touch with us directly to get an extension of typically 2 more weeks. We recognise that not everyone wants to have to ask and more importantly that sometimes during the trial things can get hectic and take the focus away from using our software.
For that reason, we’ve introduced a trial extension feature directly within G.V() – once your trial expires, you’ll be offered to extend it immediately in just one click. The best part is, you don’t even have to ask us anymore! If you aren’t on 2.16.27 yet, simply update G.V() and you’ll be offered the option to get your extensions as shown below:
We hope that this will take the stress of making the best of those 2 weeks out and give you more flexibility as well. You can also still sign up for a new trial every 3 months.
The Query Editor is getting a makeover
From its first release, G.V() used a popular text editor, CodeMirror, to provide its query editing features and various output displays (JSON, Console, Query Profile, etc). We recognise that a familiar user interface is essential to give users a better experience and so for that reason we’ve migrated all CodeMirror components to Monaco, Visual Studio Code’s own text editor. Aside from the sharp look and feel of VSCode, this change brings a whole host of new features and improvements:
All default VSCode keyboard shortcuts are now available to use (indent, comment, find & replace, etc)
Considerable performance improvements particularly on large JSON displays
Minimaps are now available on large text contents
JSON formatting and folding of objects/lists is more intuitive to use
With Monaco’s extensive highlighting and widget features, we can now insert more useful content into the text editor
To demonstrate these new capabilities, we’ve got you another animation, as usual!
Everything else
Aside from the above, we’ve also got a handful of small bug fixes and minor user experience improvements. One notable change is that we’ve now renamed the Graph (Advanced) View to just Graph View, and renamed the older graph view to just Graph (Legacy). As we continue to bring improvements and feature parity to our SigmaJS graph visualisation, the CytoscapeJS version (the legacy view) will eventually be fully replaced.
For a full list of changes, see the changelog below:
What else is cooking?
As previously mentioned we’ve got some big features in the works, and we’re looking at an announcement in July. Meanwhile, we’ll soon be introducing a new advanced custom authentication options allowing to you to generate credentials and authentication headers based on an external process. This is too support scenarios where your database access is protected in more complex ways, for instance with Google Cloud Identity-Aware proxy.
Today’s update announcement is actually a batch of the last two feature releases (2.5.9 and 2.10.17) which happened just a couple weeks apart of each other. The focus of both of these updates is mostly on the Large Graph View and its performance.
New Graph Filtering and Navigation options
As part of release 2.5.9, two new major features have been added to the Large Graph View to allow more advanced filtering and navigation options: the graph filtering view and the vertex neighbors highlighting tool.
Graph Filtering View
The purpose of this view is simple: to provide new filtering capabilities built upon the data available in your graph. To do so, we now leverage element property values to display filtering and element selection options. It also allows quickly determining the spread of values for a given property on a vertex or edge.
As always a picture is worth a thousand words and we’ve made a quick animation highlighting these new capabilities which you can check out below:
The filtering view includes a few nifty features to assist with navigation, such as the ability to sort filters by name or size and a search bar so you can quickly get to the property value you’re looking for. It’s a really powerful tool that also allows for some quick insights on your graph, so make sure to try it out!
Vertex Neighbors Highlighting
We’ve reworked and improved the neighbor navigation and highlighting tools available on G.V() to provide a more advanced and insightful experience. Previously, G.V() allowed incrementally selecting neighbors for a vertex but the UI was somewhat hidden and unclear. To remediate this, we’ve added a new tab under the Vertex Details tab as shown below:
This new capability calculates the maximum number of consecutive hops via a neighbor’s edges and their consecutive vertices and edges to reach the farthest (and closest) points of the graph from the currently selected vertex.
Each calculated hop then contains a report of which vertices can be found at that hop as well as how much of the graph they cover.
We’ve got another animation to illustrate this functionality further, shown below:
The example above is pretty insightful as it pertains to airports, countries and routes between them. It allows viewing how many hops (in this case airplane route) are required to travel from one country or airport to any airport, country or continent shown on the graph. Note that in this example for brevity only a subset of all airports and routes are showing but this should give you a good idea of where this tool can be effective in delivering visual insights from your graph.
Advanced Corporate Proxy Configuration Options
Some of our users, maybe yourself, need to deploy and use G.V() within a fairly airtight environment. Sometimes this would require the use of a corporate proxy of which your graph databases may be hidden behind. This new release of G.V() finally brings full proxy support to allow connecting to any graph database behind a proxy, through a set of new options that can easily be configured and detailed in our documentation.
Large Graph View Performance and UX improvements
The Large Graph View is a core component of G.V() that we’ve been continuously investing in since we first introduced it in 2022. It is powered by the SigmaJS graph visualization library (and it’s sister graph library, Graphology). Earlier this year, the SigmaJS team has announced the release of its long awaited v3, which we have proudly supported and sponsored. If you’re interested in building graph visualization then you simply must check SigmaJS/Graphology – it’s free and open-source!
This new v3 SigmaJS version is of course relevant to this post as we’ve now officially upgraded G.V() to use it, and it brings significant performance improvements as well as new rendering capabilities to provide a more versatile visual experience to the framework. The goal of these improvements is to allow SigmaJS (and therefore G.V()) to render more elements, faster, and increase the speed of processing graph updates for re-renders (e.g. when switching stylesheets in G.V()).
We’ve taken the opportunity with upgrading to SigmaJS v3 to also review the rendering of element labels to give them a crisper look and feel. Most important however is that with this new release, SigmaJS finally supports the drawing of curved edges. This may seem like a small change but it is extremely useful for graphs that contain many bidirectional relationships, as these were previously difficult to tell apart visually in G.V(), as shown in the comparison below:
With this new capability it’s now much easier to understand relationships in complex, highly interconnected graphs.
This is our first big project with the SigmaJS team and we’re hoping to bring more in the future, so stay tuned!
What’s next for G.V()?
We’re working on a few big projects behind the scenes but it’s too early yet for us to share more details. In the meantime you can expect to continue seeing regular updates to our product with a focus on user experience and performance. If you have any thoughts of your own on what you’d like to see next in G.V(), make sure to let us know by emailing us at support@gdotv.com. Our goal is to provide the best graph database tooling possible and there’s no better way to achieve this than by listening to what our users want and need from our product – your feedback is what drives our roadmap.
Hey! We’re starting a new tradition of releasing blog posts to quickly show case new features of G.V() whenever a feature update is released. To kick this off, let’s have a look at what’s in store for this update!
Improved Query Editor User Experience
G.V()’s query editor is an essential part of the software and one that hasn’t seen too much change since it was first released. So we thought now’s a good time for a fresh coat of paint and a little rework of the user experience.
First of all, we’ve redesigned all the popups to match the overall style of the application better.
We’ve also reworked the sidebar popup to be permanent but easily toggled – it now contains some useful shortcuts such as a view of your data model as you type your query and it will continue to display context- aware information as you type your query (e.g. Gremlin documentation, data model documentation, etc). Moreover, when highlighting a specific step in your query, this assistant feature will also display the corresponding documentation.
We’ve also added a never seen before (in the Apache TinkerPop world!) syntax highlighting feature that will really improve readability, especially on complex queries. Check it out:
This is a first phase of improvements that will soon be followed by more – our focus will be on additional highlighting and query writing assistance scenarios (e.g. project/select key highlights, labels and property keys documentation display on highlight, etc).
Apache TinkerPop 3.7.0 Official Support and G.V() Playground upgrade
G.V() now officially supports Apache TinkerPop 3.7.0! Thanks to the addition of Properties on Elements in this new version, all users using Gremlin Server 3.7.0 will benefit from considerable performance improvements when fetching large amounts of vertices and/or edges through G.V().
We’ve also upgraded our own in-memory graph, G.V() Playground, to 3.7.0 meaning that it will also benefit from the same performance improvements.
We’ve added GoLang as a translation target to G.V(), as has been introduced in this new release of Apache TinkerPop.
There are further performance improvements that were made to the result serialization aspects of G.V() which all Apache TinkerPop graph systems and versions will benefit from in this new release.
New Amazon Neptune Audit Logs View
There’s a new Amazon Neptune log view in G.V() to complement the previously released Slow Query Logs view. Much like the former, it is designed to allow users to quickly profile and debug Gremlin queries running on their Amazon Neptune database. We’ve also added some additional controls on both tables to select the columns to display.
The addition of this Audit Log View makes it easier than ever to identify queries running against your database and re-run them if necessary. Once again, GIF demo time!
Everything else…
There’s a few bug fixes and other minor improvements in this release, for reference, see the full release notes below:
G.V() is a continuously evolving software – we have monthly feature releases and monthly maintenance releases running in tandem to ensure both that new features regularly hit the shelves and any defects/bugs are promptly squashed. We’ll post about every feature release to give you a better idea of what’s changing (and why you should update!).
If you have already, make sure to also subscribe to our newsletter to keep up with all things G.V(). See you next month!
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.