mirror of
				https://github.com/donnemartin/system-design-primer.git
				synced 2025-11-04 10:12:32 +03:00 
			
		
		
		
	Add NoSQL intro section
This commit is contained in:
		
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								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.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user