Skip to content

Commit ba48634

Browse files
authored
Merge pull request #2 from web-development-course-way/users/mohamedsabry/add-starter-db-mindmap
Add DB mindmap
2 parents 7ea058b + b2dcf56 commit ba48634

File tree

2 files changed

+276
-0
lines changed

2 files changed

+276
-0
lines changed

DbMap.html

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
7+
<title>Markmap</title>
8+
<style>
9+
* {
10+
margin: 0;
11+
padding: 0;
12+
}
13+
#mindmap {
14+
display: block;
15+
width: 100vw;
16+
height: 100vh;
17+
}
18+
</style>
19+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/style.css">
20+
</head>
21+
<body>
22+
<svg id="mindmap"></svg>
23+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/d3.min.js"></script><script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/browser/index.js"></script><script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/index.js"></script><script>(r => {
24+
setTimeout(r);
25+
})(() => {
26+
const {
27+
markmap,
28+
mm
29+
} = window;
30+
const {
31+
el
32+
} = markmap.Toolbar.create(mm);
33+
el.setAttribute('style', 'position:absolute;bottom:20px;right:20px');
34+
document.body.append(el);
35+
})</script><script>((getMarkmap, getOptions, root2, jsonOptions) => {
36+
const markmap = getMarkmap();
37+
window.mm = markmap.Markmap.create(
38+
"svg#mindmap",
39+
(getOptions || markmap.deriveOptions)(jsonOptions),
40+
root2
41+
);
42+
})(() => window.markmap,null,{"type":"heading","depth":0,"payload":{"lines":[1,2]},"content":"DBs","children":[{"type":"heading","depth":1,"payload":{"lines":[3,4]},"content":"Data Model","children":[{"type":"heading","depth":2,"payload":{"lines":[5,6]},"content":"key-value stores","children":[]},{"type":"heading","depth":2,"payload":{"lines":[7,8]},"content":"Relational databases","children":[{"type":"heading","depth":3,"payload":{"lines":[9,10]},"content":"Row store","children":[]},{"type":"heading","depth":3,"payload":{"lines":[11,12]},"content":"Column store","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[13,14]},"content":"Document oriented stores","children":[]},{"type":"heading","depth":2,"payload":{"lines":[15,16]},"content":"Graph databases","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[17,18]},"content":"CAP Theorem","children":[{"type":"heading","depth":2,"payload":{"lines":[19,20]},"content":"Availability","children":[{"type":"heading","depth":3,"payload":{"lines":[21,22]},"content":"High Availability","children":[]},{"type":"heading","depth":3,"payload":{"lines":[23,24]},"content":"Partial Availability","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[25,26]},"content":"Consistency","children":[{"type":"heading","depth":3,"payload":{"lines":[27,28]},"content":"Strong Consistency","children":[]},{"type":"heading","depth":3,"payload":{"lines":[29,30]},"content":"Weak Consistency","children":[]},{"type":"heading","depth":3,"payload":{"lines":[31,32]},"content":"Eventual Consistency","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[33,34]},"content":"Partition Tolerance","children":[{"type":"heading","depth":3,"payload":{"lines":[35,36]},"content":"Partitioned Network","children":[]},{"type":"heading","depth":3,"payload":{"lines":[37,38]},"content":"Non-Partitioned Network","children":[]}]}]},{"type":"heading","depth":1,"payload":{"lines":[39,40]},"content":"ACID","children":[{"type":"heading","depth":2,"payload":{"lines":[41,42]},"content":"Atomicity","children":[]},{"type":"heading","depth":2,"payload":{"lines":[43,44]},"content":"Consistency","children":[]},{"type":"heading","depth":2,"payload":{"lines":[45,46]},"content":"Isolation","children":[]},{"type":"heading","depth":2,"payload":{"lines":[47,48]},"content":"Durability","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[49,50]},"content":"Read Phenomena","children":[{"type":"heading","depth":2,"payload":{"lines":[51,52]},"content":"Dirty read","children":[]},{"type":"heading","depth":2,"payload":{"lines":[53,54]},"content":"Non- repeatable read","children":[]},{"type":"heading","depth":2,"payload":{"lines":[55,56]},"content":"Phantom read","children":[]},{"type":"heading","depth":2,"payload":{"lines":[57,58]},"content":"Serialization anomaly","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[59,60]},"content":"Isolation level","children":[{"type":"heading","depth":2,"payload":{"lines":[61,62]},"content":"Read uncommitted","children":[]},{"type":"heading","depth":2,"payload":{"lines":[63,64]},"content":"Read committed","children":[]},{"type":"heading","depth":2,"payload":{"lines":[65,66]},"content":"Repeatable read","children":[]},{"type":"heading","depth":2,"payload":{"lines":[67,68]},"content":"Serializable","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[69,70]},"content":"Durability","children":[{"type":"heading","depth":2,"payload":{"lines":[71,72]},"content":"WAL (Write Ahead Log)","children":[]},{"type":"heading","depth":2,"payload":{"lines":[73,74]},"content":"Append Only File (AOF)","children":[]},{"type":"heading","depth":2,"payload":{"lines":[75,76]},"content":"Asynchronous snapshot","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[77,78]},"content":"Query Language","children":[{"type":"heading","depth":2,"payload":{"lines":[79,80]},"content":"SQL","children":[]},{"type":"heading","depth":2,"payload":{"lines":[81,82]},"content":"Non SQL","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[83,84]},"content":"Scalability","children":[{"type":"heading","depth":2,"payload":{"lines":[85,86]},"content":"Scaling","children":[{"type":"heading","depth":3,"payload":{"lines":[87,88]},"content":"Horizontal","children":[]},{"type":"heading","depth":3,"payload":{"lines":[89,90]},"content":"Vertical","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[91,92]},"content":"Partitioning","children":[{"type":"heading","depth":3,"payload":{"lines":[93,94]},"content":"Range Partitioning","children":[]},{"type":"heading","depth":3,"payload":{"lines":[95,96]},"content":"Hash Partitioning","children":[]},{"type":"heading","depth":3,"payload":{"lines":[97,98]},"content":"List Partitioning","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[99,100]},"content":"Replication","children":[{"type":"heading","depth":3,"payload":{"lines":[101,102]},"content":"Master-Slave","children":[]},{"type":"heading","depth":3,"payload":{"lines":[103,104]},"content":"Multi-Master","children":[]},{"type":"heading","depth":3,"payload":{"lines":[105,106]},"content":"Multi-Slave","children":[]},{"type":"heading","depth":3,"payload":{"lines":[107,108]},"content":"Masterless","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[109,110]},"content":"Sharding","children":[{"type":"heading","depth":3,"payload":{"lines":[111,112]},"content":"Key-Based Sharding","children":[]},{"type":"heading","depth":3,"payload":{"lines":[113,114]},"content":"Range-Based Sharding","children":[]},{"type":"heading","depth":3,"payload":{"lines":[115,116]},"content":"Hash-Based Sharding","children":[]}]}]},{"type":"heading","depth":1,"payload":{"lines":[117,118]},"content":"Categories","children":[{"type":"heading","depth":2,"payload":{"lines":[119,120]},"content":"OLTP","children":[]},{"type":"heading","depth":2,"payload":{"lines":[121,122]},"content":"OLAP","children":[]},{"type":"heading","depth":2,"payload":{"lines":[123,124]},"content":"HTAP","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[125,126]},"content":"Database engines classification","children":[{"type":"heading","depth":2,"payload":{"lines":[127,128]},"content":"Relational","children":[{"type":"heading","depth":3,"payload":{"lines":[129,130]},"content":"Postgres","children":[]},{"type":"heading","depth":3,"payload":{"lines":[131,132]},"content":"Oracle","children":[]},{"type":"heading","depth":3,"payload":{"lines":[133,134]},"content":"MySQL","children":[]},{"type":"heading","depth":3,"payload":{"lines":[135,136]},"content":"Microsoft SQL server","children":[]},{"type":"heading","depth":3,"payload":{"lines":[137,138]},"content":"MariaDB","children":[]},{"type":"heading","depth":3,"payload":{"lines":[139,140]},"content":"Amazon Aurora","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[141,142]},"content":"NonRelational","children":[{"type":"heading","depth":3,"payload":{"lines":[143,144]},"content":"MongoDB.","children":[]},{"type":"heading","depth":3,"payload":{"lines":[145,146]},"content":"Cassandra","children":[]},{"type":"heading","depth":3,"payload":{"lines":[147,148]},"content":"Couchbase","children":[]},{"type":"heading","depth":3,"payload":{"lines":[149,150]},"content":"Azure Cosmos DB","children":[]},{"type":"heading","depth":3,"payload":{"lines":[151,152]},"content":"Amazon DynamoDB","children":[]},{"type":"heading","depth":3,"payload":{"lines":[153,154]},"content":"Elasticsearch","children":[]},{"type":"heading","depth":3,"payload":{"lines":[155,156]},"content":"Neo4j","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[157,158]},"content":"Caching","children":[{"type":"heading","depth":3,"payload":{"lines":[159,160]},"content":"Redis","children":[]},{"type":"heading","depth":3,"payload":{"lines":[161,162]},"content":"Memcached","children":[]}]},{"type":"heading","depth":2,"payload":{"lines":[163,164]},"content":"Timeseries","children":[{"type":"heading","depth":3,"payload":{"lines":[165,166]},"content":"Prometheus","children":[]},{"type":"heading","depth":3,"payload":{"lines":[167,168]},"content":"InfluxDB","children":[]}]}]},{"type":"heading","depth":1,"payload":{"lines":[169,170]},"content":"Storage Engines","children":[{"type":"heading","depth":2,"payload":{"lines":[171,172]},"content":"BerkeleyDB","children":[]},{"type":"heading","depth":2,"payload":{"lines":[173,174]},"content":"LevelDB","children":[]},{"type":"heading","depth":2,"payload":{"lines":[175,176]},"content":"RocksDB","children":[]},{"type":"heading","depth":2,"payload":{"lines":[177,178]},"content":"LMDB","children":[]},{"type":"heading","depth":2,"payload":{"lines":[179,180]},"content":"libmdbx","children":[]},{"type":"heading","depth":2,"payload":{"lines":[181,182]},"content":"Sophia","children":[]},{"type":"heading","depth":2,"payload":{"lines":[183,184]},"content":"HaloDB","children":[]},{"type":"heading","depth":2,"payload":{"lines":[185,186]},"content":"InnoDB","children":[]},{"type":"heading","depth":2,"payload":{"lines":[187,188]},"content":"MyISAM","children":[]},{"type":"heading","depth":2,"payload":{"lines":[189,190]},"content":"Aria","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[191,192]},"content":"DB Store","children":[{"type":"heading","depth":2,"payload":{"lines":[193,194]},"content":"In memory","children":[]},{"type":"heading","depth":2,"payload":{"lines":[195,196]},"content":"On Disk","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[197,198]},"content":"Relations","children":[{"type":"heading","depth":2,"payload":{"lines":[199,200]},"content":"One to One","children":[]},{"type":"heading","depth":2,"payload":{"lines":[201,202]},"content":"One to Many","children":[]},{"type":"heading","depth":2,"payload":{"lines":[203,204]},"content":"Many to Many","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[205,206]},"content":"Normalization","children":[{"type":"heading","depth":2,"payload":{"lines":[207,208]},"content":"First Normal Form (1NF)","children":[]},{"type":"heading","depth":2,"payload":{"lines":[209,210]},"content":"Second Normal Form (2NF)","children":[]},{"type":"heading","depth":2,"payload":{"lines":[211,212]},"content":"Third Normal Form (3NF)","children":[]},{"type":"heading","depth":2,"payload":{"lines":[213,214]},"content":"Boyce-Codd Normal Form (BCNF)","children":[]},{"type":"heading","depth":2,"payload":{"lines":[215,216]},"content":"Fourth Normal Form (4NF)","children":[]},{"type":"heading","depth":2,"payload":{"lines":[217,218]},"content":"Fifth Normal Form (5NF)","children":[]}]},{"type":"heading","depth":1,"payload":{"lines":[219,220]},"content":"Joins","children":[{"type":"heading","depth":2,"payload":{"lines":[221,222]},"content":"Left Join","children":[]},{"type":"heading","depth":2,"payload":{"lines":[223,224]},"content":"Inner Join","children":[]},{"type":"heading","depth":2,"payload":{"lines":[225,226]},"content":"Right Join","children":[]},{"type":"heading","depth":2,"payload":{"lines":[227,228]},"content":"Outer Join","children":[]}]}]},{"colorFreezeLevel":7})</script>
43+
</body>
44+
</html>

DbMap.md

+232
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
---
2+
markmap:
3+
colorFreezeLevel: 7
4+
---
5+
6+
# DBs
7+
8+
## Data Model
9+
10+
### key-value stores
11+
12+
### Relational databases
13+
14+
#### Row store
15+
16+
#### Column store
17+
18+
### Document oriented stores
19+
20+
### Graph databases
21+
22+
## CAP Theorem
23+
24+
### Availability
25+
26+
#### High Availability
27+
28+
#### Partial Availability
29+
30+
### Consistency
31+
32+
#### Strong Consistency
33+
34+
#### Weak Consistency
35+
36+
#### Eventual Consistency
37+
38+
### Partition Tolerance
39+
40+
#### Partitioned Network
41+
42+
#### Non-Partitioned Network
43+
44+
## ACID
45+
46+
### Atomicity
47+
48+
### Consistency
49+
50+
### Isolation
51+
52+
### Durability
53+
54+
## Read Phenomena
55+
56+
### Dirty read
57+
58+
### Non- repeatable read
59+
60+
### Phantom read
61+
62+
### Serialization anomaly
63+
64+
## Isolation level
65+
66+
### Read uncommitted
67+
68+
### Read committed
69+
70+
### Repeatable read
71+
72+
### Serializable
73+
74+
## Durability
75+
76+
### WAL (Write Ahead Log)
77+
78+
### Append Only File (AOF)
79+
80+
### Asynchronous snapshot
81+
82+
## Query Language
83+
84+
### SQL
85+
86+
### Non SQL
87+
88+
## Scalability
89+
90+
### Scaling
91+
92+
#### Horizontal
93+
94+
#### Vertical
95+
96+
### Partitioning
97+
98+
#### Range Partitioning
99+
100+
#### Hash Partitioning
101+
102+
#### List Partitioning
103+
104+
### Replication
105+
106+
#### Master-Slave
107+
108+
#### Multi-Master
109+
110+
#### Multi-Slave
111+
112+
#### Masterless
113+
114+
### Sharding
115+
116+
#### Key-Based Sharding
117+
118+
#### Range-Based Sharding
119+
120+
#### Hash-Based Sharding
121+
122+
## Categories
123+
124+
### OLTP
125+
126+
### OLAP
127+
128+
### HTAP
129+
130+
## Database engines classification
131+
132+
### Relational
133+
134+
#### Postgres
135+
136+
#### Oracle
137+
138+
#### MySQL
139+
140+
#### Microsoft SQL server
141+
142+
#### MariaDB
143+
144+
#### Amazon Aurora
145+
146+
### NonRelational
147+
148+
#### MongoDB.
149+
150+
#### Cassandra
151+
152+
#### Couchbase
153+
154+
#### Azure Cosmos DB
155+
156+
#### Amazon DynamoDB
157+
158+
#### Elasticsearch
159+
160+
#### Neo4j
161+
162+
### Caching
163+
164+
#### Redis
165+
166+
#### Memcached
167+
168+
### Timeseries
169+
170+
#### Prometheus
171+
172+
#### InfluxDB
173+
174+
## Storage Engines
175+
176+
#### BerkeleyDB
177+
178+
#### LevelDB
179+
180+
#### RocksDB
181+
182+
#### LMDB
183+
184+
#### libmdbx
185+
186+
#### Sophia
187+
188+
#### HaloDB
189+
190+
#### InnoDB
191+
192+
#### MyISAM
193+
194+
#### Aria
195+
196+
## DB Store
197+
198+
### In memory
199+
200+
### On Disk
201+
202+
## Relations
203+
204+
### One to One
205+
206+
### One to Many
207+
208+
### Many to Many
209+
210+
## Normalization
211+
212+
### First Normal Form (1NF)
213+
214+
### Second Normal Form (2NF)
215+
216+
### Third Normal Form (3NF)
217+
218+
### Boyce-Codd Normal Form (BCNF)
219+
220+
### Fourth Normal Form (4NF)
221+
222+
### Fifth Normal Form (5NF)
223+
224+
## Joins
225+
226+
### Left Join
227+
228+
### Inner Join
229+
230+
### Right Join
231+
232+
### Outer Join

0 commit comments

Comments
 (0)