Przeglądaj źródła

Add NoSQL intro section

Donne Martin 8 lat temu
rodzic
commit
c83d146def
1 zmienionych plików z 12 dodań i 0 usunięć
  1. 12 0
      README.md

+ 12 - 0
README.md

@@ -1065,3 +1065,15 @@ Benchmarking and profiling might point you to the following optimizations.
 * [Is there a good reason i see VARCHAR(255) used so often?](http://stackoverflow.com/questions/1217466/is-there-a-good-reason-i-see-varchar255-used-so-often-as-opposed-to-another-l)
 * [How do null values affect performance?](http://stackoverflow.com/questions/1017239/how-do-null-values-affect-performance-in-a-database-search)
 * [Slow query log](http://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html)
+
+### NoSQL
+
+NoSQL is a collection of data items represented in a **key-value store**, **document-store**, **wide column store**, or a **graph database**.  Data is denormalized, and joins are generally done in the application code.  Most NoSQL stores lack true ACID transactions and favor [eventual consistency](#eventual-consistency).
+
+**BASE** is often used to describe the properties of NoSQL databases.  In comparison with the [CAP Theorem](#cap-theorem), BASE chooses availability over consistency.
+
+* **Basically available** - the system guarantees availability.
+* **Soft state** - the state of the system may change over time, even without input.
+* **Eventual consistency** - the system will become consistent over a period of time, given that the system doesn't receive input during that period.
+
+In addition to choosing between [SQL or NoSQL](#sql-or-nosql), it is helpful to understand which type of NoSQL database best fits your use case(s).  We'll review **key-value stores**, **document-stores**, **wide column stores**, and **graph databases** in the next section.