About this talk
In this session, Floron presents an overview of Neo4j and its capabilities, particularly focusing on how to effortlessly import data into Neo4j in the cloud. He introduces the concept of graph databases, explaining the fundamental components like nodes, relationships, and properties. The talk highlights the importance of the new GQL ISO standard and how it is related to Neo4j's existing query language, Cypher. Furthermore, Floron discusses the no-code data import functionality using Google Cloud Dataflow, which allows users to import data through templates without needing extensive coding knowledge. The demonstration showcases importing data from BigQuery and CSV files into Neo4j, while also emphasizing best practices to ensure efficient and error-free data management. Overall, this talk serves as a practical guide for developers looking to leverage the power of graph databases in their applications.
Full transcript
[Music] welcome to the dev days conference and the hall for languages and Frameworks I'm excited to listen to floron session right now because you know I'm a developer myself and I've not been developing a for many years now but when I was developing I used SQL server and graph API was just trickling in and I'm interested to see what neoo J does with graph um API and
in the cloud so floron the stage is yours thank you second time is a charm hopefully so yeah I'm here to talk about neo4j in general and more particularly about you know how you can effortlessly import data to forj in the cloud so you know no operations or transparent operations rather for you and you know when I wrote this abstract I had a new newly released back
then uh Beetle song now and then uh so that's why I Tred to it might it might remind you of the rythm of a particular song like Lucy in the Sky with Diamonds so that's what I Tred to do and maybe I failed which is why I feel I have to explain a weird title so all right moving on so my name is floron I work remotely
from France at new 4J and I'm part of the connectors team and our goals in the conect connectors team is quite simple is to make data movement from new 4J and or to NE forj as easy as possible and meet the users where they are you know there are many different Cloud vendors uh there are many different technical stack so we try we try to be there
and make them successful with NE for basically and so today uh what I'm going to do is basically in three parts or rather two and a half because the middle part is going to be quite quick first you know it's about neo4j so what's neo4j what's a graph database what does neo4j do so I'm going to give a quick introduction about that then I will just talk
about uh you know new forg in the cloud and it will be so easy that it basically it's basically one slide and then finally the no code Import in that case will be a reference to Google Cloud platform and their day to flow run time and in specifically a NE forj template which makes it even easier to basically run in data flow all right that being said
let's move on so what are graph databases in new forj so you might be familiar with the relational model here we are talking about graph database so it's a bit different so graphs are made of mainly two main Concepts one of them is called node or vertex you can more you can read in the you know scientific literature and in some other products we talk about nodes
and nodes of you know zero to many labels so labels are just a lose way to group you know nodes that have some similarity between each other and then the data itself is basically s stored as key value pairs on the noes so that's called property and the property graph model right because there are properties and you have labels as well and then you can link nodes
together and this link is called relationship or Edge as you might see um relationships are necessarily made of one start node and one one end node it can be the same node right but relationship must always be defined with one start and one end then they have exactly one type which characterizes a little more what they do and One Direction that you are free to ignore right
if you have bir directional uh modeling uh for instance I don't know I'm on Facebook and I'm friend uh with Patrick then that's usually by directional right if I'm friend with Patrick Patrick is friend with me I'm not talking about real life here but uh you you can you have to define a Direction but then you can ignore it at query time uh so one type One
Direction and same for nodes right relationships also have zero to many properties to as key value pairs where you know that's a data uh that you can get and so that's really important right that relationships have to have a start and end noce that have some implication that I'm going to explain a bit later and so if we try to draw a quick comparison between a model
you might be a bit more familiar with which is a relational model so I'm taking one example here I'm not saying so we have persons and groups so something quite common right so I'm not saying that's the only way to model it as a graph or the only way to model it uh with a relational database but that's something that I hope is at least intuitive enough
so if you have a bunch of persons they will leave in their own table same thing for groups so you have persons and groups and you know if you're you know seasoned enough with rational databases you will know that you know I have many persons in a group and a group can be part a person can be part of many groups that sounds like a many to
many relationship and what how do we solve that in the relational world we use a joint table right that's our table in the middle so we have like two business Concepts and three tables with graphs again that's just one example I don't think that's the only way to do it but you could at least intuitively say Okay persons are nodes groups as well and the fact that
a particular person belongs to a particular group would be modeled by your relationship and so that's what you get here basically which hopefully looks a little bit more intuitive right I know we are mostly all say seasoned with rational databases and we know how to handle this problem but I've tried this with non-technical people and I had a hard time actually trying to explain joint tables to
them whereas on the representation on the right hand uh with the graph was a little more into intive so hopefully that gives you you know some kind of intuition of what uh graph looks like and how a graph database operates and then uh you know if you cannot query uh then you don't really have a database right and so we have what we what we call Cipher
and Cipher is a declarative query language why declarative because you say what you want to find you don't say how pretty much like SQL right SQL is quite declarative and in that case you will Define patterns so in that case what I'm trying to do I'm trying to find actors who acted in a particular movie and return the actor's name and if we look basically I'm trying
to describe nodes with a label so in that case I have a particular node with a label actor I have two of them that I've acted in so you know following the relationship type and Direction movie and actually what I'm showing is actually reverse um more or less the execution is going to find first the specific notes which is movie and then backtracks from there and expand
to actors and so in that case I have only one movie with tile The Matrix in my database and so I can expand and backtrack from that and F and find Karan MOS and Keanu Rees as a results and return that so that's you know again very quick intro uh but that's more or less how you query data here I show the requery you can of course
create data as well you know you have create merge closes etc etc and again it's a quick intro if you want to actually dive into a lot more details we have what's called graph Academy so if you head for graph academy. new for.com you will find many many many Great Courses you know they are completely free they have self-based so you you take you know as much
time as you need and you can learn all about Cipher you know how about to query a4j how you actually model business problems with a graph how you can run optimize import you know you will learn many different techniques cph data science craft data science algorithms and whatnot are many many different Great Courses that my colleagues are working on so feel free to dive in I hope
what I gave you was just a good enough taste for you to you know to dive into this further and by the way since I'm talking about Cipher I have to talk about gal that's quite a big deal so you all know SQL you know that was that is an ISO standard that started in 1987 and for the first time in almost 40 years they announced a
new ISO standard for a database query language and this query language is called gql and gql is basically graph query language and that's a new ISO standard that has been announced last months don't get me wrong it's been years in the making uh but it's finally you know GA so if you learn Cipher you will basically learn gql you will already be ready so if you're afraid
of vendor locking for instance don't be because Cipher is Will is and will continue to be the leading implementation of gql so yeah craft database are here to stay and you know just having an ISO standard is just like a big big proof of that but let's talk about you know here I'm here to talk about not so much about neo4j only I'm trying to talk about
neo4j first in the cloud and how to import data effortlessly to it and as I told you this part is going to be short uh this part is one slide what we have what's called Aura so Aura is our manag database offering and we have a free tires that's a great news right you can use it for free no credit card needed you just register and then
here you go you can spin up a new for database for free and try to play with it uh we have all other tires when you you know evolve in your Learning Journey and you start implementing you know Business Solutions based on that as was that the orb so the main database and we have you know graph data science for all your data science needs as well
and if you're uh you know if you feel like you want to have a little more control about your or you instantiate those instances and whatnot we even have so the aura API and the AA CLI actually uses that to control instances and whatnot and that's what I'm going to be using for my demo today I'm going to have a pre created orb instance uh that I'm
going to import data to and you can do the same yourself afterwards and finally so that's what I'm here to talk about the no no code import what is it about so we have what's called a data flow template for e4j and I'm going to explain this a little more so first what's data flow so data flow is a managed data processing platform on Google Cloud platform
and what it does it runs data pipelines data transformation pipelines you have sources you have things and transformation in between that's what what it's about technically uh the pipelines are defined with a library or framework called Apache beam which is available in multiple language like Java Python goang and that basic that gives you an API to describe your data pipelines and then you can Target different runtime
and data flow is just one runtime among others to run those pipelines and that sounds like a lot of things to learn but that's why they also have what's called data flow templates so you don't have to be an apach beam expert or even no P Beam at all for starters for common scenarios and if just turns out that we worked quite hard uh on offering a
new 4G template so you will find them as part of the default templates now it's go it's gone GA recently so generally available and what it does today so I'm you know I'm saying data template for new 4J but I'm just going to say your for template is much shorter and what it supports today is you can query big query so big query is a data warehouse
system you know an agregation of different data sources exposed as a as a as a SQL database that's be query so that's one possible Source you can use cloud storage so cloud storage is like the S3 of Google Cloud platform when you can store data you can store you know text files and binary files and whatnot and what you're going to do with that you're going to
declare various sources so you know different queries for big query different CSV files hosted on Google cloud storage and then you will declare how to map them to your nodes and relationships of your graph and doing that you don't have to code in any particular language uh it's just going to be adjacent specification as we call you don't need to know Cipher and as I said earlier
you don't even need to know Apache beam right that's all about that's why the no code don't get me wrong no code can can be a bit misleading when you have big Transformations you will have like a big pile of Json to to write and and and transform so no code but still potentially lots of Json I'm going to keep it to reasonable levels St but yeah
no code or rather yeah some Json for sure and so what does the new forg template do in a Nell um so it will pares your sources fet the metadata to understand the schema if there is one and then fet the data by batches you know gradually it's going to read how you map that data uh to your new 4J nodes and relationships transform that into Cipher
queries to run against NE 4J and then run them gradually right and and by doing so we also try our best to do uh you know to follow good practices when you work with NE 4J so one of them is indexing right you want indices def find front that's true for NE forj that's true for every database out there we also want to have sensible defaults so
you don't have to think about it when you start which is about because you have potentially a lot of data to import we don't want to run that into a single transaction right because a transaction might run into memory issues or crash so we want to cut that into different transaction so we try to find the best default for the number of transaction related to the memory
we consume so that's something we're trying to do and something uh yeah let me see how much time I left yeah let me talk about it because I think it's important remember earlier I said relationships cannot be created without a start and end node right and so what happens you could Define the start and end node and maybe another transaction concurrently deletes one of those right that
could be that could be happening except it's not happening and the reason is when you create a relationship or when you update it because you could change his start or end node we will lock onto those nodes because for the lifetime of the transaction we want to be sure that when we come in that transaction that relationship refers to existing nodes we want to do that and
what happens in when you have concurrent queries running potentially they are interfering with each other and because relationship plugs their start and end node you might try to lock onto the same node by two different transaction and then you will run into Deadlocks and what we're trying to do here we're trying to be smart about how to partition the Imports so that the nodes are not locked
at the same time by different queries and then you don't have you don't have to run into Deadlocks and even if you do you know we use retries Etc to make sure that eventually the import will run fine so a lot of things we do under the hood uh I'm talking about this even though the template try to take to take care of it for you because
you might run neo4j outside the ne 4J template as well and that's something to keep in mind right relationship Deadlocks because we want consistent relationships we have to do these kind of things to prevent uh to keep Integrity rather and so the template basically requires two thing the first thing is the specification I talked about that specify your data sources the mapping of this Source data to
your craft so notes and relationships and also it needs a destination right because we import to neo4j so we need to know where that neo4j is and you have two options basically to specify this new forj location so when I say location you know it's URI uh username password of other ways of authentication we support more than that like you know single sign on and whatnot so
you can specify it as a Json file in GCS so Google Cloud Storage or you can specify it as a secret so the Json payload will be encoded as a secret and we will use Google secret manager to fetch it which is a bit more secure and that's what I would advise for you know production workloads for the demo I keep it simple I just use a
GCS URI but again for production uh probably better even though you know Google Cloud Storage by default is not sharing anything publicly right your your resources are secure Secrets uh using Secrets is you know slightly more secure than than Google and you know I'm going to start the demo right now and I'm going to come back to it uh for a reason so um first I'm using
Aura right so I have this database here just we're going to make sure no I'm not cheating uh so first yes I need to authenticate and I'm not going to show my password to you even though I'm going to destroy the database after the talk but so I'm using uh an RB instance that's maybe the only Cipher query you will see I'm just going to count the
nodes because you know relationships cannot exist without nodes so if I have zero nodes then I have an empty database so let's see and I have zero noes all right so I'm not cheating so database is empty all right all good so I have a live database then what I need is to so I'm here I'm in data flow I mean Google cloud data flow maybe I
can zoom in a little more even and uh you have you can create create a job by yourself you know using uh using the data flow API and using a patchy beam Etc or you can use a template so let's do that uh you give you need to give the job a name so you can find it in the history list easily so let's say hello Dev
days or something then the region is important so in my case everything is located especially the Google Cloud Storage bit right they're located in Europe and also because it's closer to me right so I don't want to waste some time so I'm going to pick Paris which is like likely the closest location to me then new 4J if you filter through the templates you will see this
Google Cloud to new forj and that's the one you want to use in case and you know it will fetch the metadata about the template which what are the parameters so the first thing it asks is the specification and I'm going to come back to the content right right now I'm just starting the job I will explain a little more what it does so bear with me
for a second so it needs this GS so GS is basically for Google Cloud Storage that's their pseudo scheme for it uh so I'm going to pick the pass to the spec so you can actually click on the click on browse and and it will find you know your your workspace so in that case I'm just going to use this one and then there is some slight
uh annoying UI limitation because I told you the new for database can be located in two ways either via secret or via a plain GCS URI spec I mean it's mandatory but none of them are individually individually required and because of that they're working on it but currently it shows up as optional parameter but they are not optional you need to specify this one the first field
or the second one so yeah don't miss it because otherwise we won't have any information about where the database is so we cannot import anything to it obviously so in that case uh because it's a demo it's not production uh I'm just going to use that file and it's not those are not public files by the way right because I'm implicitly authenticated with the same account it
knows how to fetch those using uh my permissions and once that's done uh well we'll just start it and we'll come back to it so there is a lot of you know technical technical settings you can turn a lot of knobs to get super fine grain uh executions we don't need to do that today so I'm not going to explain them one by one let's just run
the job and wait a little bit we'll come back to it right it will uh it will try to understand it will boot up a VM try to understand what your pipeline looks like and then it will actually run it all right so let's come back to the presentation and so let's dive into the specification a little more so as I told you there are two main
Concepts there are a bit more than that actually but I'm keeping it simple for today we have sources which can be big query or uh CSV files and we have targets and you also have a few other things so sync in that case here it's a picture of Apache beam right even though it's translated as an Apache beam pipeline the sync as you can guess is a
new 4J instance that you configured that's implicit in our case right you you import to specific new for instance so there is no sync Concept in the specification because that's simplicit for the whole job and so yeah two sources what they do so big query basically a source is a query a specific it can be a joint query you know you can join several tables and whatnot
uh and you select the fields you want and we will extract them and make them available for mapping all sources have a name and that name will be used by targets to refer to to sources then text Target what we call text to CSV you have a CSV header so that's important uh the CSV files do must sorry must not have any headers in their content so
the first line of the CSV must be the first row of data not a header you have the GCS URI as I showed earlier then you can customize delimeter separator etc etc you have lot of other options again keeping keeping it simple for today the delimer as a default value separator as well so I'm not going to overwrite those then we have targets and we have three
kinds I'm going to show you the first two today because again I don't want to show you any Cipher just to to prove a point which is you don't need to know Cipher uh except I showed you one one one Cipher query already right to make sure the database is empty but yeah that was just one one exception I hope you will forgive me for it so
you have nodes or relationships and what you can do basically is what we call a Target uh so each Target depends on a single source so remember the name of the source well that's what's we going to write here the source attribute refers to the name of the data source you want to map data from each target has a name and then depending on what you want
to do so let's focus on the first two I mean the third one is easy right Cipher query you just write a cipher query you will get Auto injected parameters which correspond to the batch the current batch of data available and then you know you write whatever you want with it basically it's completely free form uh so it's much more flexible but usually noden relationships are good
enough for starters so you can specify as many labels as you need for your nodes as many keys so Keys is basically a property that act you can think of like primary keys for instance right or these kind of things so that's more or less your primary key that you can Define as well and then you define your mappings how this field from my source is mapped
to a property in my note so that's what the field mappings are about there is a lot more again keeping keeping it simple for today hopefully that will you will be motivated enough to learn more and we have very great documentation we work recently on so you can learn a lot more by following ing these then relationship same story um you have a type right relationships have
a single type don't have labels they have keys as well potentially and you also must specify what their start node and end node look like that's a specificity of relationships they connect to nodes and of course you can optionally define properties for that relationship as well which is a mapping between Source fields and relationship properties so that's you know in a nutshell what targets are and we
look concretely into that right now if so let me show you what the spec I'm running like okay I thought I had it but let's yeah it's right there all right so in that case I'm using uh big query so I have created I have prepared these tables uh London stations and London Tube lines and as you might guess is about the network of the underground stations
in London uh so we have you know standard SQL queries at bigquery support remember bigquery uh cosplays as a relational database even though it Aggregates from multiple data sources so you have different attributes like station name latitude longitude post code and whatnot so that's my first source which I call stations and then I have the lines right so lines is basically a series a path going through
different stations with a start and an end and so that's what I query here here with this query so those are my sources which is great so now let's move on targets I have a first Target which will be a node right I mean a node like a node shape rather it's not a node it might result in multiple nodes depending on the number of rows I'm
up from but you know that's a node shape let's call it so I depend this particular node shape will map data from the station source so the first one right there right these stations here so you know I have station name latitude longitude um I give it a name station you know just uh just to be uh int intelligible understandable then mode happened means I will create
uh all all the time right I'm I I don't care about duplicates I assume the source is properly sanitized transform is not very important it's just doing a group by under the hood with a source query and then the mappings is where the fun happens so you define one too many label you can ignore this weird I mean you cannot ignore it at the moment but yeah
don't get fixated on syntax I'm going to come back to that at the end but uh the syntax is going to change it's going to be a lot simpler but unfortunately for literal strings fora for labels you have to quote them so you have quotes quotes in quotes which is not great but it's going to change so yeah don't don't get uh to too fixated on this
it's going to improve soon so here I have a single label which is station so I will have nodes with station label then I will have a key so a key property which is which is going to act as my primary key if you prefer so it's going to be the source source field is called ID right so I have this select ID here so I have
this ID field that's I'm going to maap to a property called station ID so that's what we this syntax mean Source field this name for the source field is going to be mapped to this property name and then I can group the other properties by type so all of them are strings so your station name is just going to be M at name which is a bit
more idiomatic in terms of casing on the new for side same with Zone and Zone post code and post code and then I have the longit longitude and latitude which I mapped similarly so that's my first Target and then I have so unfortunately it's called edge here even though in at new 4J we say relationship so that's some a past a past decision that we revisit as
well right so as part of fixing a few syntax issues will also fix that so it's not going to be this format is going to be uh maintain right we don't want to break compatibility but there is going to be a new format with use this relationship so that being said uh again every Target needs a source in that case we're mapping tube lines so the Second
Source here we has tube line from Station to Station so those are names of the start and end for each fragment of the line so to say so in that case I'm going to use merge which is up search right so if it exists do not create it again if it does not then create it that's what it means that way I'm not going to create duplicate
relationships so again in that case uh first I need for every relationship I need to find or create right I need to find or create start and end nodes in that case because the previous Target uh has created the stations I'm telling you need to find them so find them in CER me match that is Select equivalent if you will so this means and that's a default
value when you're using merge anyway but uh just to be explicit this means find the nodes and then connect them so we're not going to recreate stations if they already exist then the mappings is about how we know we uh map data from The Source world to the graph world and in that case we have a type connected to which will be from the start node which
is unfortunately called Source again new format soon uh better better words better choice of words so that's your start node which we which must have the enable and the from station value coming from the source query remember we have from station and two station will be mapped to the name property so that's how we we're going to find our start node we're going to find station with
the name whose value correspond to the from station field value and same thing for the Target which is our end node for the this relationship shape so same label except here we're mapping from the two station field to the name property and we're basically going to match that and then connect them with with a merge statement so if that connection is already there we're not going to
recreate it and that's it so that's all what the spec does and that's what I'm currently uh running so let's have a look at our Daya flow job and you can see it's succeeded already uh so you can see many steps you know it fetches metadata to understand the schema a little bit then is is waiting for sources uh to be completely fetched and resolved then we
start with nodes and once we're done we're basically taking care of edges or relationships and we write them to the database which is cool so in theory now I have a full underground Network in My Graph database so let's have a look and I promised I'm not going to use the query shortcut I did before I'm going to use the explore so this one the query opens
a tool called new forj browser which allows you to run Cipher queries on top of your data sets and explore is called Bloom which is more of an exploration tool when you don't have necessarily to use Cipher you can just use natural natural text and it will try its best to translate it into Cipher for you based on your data set so let's try that so again
I need to authenticate so let me again not show my password but use it maybe I should use one password for this and let's connect so I'm going to restore the same uh the same pers it's called a perspective what you see here and what's nice here is it's using the coordinate layout uh so you have different layout by default is using the force based layout but
here I'm using the coordinate layout where it Maps it tries to find by default and you can change it yourself it tries to find uh how to map longitude or X and Y in that case we have longitude and latitude so it just works out of the box and you have more or less what looks like the physical layout of the underground right because we're using the
geographical coordinates so here under your eyes you have this uh this network uh geographically laid out but let's try to solve my problem you know I'm I'm traveling from Paris when I go to the London office of NE forj so I'm using the Eurostar train which I believe land stops at St St panras Station in London and I want to arrive to the closest station of the
new forg London office which is called I don't they pronounce it very weirdly I think it's called I would say s workor but that's not how they say it s or something I know pronunciation hypocritical coming from French I know French is not easy to pronounce but this particular name is uh very very strange all right so I have a couple of minutes left so let's try
this so what I'm going to do in is trying to find the shortest path B between so shortest path between southword and Saint panras and hopefully it should zoom in uh the relevant section and let's see and actually I have a yeah so let let's let's try to this and see if it works no not found because I think it's shortest pass actually yeah shortest looks a
little bit weird so let me try again else it's a demo effect shortest pass maybe better no not found all right so let me double check something so perspective Sav Cipher ah yeah of course because my magic phrase seems yeah here is some Cipher under the hood so yeah you uncovered my magic trick but that's uh that's life so shortest pass between station one and station two
so there is some Cipher when you need some you know something a bit more complex that just finding a node uh so let me double check I have a station whose name should contain my parameter here and then I have another station where the name should contain it okay yeah so that should work let's try again and if it doesn't work I will try something simpler first
because I still have some time so yeah first let's try to find my station so I have stations it detect that and I'm interesting by the name which which should be sou something word work I always forget let's try is this is this correct where is it yes okay so it's right there souer or sou work I don't know how to say it and British people will
laugh at me anyway okay so that exists and is there so let's try again a search I'm looking for a station by name and the name should be sand Pancras or something let's say contains or maybe even equal I think maybe that works let's see okay so it's found okay so let's try again my trick and if it doesn't work then so be it that's life sometime
um so if I short a pass between South I'm trying to be careful here work yes so it completes it for me because it knows the data set and Saint Pancras yes so if it autoc completed hopefully it will find it this time and if I run it okay here we go so there is a small highlighting bug but it tells me six note founds and it
actually show me so if I zoom out a tiny bit I should have southw here and I should have my saint pancr I think think above where is it King cross so I think we have King cross here yeah s panras here you go and sand panras is here yeah I'm not going to unveil the whole so we have sand panras is connected to faringdon let me
try to solve it at both hands so highlighting would have been great but uh that's how it is then it's connected to something in this in this bag of nodes but yeah believe me when I tell you it found the shortest pass it probably did right yeah so here you go uh southw London Bridge bank Liverpool Street faringdon St panras so I ignore directions here um because
you know they are more or less by directional in that case not always but most of the time so it found me the shortest pass so now I know what itinerary to follow to actually be able to go from the train station International train station to the office and that was uh My Demo so yeah unfortunately I had to reveal my magic trick which is called sa
saved Cipher query so I use some Cipher I lied to you a little bit and I'm sorry about that but it was supposed to work on the first try but that's life but hopefully yes that give you some idea of capabilities of neo4j and you know I use very little Cipher in the end right if you know the shortest pass function and if you don't you can
use graph Academy to learn more about it you can do very powerful things and shter pass is just one example of the graphy things you can do with your data all right so import run successfully I was able to find my way from the London International station um to uh the station closest to the new for office so that wraps it up so as I told you
don't get fixated too much of the Json syntax I showed you if you're interested in using uh the data flow template for new forj we are working hard uh it's going to get released soon on an newort spec uh project which is which is going to be used by data flow and hopefully by many more of our connectors uh and the syntax is going to be much
more streamlined much less ambiguous and you know using the words we are used to when dealing with NE for no no relationship no edges Etc um and then probably I'm saying probably because I don't want to commit to any deadlines or anything we're going to work on more Source types right we only support big query and CSV at the moment we are going to add more support
you know maybe for par or these kind of sources what a relational database even like with jdbc or these kind of solutions we're also going to try to be even smarter about paral parallelization because you know by default we want to avoid the famous nolock I told you about relationships we try to run relationships single threaded um but you know we can be smarter than that sometimes
there are ways to segregate the data so you can actually run relationship in ports in parallel we just took the E easy strategy first and we're going to work on smarter ways later the then we're going to allow more flexible data conversion let's say you have a string field and you want to transform it to something else uh we're going to work on making that happen and
also we've been uh asked a couple of times about new forg exports I talked about new forg import what about new forg export or maybe new 4J as a source even you can do new 4J to new 4J maybe as an import so that's the kind of scenarios we we're planning to work on and with that being said I took a little more time I guess I'm
not sure there is enough time for questions but I'm all e if you have please go to graph Academy and Aura you know to learn more about new 4J and try it out in real life and please try our new 4J template when you get the slide you will get the link to the demo and you can try it yourself with very detailed instructions and that's it
so thanks everyone and over uh over to the Dave day friendly staff thank you so much Flora it was a pleasure to listen to you in fact I think I have learned a lot today and uh guess what I keep traveling to London and uh we always live near s s here you go okay yeah and uh you know I'm with you on that you know it's
not a very easy station to pronounce and when I saw that you were looking for directions from sadak to St pan CR I was like Ah that's an interesting route yeah so next time I'm in London and I'm and I'm traveling in any route I know Florence's Poss Floren graph graph API or graph databas is behind this yes most likely indeed hopefully a bit more refined than
what I showed but yeah it's just to give IDE thank you so much F I'm sure people are going to love trying out what you shared with us today and with that I think we're coming to the end so i' like to put the thank you video on and um have have fun in the conference thank you bye
More from this event
See all 73 talks →
Tomas Lekavicius: Building Tech Product Offer
42:08
Alisa Dammer: Science and Tech Backed Approach to Increase Productivity
44:53
Roy Wasse: The Definitive Answer to Measuring Developer Productivity
44:47
Pierluigi Meloni: You’re a Great Coder? That Alone Won’t Get You Far
44:47