You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
4.2 KiB
Plaintext

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

00:00 In order to answer this question about whether you have
00:02 an integration database or an application database,
00:04 let's do a quick compare and contrast,
00:07 especially in large enterprises, you'll see that they use databases
00:11 almost as a means of inter-application communication,
00:15 so maybe you have this huge relational database that lives in the center
00:18 with many, many constraints, many, many store procedures,
00:21 lots and lots of structures and rules, and so on,
00:25 why— well, because we have a bunch of different applications
00:28 and they all need to access this data,
00:30 maybe the one in the top left here it needs users
00:33 but so does the one on the right, and their idea of users is slightly different
00:36 so this user is not like a real simple thing, it's really quite complex
00:40 it's kind of the thing that will solve the user problem for all of these apps
00:43 and so on and so on, through the constraints and the way you use it.
00:47 This is a decent, well, it's typically a good role for relational databases,
00:51 you're better off with other architectural patterns anyway,
00:55 but relational databases are a good guarding against this kind of use case,
00:58 they have a fixed schema, they have lots of constraints and relationships
01:03 and they are very good at enforcing and kicking it back to the app
01:06 and go no, you got it wrong, you messed up the data.
01:08 So they can be like this strong rock in the middle.
01:11 The problem with rocks is they're not very adaptable,
01:14 they can't be massaged into new and interesting things;
01:18 a rock is a rock, and it's extremely hard to change.
01:21 So that's partly why some of these major enterprises
01:25 will have like weekends where they deploy a new version of an app,
01:28 like we're going to take it down and everybody's going to come in
01:30 and we're going to release it;
01:32 that is not a super place to be, it's also not a great use case
01:36 for document databases with their flexibility in schema design,
01:40 their less enforcement at the database level
01:43 and more enforcement inside the app,
01:45 because how is the app on the left going to help
01:47 enforce things for the app on the right, that's not great.
01:49 So, this is an integration database, and it's generally not a good use case
01:53 for document databases, if you're still using that
01:56 this sort of style of document databases, it means your queries will be more varied
01:59 and you probably need to model in a more relational style,
02:03 less embedded style, just as a rule of thumb.
02:06 So what's the opposite? Well, it might look like this,
02:09 we have all of our little apps again,
02:11 and instead of them all sharing a single massive database
02:13 you can maybe think of this is more like a micro service type of architecture;
02:17 each one of them is going to have their own database
02:20 and they're going to talk to it, and then when they need to exchange information
02:22 we'll do that through some sort of web api,
02:25 so they will exchange it through some kind of service broker way
02:29 they like negotiate and locate the other services, right,
02:32 maybe the one in the left is about orders,
02:34 the one on the right is about users and accounts.
02:37 So what that means though is each one of these little apps is much simpler,
02:41 it can have its own database with its own focused query patterns,
02:45 which is more focused, easier to understand,
02:48 and the application can enforce the structure and the integrity at its api level,
02:53 so this is a much better use case when you're sharing data with a document database.
02:58 And in fact, this sort of whole pattern here means
03:01 we don't have to make it NoSQL versus SQL choice,
03:03 maybe three out of these six are using MongoDB,
03:07 one is using a graph database and two are using MySQL,
03:10 it's up to the individual application to decide what the best way
03:13 and model basically with the best database and its underlying model is.
03:18 So when we have an application database like this
03:20 you are more likely to have slightly more embedded objects
03:24 because the query patterns are going to be simpler and more focused and more constraint.