Håvard O. Nordstrand 5 tahun lalu
induk
melakukan
8121a12a76
2 mengubah file dengan 59 tambahan dan 7 penghapusan
  1. 1 1
      index.md
  2. 58 6
      se/general/dbmses.md

+ 1 - 1
index.md

@@ -99,7 +99,7 @@ Random collection of config notes and miscellaneous theory. Technically not a wi
 
 ### General
 
-- [DBMSes](se/general/dbmses/)
+- [Database Management Systems (DBMSs)](se/general/dbmses/)
 - [Licenses](se/general/licenses/)
 
 ### Languages

+ 58 - 6
se/general/dbmses.md

@@ -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 %}