WebFund 2016W Lecture 11: Difference between revisions
Added partial in class notes. |
Added more in-class notes. |
||
Line 31: | Line 31: | ||
- concurrent access | - concurrent access | ||
- data persistence | - data persistence | ||
What kind of database? | |||
- key-value stores | |||
like a filesystem for very small files, | |||
with search | |||
- document store <-- we'll use this | |||
values have structure | |||
can index on values | |||
- relational database | |||
sets of tables | |||
tables have rows and columns | |||
relations between tables | |||
example: names and addresses | |||
- rows are individual people | |||
- columns are first name, last name, address, city, etc. | |||
relation example: customers and purchases | |||
- each purchase (invoice) has item purchased, price, and | |||
customer ID | |||
- customer table connects customer ID and name, address, etc | |||
We're going to use MongoDB, a document store, not a relational | |||
database. | |||
- stores JSON-like documents | |||
- scriptable in JavaScript | |||
If we were to use a relational database, we'd have to learn SQL | |||
- Structured Query Language | |||
- many man implementations | |||
Oracle, MySQL (MariaDB), PostgreSQL, MS SQL Server, SQLite, etc | |||
- you mainly need a relational database to handle transactions | |||
Transaction | |||
- what if a change to a database involves multiple tables? | |||
- a transaction ensures all tables are changed or none are | |||
Classic example: airline tickets | |||
Tables: | |||
- seat reservations | |||
- payment | |||
- customer info | |||
When you buy a ticket, you want to change all three | |||
A transaction ensures atomic behavior | |||
all happen or none happen | |||
MongoDB Relational DB | |||
Document => row | |||
Collection => table | |||
</pre> | </pre> |
Revision as of 20:20, 23 February 2016
Notes
In-class Notes
Lecture 11 ---------- Databases /var/spool/mail - where email is stored - one file per user my mail inbox in /var/spool/mail/soma Who accesses this file? - mail client - mail server What happens if the mail server delivers mail while I'm going through my email (deleting, filing) - unless you lock it, you lose mail, mail client will overwrite inbox and delete new messages - solution: lock the inbox create a soma.lock file (inside it has the process ID of the accessing process) This is a bad idea that does not scale Instead, use a database - concurrent access - data persistence What kind of database? - key-value stores like a filesystem for very small files, with search - document store <-- we'll use this values have structure can index on values - relational database sets of tables tables have rows and columns relations between tables example: names and addresses - rows are individual people - columns are first name, last name, address, city, etc. relation example: customers and purchases - each purchase (invoice) has item purchased, price, and customer ID - customer table connects customer ID and name, address, etc We're going to use MongoDB, a document store, not a relational database. - stores JSON-like documents - scriptable in JavaScript If we were to use a relational database, we'd have to learn SQL - Structured Query Language - many man implementations Oracle, MySQL (MariaDB), PostgreSQL, MS SQL Server, SQLite, etc - you mainly need a relational database to handle transactions Transaction - what if a change to a database involves multiple tables? - a transaction ensures all tables are changed or none are Classic example: airline tickets Tables: - seat reservations - payment - customer info When you buy a ticket, you want to change all three A transaction ensures atomic behavior all happen or none happen MongoDB Relational DB Document => row Collection => table