 Ευχαριστώ, κύριε, κύριε για την επόμενη, ναι, τη λεπτά σήμερα. Σε ευχαριστώ για το ηθόνυξο από αυτήν τη φορά. Θα προσπαθούσω και προσπαθώ. Και θα ξεκινώ να πω ότι πρέπει να προσπαθώ να προσπαθώ για παιχνόνι. Από πρώτα, αν χτυπείτε ένα γραφτάδο και αν πεις να κάνετε τι χτυπείτε, πεις πως χτυπείτε. Μπορείτε να σταμαθείτε με τις πάντες αν εσύ εσύ είναι πολύ εύκολο σημαντική ερώτηση. αν είχε εδώ να learning about graph database. How many of you? Okay, good, good percentage. And how many of you are already familiar and want to, some help in choosing one? Okay, okay, a small percentage, makes sense. Okay, so let's start and try, I'll try and get these questions answered for you. But before we do, I'm going to just briefly introduce myself because I'm not sure everybody knows where I'm coming from and because I think that this may be relevant in giving you some perspective. Έτσι φυσικά μόνος σε δητοίυση και δητοί και βολογία. Παί vengeρα συλλήξε, έτσι我就 συλλήξε, αυτό ήταν ένα της πρώτας πρώτος που θα δημόνωικα ότι έτσι ούτε τον ΠPerfect, was implementing graph database, a graph database prototype, το που χρησιμοποιηθώ, και επόταξε τον τελείοξο,icked from the point when I moved to different directions, I have done everything I wanted, from the point when I did not have to do anything, from my point of view, και μεταφέρνουν δίκαιο. Έχω δημιουργήσει ένας ανάλληλος, δημιουργήσει ένας συμφωνές, έχω δημιουργήσει ένας δίκαιο και σήμερα πάνω. Και σήμερα, most people know me as a journalist because I write for ZidniNet. Για να ξεκινήσουμε, δούμε τι... Βέντε, όταν κάποιος σκοτήτει έναν έναν νέο δίκαιο, το πρώτο πρόκλημα να πείτε, είναι και μία δίκαιο εξαλήματα. Γιατί δεν χρησιμοποιήσεις. Εξαλήματα είναι τελικά, But ironically, one of the problems they have is that they're not really very good at relations, handling relations. And to show that, I have a slide here which shows what's probably the most famous schema in the relational database world, one that we often come back to in order to see how schemas work and how databases are built. This is the Northwind schema. So here we have products and orders and in order to actually connect those two, we introduce an intermediate table. And by now we've done it so many times that we hardly even think about it, but if you actually pause and think about it, this is a rather unintuitive way to model a relation, by introducing something in the middle. And the problem with that is that it's not only unintuitive, but it gets hard to write queries. I mean, it's fine to ask like a simple query, for example, find all friends of person X. But if you want to do multiple hops, multiple joins, it starts getting harder, not just to write the query, so find the friends of friends and so on. But also, it's not just hard to write that query, but the engine also has trouble executing that so performance degrades. So this is actually one of the key motivations for the first use case for graph databases, which is operational application. So if your application has a model that is, that can be reflected as a graph, it can be more easy to model, and it can be more fast to execute if you're interested in doing many hops. So for example, this is the exact same model of the Northwind database, but modeled as a graph. You can see, and this is the entire of it, so you can see how much simpler it is. No intermediate entities, no nothing of that kind. And it's more intuitive, and it actually works faster in practice as well. And to give you an example of a company that uses that in production, this is TELIA, which is the leading TELCO in the Nordics. They have created an application for smart homes using IoT. This is deployed in 1.5 million homes, so quite large scale, and that's real-time processing, and it's built on a graph database. Another use case. You're probably familiar with PageRank, which is probably the most famous graph algorithm. So there are lots of algorithms like that that operate on graphs, so using doing traversals and using nodes and edges. And so there's things like centrality and other algorithms that help you discover structure and make connections in your data. And in order to use those, well, obviously, a graph database is a much better match than a relational database. So another example from the real world, AstraZeneca, which is again one of the leading pharma companies. And they have lots of data on genes and proteins and these kind of things. And in order to make the connection between those and find what they need, which is causal relationships, again, they use a graph database. Another use case, which is probably my personal favorite, because not many people know about it, and it's something that I've used in practice many, many times. Data integration. This is a very common scenario. You have many different data sources, and you want to somehow federate those and have like a unified view over your data. Graph databases can really help you with this use case. And it never ceases to amaze me when I see how many people are not aware of this use case and how well it works in practice. We're going to see which types of graph databases are more suitable for this. But to give you to start with an example, from the retail this time, Zalanda, which is like the leading retailer in German-speaking countries, they have millions of online users and hundreds of thousands of active searches every day and every month. And what they have done to federate all their different data sources for all their different products, they have built a knowledge graph using a graph database to enhance their search function. And this has actually had a very traumatic, I would say, impact on their bottom line. So their search has improved both in coverage and in accuracy. And so more people search, they get better results, which results in better sales. And well, last but not least, graphs and machine learning. This is kind of cutting edge, I would say. So this is where machine learning is getting next. Some researchers from Google and DeepMind very, very recently published a paper on how you can possibly mine the structure that you have in graphs and combine it with machine learning so that it works in a sort of feedback loop, as you can see here. So you have graph analytics that help you compute certain metrics, you feed that to your machine learning, and then that feeds back into your graph. And another example from the real world of a command that does that, which is pretty big actually, maybe even the biggest telco in the world, China Mobile with 600 million users. And what they do is they use this combination, so graph database and machine learning, to do anti-frode in real time. So what happens is that when the phone rings, if you're a subscriber of China Mobile, if there is a chance that this call may be from a fraudulent user, then you get in real time a notification about what type of fraud this could potentially be, which is pretty impressive, especially if you factor in how many calls and how many subscribers they have. And just to kind of wrap up with the introductory part, a few words on knowledge graphs. I didn't, on purpose, I didn't mention all those big names that you see here that are actually using knowledge graphs. And to define a knowledge graph is kind of a big topic, let's say, that I can't really cover here, I'm happy to do that if you want to discuss later. And the interesting thing here is that, well, Gartner, if you're following these things, just include a knowledge graph in its hype cycle in August, which is kind of funny, because this technology has been around for something like 20 years. Well, it's in really hard to work out, but, yeah, let's just say it's funny. And some of the companies that are already using knowledge graph, again, in production, their catypal example, obviously, is Google, which is the one that popularized the term. And even if you don't know it, you are already using a knowledge graph every day, every time you type in a Google query. This is what Google uses underneath to power its search. But, you know, there's the likes of Airbnb, eBay, LinkedIn, and so on and so forth that are already using this technology today. So hopefully I've given you at least a little bit of a hint, you know, about what graph databases can be used in the real world, which brings us to an interesting point. So as you can see here, this is a chart from DB Engines. DB Engines, for the ones that do not know it, is pretty much the closest we have to a reliable source to measure the popularity of different graph, different database systems and vendors and so on. And this is a chart, so in overall popularity for different database systems from 2013 until today. And if you're wondering what this green line that is heading for off the charts is, it's graph databases, which goes to show, you know, the increased popularity. An interesting point to note in this chart are, if you can see to the left side, there are two points in time where there are spikes in this line. The first point in time coincides with the time that Microsoft Azure, Cosmos DB was introduced. This is a multi-molded graph database. We'll see exactly what that is in a little bit. But let's say it's Microsoft's entry in this game, in this market. So at the point that it was introduced, you know, the interesting graph databases just boomed. And another interesting point that we saw an uptick in the interest in graph databases was pretty recently actually about, not even six months ago, when Amazon entered the game as well with Neptune. Neptune is another graph database product. It runs in the cloud. And basically, it just goes to show that, you know, there is something there. It's not the coincidence. It's not an accident that names like that are into this game. And so which brings us to an interesting point. So OK, we have a situation that either to kind of niche, let's say, technology is suddenly going mainstream. And hopefully I've done at least a little intro to show you some of the use cases that you can, for which a graph database may be useful. So you may be asking yourself, OK, you know, this graph database thing sounds interesting, but how do I actually go and choose one? What you would typically do in a situation like this is that you would turn to existing research. And you know, you would try to find somebody written by someone somewhere that can help you answer your questions. And so that's what I did at some point as well, you know, as an intellectual exercise, because I wanted to see, OK, so what are the options that people have today? And what I found out was that at least, you know, for my standards, the research that was out there was not satisfying. First of all, it was outdated. So the most recent research you can find on graph databases out there is one to two years old. This is already quite long in technology terms, but if we're talking about graph databases in specific, it's like a lifetime. So, you know, they don't include neither the latest version of the products, not even new entries like Amazon. So how do you begin to speak about graph databases if you don't include key players? And that's one thing. The other thing is that, well, these reports, these research is not done by experts. So to me, at least, they stay on a quite superficial level, let's say. The criteria they apply are quite generic. They don't capture the nuances of graph databases. The other thing is that, well, and I don't have to say much about it, they're pretty expensive. If you've ever dealt with the gardeners and foresters of the world, you know, the prices, so I rest my case. Nothing to say there. And basically what this all comes down to is that these kind of research tools have a different kind of goal, let's say. They're mostly used as marketing tools. And don't get me wrong. There's nothing wrong with marketing. I also do it. You know, it's something has to do it. Something has to go out there. And pretty much tell you what I've already served with you in the first part of this talk. Like, OK, you know, what can you use this product for? And you know, use cases and so on. But if you actually want to make like an informed technical decision, you shouldn't be using research that's geared towards marketing. It's quite simple, actually. So this and the fact that, you know, as someone who has been monitoring this field for a long time, I kind of saw it coming, let's say. So actually, I wrote calling this the year of the graph in the beginning of 2018, long, long before Gartner did. I decided at some point, well, OK, if there's nothing out there, it means there's a gap in the market. And you know, somebody should address it. And if there's nobody else around to do that, then I will. So I decided to embark on this journey to try and evaluate graph databases. And what I'm going to be sharing with you here in the second part of the talk is, well, some of the findings of this journey. So the key principles that I wanted to adhere to in this journey were basically, well, I wanted this research to be always after date. So it's using the latest data. I wanted to have like a holistic evaluation, which means, you know, don't just evaluate, I don't know, who's like the leading vendor or who has the fastest database, but integrate everything into one framework. I wanted it to be a value for money, because the idea here is that I want to help people who are actually hands-on, who are technical decision makers and have like a limited time in which they have to make their decisions. So I wanted, you know, not something for the C level suit, but something for these people. And then I wanted it to be hands-on, because I am a hands-on person and I want my evaluation to be actually useful. And, well, hopefully I've also given you like some reasons why I think I'm the appropriate person for this. And just to add to that, I already mentioned that, well, I've been monitoring this field for a long time. So what I'm going to be sharing with you from this point on, you can find on this URL, which is also where the other report is published. Yeah, another thing, so the report is a paid one, just to make this clear. But there is a free resource that you can use just to keep up to date with this domain, if you're interested. There is also a newsletter that you can subscribe to, which is completely free. So, let's see. For me, I think at least half of the value of doing research like this is in what you choose to include. So basically when you have a multitude of choice and in graph databases, you do have a multitude of choice. There is over 30 graph database vendors or so-called graph database vendors so nobody has the time to just sit down and evaluate all of those. You shouldn't have to do that basically. So the first step I took was to cut the slack basically, make a selection and cut, leave some things out. The things I decided to leave out, some of them are obvious, some of them are less obvious. Let's start with the obvious. So we have analytical frameworks, analytical tools such as Spark, which as you may know, has a dedicated graph library called GraphX and such as Apache Giraffe, which is another framework, again, open source, which is specifically for doing graph analytics. Both of those are great solutions and I'm pretty sure many of you are using them. But by definition, they're not database, they're analytical tools. And if your use case is doing that, just analytics, it's fine. You can go ahead and use them, but I'm arguing that if you're going to make that switch, if you're going to go into graph, then why not go all the way? So a database maybe more, actually more well suited to your needs. Another obvious exclusion, I would say is things like visualization frameworks. There's tools like Jeffy or GraphTool or other commercial tools. Again, great tools. They help you visualize visualization as a key part of using graph actually, because leveraging all these connections by using the naked eye, let's say it can be overwhelming, so you definitely have used for a good visualization framework, but again, obviously these are not graph databases. And last, but not least and less obviously, there are solutions that I call having a thin graph layer. So solutions like MongoDB or SQL Server. Yeah, again, these are great tools. If you're using them, great, keep on using them. What these solutions and others like those have tried to introduce lately are adding what I called a thin graph layer. So basically adding some functions or some partial APIs that help you manipulate your data as a graph, using kind of a graph lens to look at your data. While this is useful and this may help you if you already are using those tools, I wouldn't recommend adopting them if you want to make a switch towards graph database, because, well, this only partially covers your needs. What I think you should be looking at is area of graph database. So area of graph database is one that goes all the way basically. According to my definition, if you want to use a graph database, you should make sure that it has an API that can cover the whole spectrum. Create, read, update, delete. This is what you should be expecting of your database. And you should be able to do that using a unified graph API and query language. So it's not good if somebody says, oh, okay, you can do insert using SQL or, I don't know, query language X, but you can use a graph API to do analytics. Yeah, that's fine, but that doesn't really make your graph database. It makes you a whatever, I don't know, relational database with some graph on top. That's, in my opinion, that's not good enough. And the reason it's not good enough, well, there's two reasons basically. One is that, well, you should be future proof, which means that if you decide to go, to take that step, to go to enter the graph database world, it means that eventually you may want to start using it for more things. You should have that possibility. If you're using a solution that doesn't have like a 360 API and graph language that lets you do everything using a data lens, then you're not doing it. And that's another good reason is that, well, even if you only want to use it for analytics, you still have to load your data somehow. And in order to do that, well, having a graph API really, really helps. So that's one distinction. From that point on, I could also draw another line, which is discussing native versus non-native graph database. This is, again, another great, big, big discussion that can go a long way. But let's just say that there are databases that have been designed from the ground up to be graph and graph only. And there are databases that, even though they may give you a full, create, read, update, delete API and query language to work with, their underlying storage layer is not really a graph. So, yeah, there are graph database technically, but not a native one. So, with that, let's go a little bit deeper. Let's talk about the different types of graph databases because that actually has a lot to do on what you can use them for. The first type of graph database is what we called label-propert graphs. Label-propert graphs are basically, so, you know, as you probably already know, when we talk about graphs, the basic constructs that we have are nodes and edges. So, the idea behind label-propert graphs is that you take these nodes and these edges and you attach properties to them, hence the name, obviously, it's quite obvious. This is like the most basic fundamental construct you could possibly have. It's like the equivalent of a key-value storage, basically, on which, you know, you can build things on top. And in fact, many of those databases are built on top of key-value stores, but that's a different story. And this has some advantages and some disadvantages. The advantages are that, well, it's rather flexible and the fact that it's so simple, so close to the source, to the file system, if you will, makes it quite fast for traversals and this also makes it quite scalable. The downsides of using label-propert graphs is that, well, it's a bit messy, let's say. So, there's a number of solutions out there and each one of those has a different format for storing data and a different query language. So, practically, close to zero interoperability, let's say. There are some efforts that are undergoing there in order to try and bridge that gap and come up with something more standardized, but at this point, you know, if you're using solution A, then you want to switch to solution B, well, good luck. And the schema support is also pretty basic, so, basically, it ranges from no schema at all to very, very basic schema. So, if you're into schema, well, yeah, again, tough luck. And two of the most prominent solutions in that space are Neo4j, which is probably the name that most of you are more familiar with and Tiger Graph, which is a recent entry in this landscape. And these are some of the use cases that this type of graph database is good for. So, operational applications. Obviously, you know, having a database that's fast helps there, and pretty much every graph database these days, including those in this category, has asset support. So, you're pretty safe to use them for this type of application. The other thing is graph traversal. So, if you remember what we talked about in the beginning, and if your use case involves making lots of hops, lots of joins, if you want to say those in the relational lingo, then that's probably your thing. Again, this has to do with the fact that it's a very simple model, so it's rather fast if your use case involves many hops. And as a consequence of that, it's, they're also quite well suited for executing graph algorithms, because most graph algorithms actually consist of traversing the graph many times and keeping count of various things. The other type of graph database that's quite prevalent, let's say, and has been around for a while, is what we call RDF graph databases. RDF is short for Resource Description Framework, which is actually a specification that has been around for about 20 years by now. It's a W with a C specification. You may have heard it from the Semantic Web, for example. It goes some way back, and there's lots of legacy, let's say, attached to that. And for many reasons, this has been sort of scared people away for a while, but the thing is that will not, with this renewed wave of interest, let's say, these solutions have also come to the fore lately. So the good things about using a solution in this space is that, well, obviously, there's interoperability and there's maturity. They have been around for a long time. And what I personally find the most interesting property in these types of databases, though, is that they have the options that they give you in terms of schema. So basically, we have the full spectrum from no schema at all, you can go completely schema-less to the most rich schema you can possibly imagine. Basically, you can have things like inheritance, you can have things like rules, you can even generate new knowledge, you can do reasoning, there's a whole wealth of possibilities there that you can explore if your use case is a good match for that. On the other hand, the downsides is that, well, since this is a more complex model, performance typically is not as good as their counterparts for the same amount of data in the same use cases. That doesn't necessarily mean that you can't use them for anything, but this is just something to keep in mind. And that also has an effect on scalability as well. And the other thing that is part of what I mentioned that has potentially driven some people away is their perceived complexity. So having a very, very simple model has its downsides, but it also means it's pretty easy to get started. RDF can be tricky to get started. It's not really that hard once you get the basics, but this is something to keep in mind. And some of the solutions that are longstanding players, let's say in this space, are Allegro Graph, Anzo, and GraphDB. And use cases, well, I already mentioned my favorite, which is data integration. So even if you don't want to use a graph database at all, if you have a data integration use case, I very much encourage you to have a look at RDF. It may be helpful for you. Knowledge graphs, well, again, as I mentioned already, this goes quite deep into what a knowledge graph is, but let's just say that originally, at least, knowledge graphs and RDF were conceived as going hand in hand, basically. Knowledge graphs have to do with schema and schema has to do with RDF, and let's just leave it there. And surprisingly for some, I could also add AI into that. Even though today when we talk about AI, most people would think of machine learning, basically. And even though actually some solutions already have started incorporating features to help to facilitate machine learning on graph databases, typically the kind of AI that we mean when we refer to graph databases to RDF graph databases are basically rule-based AI. So I already mentioned the possibility to have a very rich schema and rules and inference and all that kind of stuff. If that's your thing, you should be looking at RDF graph databases. And last but not least, we have what I call multi-model databases. So we've already seen the two major categories and there's also many variations. So we have some databases that actually support both. So RDF and LBG, these are interesting hybrids. We also have other databases that support additional data models, so document or key value. And the discussion here is basically what I would call the generalist versus specialized argument. So on the one hand, yes. I mean, having something that's wide-ranging and gives you many choices in terms of models means that it's quite flexible. You can use it in many ways. You can store and query your data in many different ways, depending on your use case and so on. On the other hand, it also means that you may be a jack of all trades and master of none. So these databases were not really designed from the ground up as graph databases, in most cases at least. And so there's a certain trade, let's say. So some solutions, the one you can see ArangoDB, Azure and Datastacks, they support Kiva, LBG and the ones on the other part of the slide, so Amazon, Marklogic and Stardoc support RDF and the variation and different combinations of these models. You can see this in more detail in the big slide in the beginning. So, which brings us to what, in my opinion, is probably the most interesting part of this exercise, let's say. Yeah, okay. It's good in theory. Yeah, you would like to include everything and you would like to evaluate every possible factor. But actually to do that, it turned out to be a very, very hard job. And just to get it out of the way, yes, there is something you're not seeing here which is performance and I'll explain why in the next slide. But for the time being, let's focus on what is here. So these are the things that I found were important when evaluating graph databases. Some of those are generic. So let's start with the generic ones. Obviously when you're choosing a vendor for whatever kind of product, you want to evaluate what you can expect from this vendor and what you can expect from this community basically. So things like documentation, community, licensing, support, prospects. Ideally you would like your vendor to be there in a year from now. So you have some sort of stability and these are things you need to take into serious consideration. So these are not specifically for graph databases but just to get them out of the way. Some of the things that are more specific have to do with application development. So things like the engine and the API. What kind of options do you have? Things like the data model. I already gave you a very brief introduction to the different data models and there's even variations within those data models. So these are things that you should be looking at because they directly will influence what you can build on top of your database. And there's also the query language, a very, very, very important aspect. And again, you also have some more generic concerns we have to do with DevOps basically. And this is something you should be considering regardless of what type of database. So things like interoperability and deployment and configuration options. Ideally you would like your solution to make your life easier. You would like to be able to be deployed on the cloud and on-premise and with any types of tools that you may be able to use and so on. And there are some things that are very, very graph specific that you should be looking at which have to do with basically algorithms, different types of algorithms that some of these databases come with support without the box and visualization. As I already mentioned, visualization is a very important part of using graphs. And so the different options that your solution gives you is something that you should seriously consider. So basically what I did is well, I created, these are the four key areas, let's say. And these are the KPIs and for each of these KPIs I created a specific metrics and for each of these metrics I went out and collected, God knows how many data points and I did that with every single solution. So every vendor that has been included, every solution that has been included in this report has all these data points behind it. And it all comes down to, well, a very simple, deceptively simple radar chart as this one as you see, which basically gives you an idea like, how well this solution does score in this aspect and in that aspect and so on. So let's deal with the elephant in the room, performance and cost. So why is performance not included in there? Basically one word, benchmarks. So if you want to do like a fair comparison as I believe I have done for all other aspects of evaluation, you have to have like a sort of ground truth and in order to get that, basically what you need is benchmarks. And this is where it gets tricky. First of all, it gets tricky because you have different models. So you have to come up with a benchmark that's fair enough to be able to evaluate both all models on an equal ground. That's already quite hard. I've done some work on that and I can say that, well, there is a way to do that. But then we get to the even harder part which is that, well, not every vendor is willing to actually do benchmarks and I don't think I really have to explain the reasons. Some feel more comfortable with their performance, some feel less comfortable with that, some choose to downplay it, some choose to emphasize it. There are some benchmarks going around but they're not done by a third party so you can trust them at your own risk, let's say. So, yeah, and to get the cost factor out of the way, again, not all vendors are entirely transparent about their licensing scheme and their cost models. So even though I have pretty good knowledge of those and this informs, let's say, my opinions and my evaluation, I decided that in order to keep things objective, these should not go as data points in the evaluation. So, to wrap it up shortly, if this is something that you should take away from this talk, these are the main takeaway points. So first, graph databases are here to stay. I've given you already like a number of use cases that you can use them for and if nothing else, if you don't trust your own judgment or knowledge or experience, you can take the market signals that say that when the likes of Amazon and Microsoft move into a domain, you're likely to be seeing more traction around this domain. B, there's different types of graph databases and what you should really do before getting into any exploration kind of phase is try and understand these models because depending on your use case, depending on what you want to do, you should probably be looking, this will be guiding to a large extent your choice. So first decide what your use case is, then try and see what model is the best fit for your use case. And takeaway point as well, evaluation is really, really hard. And to leave you with some parting thoughts on evaluation, as I said, one of the things I do is consulting. So it was only just a few days ago actually that I was talking to an application architect from a really, really big organization and they have built a super interesting application which is built on a graph database. It utilizes some of the great properties of graph databases and we were going through the design with him and some of the things struck me. And I asked him, okay, so why did you make this choice and you could have done this and that and so on. He was like, well, okay, yeah, now that we talk about it, I realize it, it's right. When we could have done that, it would have led to a different choice but we didn't have the time for that and this is what happens in the real world. I mean, you don't have infinite resources, you don't have infinite time. You need to make a decision up to a certain point and that's why I think that somebody like me coming and offering you a little bit of help can actually assist you as opposed to an architect what I had all the time in the world to sit down and thoroughly do that. And this is also reflected in some of the feedback I got. For example, this is from Jonathan Laysfield which basically the product manager for graph for data stacks which is one of the solutions evaluated who said that basically this is like the most comprehensive thing he has seen on graph which is quite a big compliment considering that these are the guys that deal with the gardeners and the foresters of the world. So if you want to take like one picture from this slide deck before I make it actually available, it should be that. So basically what I'm telling you is that, well, you should be looking at graph databases and if you are, you should be looking at this report because it's going to cost you about the equivalent of a day of consulting and it can really, really help you like get off the ground and make a better choice. And to top that off, there is a special offer until the end of the year by using this code you can get 20% off. And that's it and open to questions. Thank you for your presentation. I have a question regarding its reliability. I'm familiar working with Neo4j and Titan DV. And usually the question I get is when we should go from one to the other, one is supposed to be horizontal scabble because it splits the graph, the other one doesn't split the graph. Okay, so let's start with Titan. First of all, Titan is deprecated. If you're using Titan, I... Janus graph is... That's the successor to Titan. So Janus graph is interesting, but to me at least there are two things that you should consider about it. A, it has no official support. It's only open source, there is no commercial entity behind it which means that you're on your own. This is something to consider. B, it uses different backends. So you can use Cassandra or you can use a relational database or you have many options there, which is good in one way, but on the other hand, it also means that you add an additional layer. It's not really native. What is native is basically your backend store. So that means that your performance is likely to suffer. So this is something to consider. So if you're asking me which one of these two has better performance, yeah, probably Neo. Not so much about performance, but if we could have the same case, like when you have to do a migration from a, because of your Neo4j machine, let's say has gone out of space. I don't think they're going to go out of space anytime soon, but yeah, if you want to do a migration, yeah. Like I said, it's not the easiest thing in the world. You have to improvise a lot. Thank you. Okay, I have a question. I'm not so technically involved in Neo4j and so on, but a friend of mine, he has a couple of questions. He's more involved in the graph databases. So concerning the Neo4j, how does Neo4j perform long term? This is the first question. Long term, what does this even mean, long term? Yeah, I mean, I'm not the right person to answer that question really. I mean, it's hard to go on record commenting on its performance is good or its performance is bad or whatever. Let's just say that Neo has lots of public use cases and I'm pretty sure they would be happy to answer that question directly. I cannot really speak for them. Okay, second question. How do you manage big changes in schemas? How is what managed? How do you manage big changes in schemas? Oh, how do you manage big changes in schemas? It depends, it depends on A, whether you're using a schema at all. Like I said, many of these solutions don't have a schema at all. So no schema, no problem. You can change, in theory at least, you can change everything instantly. Of course, the problem with that is that if you do and you have like a legacy, let's say, data in your database, you're in trouble because that may lead to inconsistencies and so on, which is actually a good motivation for having a schema. If you do have a schema and that I would say mostly applies to RDF solutions, then there's a whole literature of how to deal with what's called schema drift, basically. There are ways to do that. It's completely out of scope to expand here on this, but let's say that there are ways to do that, but it's quite an involved topic. Okay, thanks. And the last question. Would you recommend it as a multipurpose major DB or one or other to be used for the right use case? Yeah, yeah, I would. I mean, that's the use, the people that have built the use cases that I refer to are doing exactly that. So if they're doing it at this scale, then I don't see why anybody else would have a problem with that. Okay, thank you. We don't have time for more questions, sorry. Okay, thank you.