# Database
## Concepts
- Choosing a database for workload
- Schema = shape of the data
- Types
- [[nosql|NoSQL]], or document based database
- Relational
- [[graph-db|Graph Database]]
- [[key-val|Key-value store]]
- Search engines
- Wide Column
- Message brokers
- Multi model
- [[vector-db|Vector]] - high-dimensional data, good for similarity search
- ACID = atomicity, consistency, isolation, durability
- Transactions, e.g. 5 queries packed as a transaction, either all happens or
none
- Indexes, so that don't have to linear search every time we do a query. A
[[tree]] structure is created.
## Properties
- [[db-normalization|Normalization]]
## Choices
- [[mongo|MongoDB]]
- [[postgres|PostgreSQL]]
- [[neo4j|Neo4j]]
- [[redis|Redis]]
## Resources
[Complete Intro to Databases | Brian Holt](https://btholt.github.io/complete-intro-to-databases/)