|
@@ -1,18 +1,20 @@
|
|
|
---
|
|
|
-title: DBMSes
|
|
|
+title: Database Management Systems (DBMSs)
|
|
|
breadcrumbs:
|
|
|
- title: Software Engineering
|
|
|
- title: General
|
|
|
---
|
|
|
{% include header.md %}
|
|
|
|
|
|
-A very brief comparison of different database management systems (DBMSes).
|
|
|
+A very brief comparison of different database management systems (DBMSs).
|
|
|
|
|
|
-## Relational DBMSes
|
|
|
+## Relational DBMSs (RDBMSs)
|
|
|
|
|
|
-### General
|
|
|
-
|
|
|
-- Most RDBMSes use their own variation of standard SQL, with both extra and missing features.
|
|
|
+- RDBMSs are based on tables consisting of rows and columns, and it thus apropriate for structured data.
|
|
|
+- RDBMSs require the core properties atomicity, consistency, isolation and durability (ACID).
|
|
|
+- Normalization is heavily used (by the user) to remove data redundancy.
|
|
|
+- The need for consistency (and other properties) may hinder horizontal scaling.
|
|
|
+- Most RDBMSs use their own variation of standard SQL, with both extra and missing features.
|
|
|
|
|
|
### SQLite
|
|
|
|
|
@@ -34,6 +36,15 @@ A very brief comparison of different database management systems (DBMSes).
|
|
|
- Not fully SQL compliant, lacking support for certain features.
|
|
|
- Limited support for replication.
|
|
|
|
|
|
+## Object-Oriented DBMSs (OODBMSs)
|
|
|
+
|
|
|
+- OODBMSs are based on objects from object-oriented programming and thus allows using a common representation and environment in both the application layer and database layer without the need for querying the data (unlike RDBMSs).
|
|
|
+
|
|
|
+## Object-Relational DBMSs (ORDBMSs)
|
|
|
+
|
|
|
+- ORDBMSs are a hybrid of OODBMSs and RDBMSs which contains features from both.
|
|
|
+- Unline pure RDBMSs, they may support (e.g.) inheritance and custom data types.
|
|
|
+
|
|
|
### PostgreSQL
|
|
|
|
|
|
- Open-source and community-driven.
|
|
@@ -42,4 +53,45 @@ A very brief comparison of different database management systems (DBMSes).
|
|
|
- Focused more on SQL compliance and features than speed.
|
|
|
- Better concurrent read-write performance than MySQL, but less performant for simple read-heavy traffic.
|
|
|
|
|
|
+## NoSQL
|
|
|
+
|
|
|
+- NoSQL is an umbrella term for non-relational DBMSs and thus consists of many different categories.
|
|
|
+- It's aimed at non-structured data that wouldn't fit nicely in a (relational) table.
|
|
|
+- OODBMSs may technically be considered NoSQL, but they often contain features which make them more similar to RDBMSs.
|
|
|
+- While RDBMSs rely on strict consistency, NoSQL aims for eventual consistency, meaning it allows data changes to reach all database nodes in a short time rather than instantaneously. This means that the data received from the database(s) may in some cases be slightly outdated.
|
|
|
+
|
|
|
+### Key-Value Stores
|
|
|
+
|
|
|
+- Generally consists of an associative array of unstructured/blob values indexed by unique keys.
|
|
|
+- Typically used for data caching and message queueing.
|
|
|
+- Examples:
|
|
|
+ - Memcached
|
|
|
+ - Redis
|
|
|
+
|
|
|
+### Columnar-Oriented Databases
|
|
|
+
|
|
|
+- Similar to RDBMSs, but splits all columns into different files. This allows for certain types of optimizations, which may improve both storage and querying for certain application types.
|
|
|
+- Examples:
|
|
|
+ - Apache Cassandra
|
|
|
+ - Apache HBase
|
|
|
+
|
|
|
+### Document-Oriented Databases
|
|
|
+
|
|
|
+- Aka document stores.
|
|
|
+- A special type of key-value stores with documents as values, but contains metadata about the document as well.
|
|
|
+- May allow nesting of documents.
|
|
|
+- Examples:
|
|
|
+ - MongoDB
|
|
|
+ - Couchbase
|
|
|
+ - Apache CouchDB
|
|
|
+
|
|
|
+### Graph Databases
|
|
|
+
|
|
|
+- Document-oriented databases which use graph theort to relate documents.
|
|
|
+- Useful for applications where relations in the data are of interest.
|
|
|
+- Examples:
|
|
|
+ - Neo4j
|
|
|
+ - ArangoDB
|
|
|
+ - OrientDB
|
|
|
+
|
|
|
{% include footer.md %}
|