@@ -8484,8 +8484,8 @@ <h3>Peewee resources</h3>
84848484</li>
84858485</ul>
84868486 <h1>NoSQL Data Stores</h1>
8487- <p>Relational databases store the vast majority of web application
8488- persistent data. However, there are several alternative classifications of
8487+ <p>Relational databases store the vast majority of web application
8488+ persistent data. However, there are several alternative classifications of
84898489storage representations.</p>
84908490<ol>
84918491<li>Key-value pair</li>
@@ -8494,7 +8494,7 @@ <h1>NoSQL Data Stores</h1>
84948494<li>Graph</li>
84958495</ol>
84968496<p>These persistent data storage representations are commonly used to augment,
8497- rather than completely replace, relational databases. The underlying
8497+ rather than completely replace, relational databases. The underlying
84988498persistence type used by the NoSQL database often gives it different
84998499performance characteristics than a relational database, with better results
85008500on some types of read/writes and worse performance on others.</p>
@@ -8504,9 +8504,9 @@ <h2>Key-value Pair</h2>
85048504<h3>Key-value pair data stores</h3>
85058505<ul>
85068506<li>
8507- <p><a href="http://redis.io/">Redis</a> is an open source in-memory key-value pair data
8507+ <p><a href="http://redis.io/">Redis</a> is an open source in-memory key-value pair data
85088508 store. Redis is often called "the Swiss Army Knife of web application
8509- development." It can be used for caching, queuing, and storing session data
8509+ development." It can be used for caching, queuing, and storing session data
85108510 for faster access than a traditional relational database, among many other
85118511 use cases. <a href="https://github.com/andymccurdy/redis-py">Redis-py</a> is a solid
85128512 Python client to use with Redis.</p>
@@ -8532,7 +8532,7 @@ <h3>Redis resources</h3>
85328532 is a guide for getting up with the extremely useful in-memory data store.</p>
85338533</li>
85348534<li>
8535- <p>This video on
8535+ <p>This video on
85368536 <a href="https://www.youtube.com/watch?v=rP9EKvWt0zo">Scaling Redis at Twitter</a> is
85378537 a detailed look behind the scenes with a massive Redis deployment.</p>
85388538</li>
@@ -8576,28 +8576,28 @@ <h3>Redis Security</h3>
85768576<li>
85778577<p>Redis, just as with any relational or NoSQL database, needs to be secured
85788578 based on <a href="http://www.antirez.com/news/96">security guidelines</a>. There is
8579- also a post where the main author of Redis
8579+ also a post where the main author of Redis
85808580 <a href="http://www.antirez.com/news/96">cracks its security</a> to show the tradeoffs
85818581 purposely made between ease of use and security in the default settings.</p>
85828582</li>
85838583<li>
85848584<p><a href="https://www.isredisallsafe.com/">Is your Redis server safe?</a> is a tool
8585- to test that your Redis instances are locked down. The tool is based on
8586- the blog post
8585+ to test that your Redis instances are locked down. The tool is based on
8586+ the blog post
85878587 <a href="http://www.antirez.com/news/96">a few things about Redis security</a>.</p>
85888588</li>
85898589</ul>
85908590<h2>Document-oriented</h2>
85918591<p>A document-oriented database provides a semi-structured representation for
8592- nested data. </p>
8592+ nested data.</p>
85938593<h3>Document-oriented data stores</h3>
85948594<ul>
85958595<li>
8596- <p><a href="http://www.mongodb.org/">MongoDB</a> is an open source document-oriented
8597- data store with a Binary Object Notation (BSON) storage format that is
8598- JSON-style and familiar to web developers.
8596+ <p><a href="http://www.mongodb.org/">MongoDB</a> is an open source document-oriented
8597+ data store with a Binary Object Notation (BSON) storage format that is
8598+ JSON-style and familiar to web developers.
85998599 <a href="http://docs.mongodb.org/ecosystem/drivers/python/">PyMongo</a> is a
8600- commonly used client for interfacing with one or more MongoDB
8600+ commonly used client for interfacing with one or more MongoDB
86018601 instances through Python code. <a href="http://mongoengine.org/">MongoEngine</a>
86028602 is a Python ORM specifically written for MongoDB that is built on top
86038603 of PyMongo.</p>
@@ -8608,14 +8608,14 @@ <h3>Document-oriented data stores</h3>
86088608</li>
86098609<li>
86108610<p><a href="http://couchdb.apache.org/">Apache CouchDB</a> is also an open source project
8611- where the focus is on embracing RESTful-style HTTP access for working with
8611+ where the focus is on embracing RESTful-style HTTP access for working with
86128612 stored JSON data.</p>
86138613</li>
86148614</ul>
86158615<h3>Document-oriented data store resources</h3>
86168616<ul>
86178617<li>
8618- <p><a href="http://www.optinidus.com/blogs/guide-to-mongodb-for-startups/">MongoDB for startups</a>
8618+ <p><a href="http://www.optinidus.com/blogs/guide-to-mongodb-for-startups/">MongoDB for startups</a>
86198619 is a guide about using non-relational databases in green field environments.</p>
86208620</li>
86218621<li>
@@ -8629,9 +8629,9 @@ <h3>Document-oriented data store resources</h3>
86298629</ol>
86308630</li>
86318631<li>
8632- <p>The
8633- <a href="https://talkpython.fm/episodes/show/2/python-and-mongodb">Python and MongoDB</a>
8634- Talk Python to Me podcast has a great interview with the maintainer of the
8632+ <p>The
8633+ <a href="https://talkpython.fm/episodes/show/2/python-and-mongodb">Python and MongoDB</a>
8634+ Talk Python to Me podcast has a great interview with the maintainer of the
86358635 Python driver for MongoDB.</p>
86368636</li>
86378637<li>
@@ -8640,6 +8640,10 @@ <h3>Document-oriented data store resources</h3>
86408640 shows some potential pitfalls of relying on technologies where you do
86418641 not fully understand how they operate.</p>
86428642</li>
8643+ <li>
8644+ <p><a href="https://realpython.com/blog/python/introduction-to-mongodb-and-python/">Introduction to MongoDB and Python</a>
8645+ shows how to use Python to interface with MongoDB via PyMongo and MongoEngine.</p>
8646+ </li>
86438647</ul>
86448648<h2>Column-family table</h2>
86458649<p>A column-family table class of NoSQL data stores builds on the key-value
@@ -8656,17 +8660,17 @@ <h3>Column-family table data stores</h3>
86568660</ul>
86578661<h2>Graph</h2>
86588662<p>A graph database represents and stores data in three aspects: nodes, edges
8659- and properties. </p>
8660- <p>A <em>node</em> is an entity, such as a person or business. </p>
8661- <p>An <em>edge</em> is the relationship between two entities. For example, an
8662- edge could represent that a node for a person entity is an employee of a
8663- business entity. </p>
8664- <p>A <em>property</em> represents information about nodes. For example, an entity
8663+ and properties.</p>
8664+ <p>A <em>node</em> is an entity, such as a person or business.</p>
8665+ <p>An <em>edge</em> is the relationship between two entities. For example, an
8666+ edge could represent that a node for a person entity is an employee of a
8667+ business entity.</p>
8668+ <p>A <em>property</em> represents information about nodes. For example, an entity
86658669representing a person could have a property of "female" or "male".</p>
86668670<h3>Graph data stores</h3>
86678671<ul>
86688672<li>
8669- <p><a href="http://www.neo4j.org/">Neo4j</a> is one of the most widely used graph
8673+ <p><a href="http://www.neo4j.org/">Neo4j</a> is one of the most widely used graph
86708674 databases and runs on the Java Virtual Machine stack.</p>
86718675</li>
86728676<li>
@@ -8681,7 +8685,7 @@ <h3>Graph data stores</h3>
86818685<h3>Graph data store resources</h3>
86828686<ul>
86838687<li><a href="http://www.slideshare.net/maxdemarzi/introduction-to-graph-databases-12735789">Introduction to Graph Databases</a>
8684- covers trends in NoSQL data stores and compares graph databases to other
8688+ covers trends in NoSQL data stores and compares graph databases to other
86858689 data store types.</li>
86868690</ul>
86878691<h2>NoSQL third-party services</h2>
@@ -8694,7 +8698,7 @@ <h2>NoSQL data store resources</h2>
86948698<li>
86958699<p><a href="http://www.thoughtworks.com/insights/blog/nosql-databases-overview">NoSQL databases: an overview</a>
86968700 explains what NoSQL means, how data is stored differently than in
8697- relational systems and what the Consistency, Availability and
8701+ relational systems and what the Consistency, Availability and
86988702 Partition-Tolerance (CAP) Theorem means.</p>
86998703</li>
87008704<li>
@@ -8708,12 +8712,12 @@ <h2>NoSQL data store resources</h2>
87088712</li>
87098713<li>
87108714<p>The <a href="http://blog.thislongrun.com/2015/03/the-cap-theorem-series.html">CAP Theorem series</a>
8711- explains concepts related to NoSQL such as what is ACID compared to CAP, CP
8715+ explains concepts related to NoSQL such as what is ACID compared to CAP, CP
87128716 versus CA and high availability in large scale deployments.</p>
87138717</li>
87148718<li>
8715- <p><a href="http://www.nosqlweekly.com/">NoSQL Weekly</a> is a free curated email
8716- newsletter that aggregates articles, tutorials, and videos about
8719+ <p><a href="http://www.nosqlweekly.com/">NoSQL Weekly</a> is a free curated email
8720+ newsletter that aggregates articles, tutorials, and videos about
87178721 non-relational data stores.</p>
87188722</li>
87198723<li>
@@ -8724,7 +8728,7 @@ <h2>NoSQL data store resources</h2>
87248728<li>
87258729<p>Relational databases such as MySQL and PostgreSQL have added features in
87268730 more recent versions that mimic some of the capabilities of NoSQL data
8727- stores. For example, check out this blog post on
8731+ stores. For example, check out this blog post on
87288732 <a href="http://engineering.wix.com/2015/12/10/scaling-to-100m-mysql-is-a-better-nosql/">using MySQL as a key-value pair store</a>
87298733 and this post on
87308734 <a href="https://blog.codeship.com/unleash-the-power-of-storing-json-in-postgres/">storing JSON data in PostgreSQL</a>.</p>
@@ -8733,20 +8737,20 @@ <h2>NoSQL data store resources</h2>
87338737<h2>NoSQL data stores learning checklist</h2>
87348738<ol>
87358739<li>
8736- <p>Understand why NoSQL data stores are better for some use cases than
8737- relational databases. In general these benefits are only seen at large
8740+ <p>Understand why NoSQL data stores are better for some use cases than
8741+ relational databases. In general these benefits are only seen at large
87388742 scale so they may not be applicable to your web application.</p>
87398743</li>
87408744<li>
8741- <p>Integrate Redis into your project for a speed boost over slower persistent
8742- storage. Storing session data in memory is generally much faster than
8743- saving that data in a traditional relational database that uses persistent
8744- storage. Note that when memory is flushed the data goes away so anything
8745- that needs to be persistent must still be backed up to disk on a regular
8745+ <p>Integrate Redis into your project for a speed boost over slower persistent
8746+ storage. Storing session data in memory is generally much faster than
8747+ saving that data in a traditional relational database that uses persistent
8748+ storage. Note that when memory is flushed the data goes away so anything
8749+ that needs to be persistent must still be backed up to disk on a regular
87468750 basis.</p>
87478751</li>
87488752<li>
8749- <p>Evaluate other use cases such as storing transient logs in a
8753+ <p>Evaluate other use cases such as storing transient logs in a
87508754 document-oriented data store such as MongoDB.</p>
87518755</li>
87528756</ol>
0 commit comments