Preface |
|
vii | |
Overview |
|
ix | |
|
|
xix | |
|
|
xxii | |
|
|
|
|
3 | (14) |
|
|
3 | (2) |
|
|
5 | (2) |
|
|
7 | (7) |
|
1.3.1 Entity-Relationship Model |
|
|
8 | (3) |
|
1.3.2 Unified Modeling Language |
|
|
11 | (3) |
|
|
14 | (3) |
|
2 Relational Database Management Systems |
|
|
17 | (16) |
|
2.1 Relational Data Model |
|
|
17 | (2) |
|
2.1.1 Database and Relation Schemas |
|
|
17 | (1) |
|
2.1.2 Mapping ER Models to Schemas |
|
|
18 | (1) |
|
|
19 | (1) |
|
2.3 Referential Integrity |
|
|
20 | (2) |
|
2.4 Relational Query Languages |
|
|
22 | (2) |
|
2.5 Concurrency Management |
|
|
24 | (4) |
|
|
24 | (2) |
|
2.5.2 Concurrency Control |
|
|
26 | (2) |
|
|
28 | (5) |
|
Part II NOSQL And Non-Relational Databases |
|
|
|
3 New Requirements, "Not only SQL" and the Cloud |
|
|
33 | (8) |
|
3.1 Weaknesses of the Relational Data Model |
|
|
33 | (3) |
|
3.1.1 Inadequate Representation of Data |
|
|
33 | (1) |
|
3.1.2 Semantic Overloading |
|
|
34 | (1) |
|
3.1.3 Weak Support for Recursion |
|
|
34 | (1) |
|
|
35 | (1) |
|
|
36 | (1) |
|
3.3 New Data Management Challenges |
|
|
37 | (2) |
|
|
39 | (2) |
|
|
41 | (28) |
|
4.1 Graphs and Graph Structures |
|
|
41 | (4) |
|
4.1.1 A Glimpse on Graph Theory |
|
|
42 | (2) |
|
4.1.2 Graph Traversal and Graph Problems |
|
|
44 | (1) |
|
4.2 Graph Data Structures |
|
|
45 | (8) |
|
|
46 | (1) |
|
|
46 | (2) |
|
|
48 | (2) |
|
|
50 | (1) |
|
|
51 | (2) |
|
4.3 The Property Graph Model |
|
|
53 | (3) |
|
4.4 Storing Property Graphs in Relational Tables |
|
|
56 | (2) |
|
4.5 Advanced Graph Models |
|
|
58 | (4) |
|
4.6 Implementations and Systems |
|
|
62 | (6) |
|
|
62 | (3) |
|
|
65 | (1) |
|
|
66 | (2) |
|
|
68 | (1) |
|
|
69 | (36) |
|
|
69 | (12) |
|
|
69 | (2) |
|
5.1.2 Document Type Definition (DTD) |
|
|
71 | (2) |
|
5.1.3 XML Schema Definition (XSD) |
|
|
73 | (2) |
|
|
75 | (1) |
|
5.1.5 Tree Model of XML Documents |
|
|
76 | (2) |
|
|
78 | (3) |
|
|
81 | (3) |
|
|
81 | (1) |
|
|
82 | (1) |
|
|
83 | (1) |
|
5.3 Storing XML in Relational Databases |
|
|
84 | (6) |
|
|
84 | (2) |
|
5.3.2 Schema-Based Mapping |
|
|
86 | (3) |
|
|
89 | (1) |
|
|
90 | (10) |
|
|
90 | (2) |
|
|
92 | (5) |
|
5.4.3 XML Concurrency Control |
|
|
97 | (3) |
|
5.5 Implementations and Systems |
|
|
100 | (4) |
|
|
100 | (2) |
|
|
102 | (2) |
|
|
104 | (1) |
|
6 Key-value Stores and Document Databases |
|
|
105 | (38) |
|
|
105 | (4) |
|
|
106 | (3) |
|
|
109 | (9) |
|
6.2.1 Java Script Object Notation |
|
|
110 | (2) |
|
|
112 | (4) |
|
6.2.3 Representational State Transfer |
|
|
116 | (2) |
|
6.3 Implementations and Systems |
|
|
118 | (22) |
|
6.3.1 Apache Hadoop MapReduce |
|
|
118 | (3) |
|
|
121 | (6) |
|
|
127 | (1) |
|
|
128 | (1) |
|
|
129 | (3) |
|
|
132 | (1) |
|
|
133 | (3) |
|
|
136 | (3) |
|
|
139 | (1) |
|
|
140 | (3) |
|
|
143 | (18) |
|
|
143 | (8) |
|
|
144 | (5) |
|
|
149 | (2) |
|
|
151 | (7) |
|
7.3 Implementations and Systems |
|
|
158 | (1) |
|
|
158 | (1) |
|
|
158 | (1) |
|
|
159 | (2) |
|
8 Extensible Record Stores |
|
|
161 | (32) |
|
|
161 | (5) |
|
|
166 | (15) |
|
8.2.1 Memtables and immutable sorted data files |
|
|
166 | (3) |
|
|
169 | (2) |
|
|
171 | (2) |
|
|
173 | (2) |
|
|
175 | (6) |
|
8.3 Implementations and Systems |
|
|
181 | (10) |
|
|
181 | (4) |
|
|
185 | (2) |
|
|
187 | (2) |
|
|
189 | (2) |
|
|
191 | (2) |
|
|
193 | (42) |
|
|
193 | (9) |
|
|
194 | (2) |
|
9.1.2 Normalization for Objects |
|
|
196 | (4) |
|
9.1.3 Referential Integrity for Objects |
|
|
200 | (1) |
|
9.1.4 Object-Oriented Standards and Persistence Patterns |
|
|
200 | (2) |
|
9.2 Object-Relational Mapping |
|
|
202 | (7) |
|
9.2.1 Mapping Collection Attributes to Relations |
|
|
203 | (1) |
|
9.2.2 Mapping Reference Attributes to Relations |
|
|
204 | (1) |
|
9.2.3 Mapping Class Hierarchies to Relations |
|
|
204 | (4) |
|
|
208 | (1) |
|
|
209 | (8) |
|
9.3.1 Java Persistence API (JPA) |
|
|
209 | (6) |
|
9.3.2 Apache Java Data Objects (JDO) |
|
|
215 | (2) |
|
9.4 Object-Relational Databases |
|
|
217 | (5) |
|
|
222 | (7) |
|
|
223 | (1) |
|
9.5.2 Single-Level Storage |
|
|
224 | (2) |
|
9.5.3 Reference Management |
|
|
226 | (1) |
|
|
226 | (3) |
|
9.6 Implementations and Systems |
|
|
229 | (3) |
|
|
229 | (1) |
|
|
230 | (2) |
|
|
232 | (3) |
|
Part III Distributed Data Management |
|
|
|
10 Distributed Database Systems |
|
|
235 | (10) |
|
10.1 Scaling horizontally |
|
|
235 | (1) |
|
10.2 Distribution Transparency |
|
|
236 | (1) |
|
10.3 Failures in Distributed Systems |
|
|
237 | (2) |
|
10.4 Epidemic Protocols and Gossip Communication |
|
|
239 | (5) |
|
|
241 | (2) |
|
10.4.2 Death Certificates |
|
|
243 | (1) |
|
|
244 | (1) |
|
|
245 | (16) |
|
11.1 Properties and Types of Fragmentation |
|
|
245 | (4) |
|
11.2 Fragmentation Approaches |
|
|
249 | (6) |
|
11.2.1 Fragmentation for Relational Tables |
|
|
249 | (1) |
|
|
250 | (2) |
|
11.2.3 Graph Partitioning |
|
|
252 | (1) |
|
11.2.4 Sharding for Key-Based Stores |
|
|
253 | (1) |
|
11.2.5 Object Fragmentation |
|
|
254 | (1) |
|
|
255 | (4) |
|
11.3.1 Cost-based allocation |
|
|
256 | (1) |
|
11.3.2 Consistent Hashing |
|
|
257 | (2) |
|
|
259 | (2) |
|
12 Replication And Synchronization |
|
|
261 | (34) |
|
|
261 | (5) |
|
12.1.1 Master-Slave Replication |
|
|
262 | (1) |
|
12.1.2 Multi-Master Replication |
|
|
263 | (1) |
|
12.1.3 Replication Factor and the Data Replication Problem |
|
|
263 | (2) |
|
12.1.4 Hinted Handoff and Read Repair |
|
|
265 | (1) |
|
12.2 Distributed Concurrency Control |
|
|
266 | (10) |
|
|
266 | (2) |
|
|
268 | (8) |
|
12.2.3 Multiversion Concurrency Control |
|
|
276 | (1) |
|
12.3 Ordering of Events and Vector Clocks |
|
|
276 | (17) |
|
|
277 | (3) |
|
12.3.2 Concurrency and Clock Properties |
|
|
280 | (1) |
|
|
281 | (3) |
|
|
284 | (5) |
|
12.3.5 Optimizations of Vector Clocks |
|
|
289 | (4) |
|
|
293 | (2) |
|
|
295 | (16) |
|
|
295 | (7) |
|
13.1.1 Write and Read Quorums |
|
|
298 | (2) |
|
13.1.2 Snapshot Isolation |
|
|
300 | (2) |
|
|
302 | (4) |
|
13.2.1 Data-Centric Consistency Models |
|
|
303 | (2) |
|
13.2.2 Client-Centric Consistency Models |
|
|
305 | (1) |
|
13.3 Consistency Trade-offs |
|
|
306 | (1) |
|
|
307 | (4) |
|
|
|
14 Further Database Technologies |
|
|
311 | (6) |
|
14.1 Linked Data and RDF Data Management |
|
|
311 | (1) |
|
14.2 Data Stream Management |
|
|
312 | (1) |
|
|
313 | (1) |
|
14.4 Geographic Information Systems |
|
|
314 | (1) |
|
|
315 | (1) |
|
|
315 | (1) |
|
|
316 | (1) |
|
|
317 | (16) |
|
15.1 Database Reengineering |
|
|
317 | (1) |
|
15.2 Database Requirements |
|
|
318 | (2) |
|
15.3 Polyglot Database Architectures |
|
|
320 | (4) |
|
15.3.1 Polyglot Persistence |
|
|
320 | (2) |
|
15.3.2 Lambda Architecture |
|
|
322 | (1) |
|
15.3.3 Multi-Model Databases |
|
|
322 | (2) |
|
15.4 Implementations and Systems |
|
|
324 | (7) |
|
|
324 | (2) |
|
|
326 | (1) |
|
|
327 | (3) |
|
|
330 | (1) |
|
|
331 | (2) |
Bibliography |
|
333 | (14) |
Index |
|
347 | |