{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": { "init_cell": true, "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "skip" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "---\n", "license:\n", " code: MIT\n", " content: CC-BY-4.0\n", "github: https://github.com/ocademy-ai/machine-learning\n", "venue: By Ocademy\n", "open_access: true\n", "bibliography:\n", " - https://raw.githubusercontent.com/ocademy-ai/machine-learning/main/open-machine-learning-jupyter-book/references.bib\n", "---" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "notebookRunGroups": { "groupValue": "" }, "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Relational vs. non-relational database" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## 1. Relational databases" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "A relational database is a collection of information that organizes data in predefined relationships where data is stored in one or more tables (or \"relations\") of columns and rows, making it easy to see and understand how different data structures relate to each other.[1]\n", "\n", "\n", "\n", "*1. What is a relational database (Rdbms)? (n.d.). Google Cloud. Retrieved 7 February 2023, from https://cloud.google.com/learn/what-is-a-relational-database*\n", "\n", "" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### It all starts with tables\n", "\n", "Let’s begin our exploration by starting a table to store information about cities. We might start with their name and country. You could store this in a table as follows:" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "| City | Country |\n", "| -------- | ------------- |\n", "| Tokyo | Japan |\n", "| Atlanta | United States |\n", "| Auckland | New Zealand |\n", "\n", "Notice the column names of `city`, `country` and `population` describe the data being stored, and each row has information about one city.\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "cell_style": "center", "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### The shortcomings of a single table approach\n", "\n", "Let’s start to add some additional data to our burgeoning database - annual rainfall (in millimeters). We'll focus on the years 2018, 2019 and 2020. If we were to add it for Tokyo, it might look something like this:" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "cell_style": "center", "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "| City | Country | Year | Amount |\n", "| ----- | ------- | ---- | ------ |\n", "| Tokyo | Japan | 2020 | 1690 |\n", "| Tokyo | Japan | 2019 | 1874 |\n", "| Tokyo | Japan | 2018 | 1445 |\n", "\n", "You might notice we’re duplicating the name and country of the city over and over." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Let’s add new columns for each year:" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "| City | Country | 2018 | 2019 | 2020 |\n", "| -------- | ------------- | ---- | ---- | ---- |\n", "| Tokyo | Japan | 1445 | 1874 | 1690 |\n", "| Atlanta | United States | 1779 | 1111 | 1683 |\n", "| Auckland | New Zealand | 1386 | 942 | 1176 |" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "While this avoids the row duplication, it adds a couple of other challenges. \n", "\n", "- We would need to modify the structure of our table each time there’s a new year. \n", "- Additionally, as our data grows having our years as columns will make it trickier to retrieve and calculate values.\n", "\n", "This is why we need multiple tables and relationships. " ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### The concepts of relationships" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Let's return to our data and determine how we want to split things up.\n", "\n", "| City | Country |\n", "| -------- | ------------- |\n", "| Tokyo | Japan |\n", "| Atlanta | United States |\n", "| Auckland | New Zealand |" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "We need to figure out how to reference each city. We need some form of an identifier, ID or (in technical database terms) a primary key." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "#### cities\n", "\n", "| city_id | City | Country |\n", "| ------- | -------- | ------------- |\n", "| 1 | Tokyo | Japan |\n", "| 2 | Atlanta | United States |\n", "| 3 | Auckland | New Zealand |\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "With our cities table created, let's store the rainfall. " ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "#### rainfall\n", "\n", "| rainfall_id | city_id | Year | Amount |\n", "| ----------- | ------- | ---- | ------ |\n", "| 1 | 1 | 2018 | 1445 |\n", "| 2 | 1 | 2019 | 1874 |\n", "| 3 | 1 | 2020 | 1690 |\n", "| 4 | 2 | 2018 | 1779 |\n", "| 5 | 2 | 2019 | 1111 |\n", "| 6 | 2 | 2020 | 1683 |\n", "| 7 | 3 | 2018 | 1386 |\n", "| 8 | 3 | 2019 | 942 |\n", "| 9 | 3 | 2020 | 1176 |" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### Retrieving the data" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "If we are using a relational database such as MySQL, SQL Server or Oracle, we can use a language called **Structured Query Language** or **SQL**." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "To retrieve data you use the command `SELECT`." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "```sql\n", "SELECT city\n", "FROM cities;\n", "\n", "-- Output:\n", "-- Tokyo\n", "-- Atlanta\n", "-- Auckland\n", "```\n", "\n", "`SELECT` is where you list the columns, and `FROM` is where you list the tables." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Let's imagine we only wanted to display cities in New Zealand. We need some form of a filter. The SQL keyword for this is `WHERE`." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "```sql\n", "SELECT city\n", "FROM cities\n", "WHERE country = 'New Zealand';\n", "\n", "-- Output:\n", "-- Auckland\n", "```" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### Joining data" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Until now we've retrieved data from a single table. Now we want to bring the data together from both `cities` and `rainfall`. This is done by *joining* them together." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "cell_style": "split", "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Let's retrieve the rainfall for 2019 for all our cities." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "```sql\n", "SELECT cities.city\n", " rainfall.amount\n", "FROM cities\n", " INNER JOIN rainfall ON cities.city_id = rainfall.city_id\n", "```" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "cell_style": "split", "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Now we can add the `WHERE` statement to filter out the only year 2019." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "```sql\n", "SELECT cities.city\n", " rainfall.amount\n", "FROM cities\n", " INNER JOIN rainfall ON cities.city_id = rainfall.city_id\n", "WHERE rainfall.year = 2019\n", "\n", "-- Output\n", "\n", "-- city | amount\n", "-- -------- | ------\n", "-- Tokyo | 1874\n", "-- Atlanta | 1111\n", "-- Auckland | 942\n", "```" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "cell_style": "split", "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## 2. Non-relational data" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "A **non-relational database** stores data in a non-tabular form, and tends to be more flexible than the traditional, SQL-based, relational database structures. It does not follow the relational model provided by traditional relational database management systems.[1]\n", "\n", "\n", "\n", "*1. What is a non-relational database? (n.d.). MongoDB. Retrieved 9 February 2023, from https://www.mongodb.com/databases/non-relational*\n", "\n", "" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "
\n", "\n", "\n", "Relational VS Non Relational Databases[1]\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "*1. Duca, A. L. (2021, October 5). Relational vs non relational databases. Medium. https://towardsdatascience.com/relational-vs-non-relational-databases-f2ac792482e3*\n", "\n", "" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "### NoSQL" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "**NoSQL** is an umbrella term for the different ways to store non-relational data and can be interpreted as \"non-SQL\", \"non-relational\" or \"not only SQL\".\n", "\n", "And these types of database systems can be categorized into 4 types." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "[Key-value](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#keyvalue-data-stores) databases pair unique keys, which are unique identifiers associated with a value. These pairs are stored using a [hash table](https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/) with an appropriate hashing function." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "
\n", "\n", "\n", "Graphical representation of a key-value data store showing 4 unique numerical keys that are associated with 4 various values[1]\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "*1. admin. (2018, March 18). Azure Cosmos DB - key-value database in the cloud. Michał Białecki Blog. https://www.michalbialecki.com/en/2018/03/18/azure-cosmos-db-key-value-database-cloud/*\n", "\n", "" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "[Graph](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#graph-data-stores) databases describe relationships in data and are represented as a collection of nodes and edges. A node represents an entity, something that exists in the real world such as a student or bank statement. Edges represent the relationship between two entities Each node and edge have properties that provide additional information about each node and edge." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "
\n", "\n", "\n", "Graphical representation of a graph data store showing the relationships between people, their interests and locations[1]\n", "\n", "
\n", " \n", "\n", "\n", "\n", "\n", "\n", "*1. manishmsfte. (n.d.). Introduction—Azure cosmos db for apache gremlin. Retrieved 9 February 2023, from https://learn.microsoft.com/en-us/azure/cosmos-db/gremlin/introduction*\n", "\n", "" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "[Columnar](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) data stores organize data into columns and rows like a relational data structure but each column is divided into groups called a column family, where all the data under one column is related and can be retrieved and changed in one unit." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "
\n", "\n", "\n", "Graphical representation of a columnar data store showing a customer database with two column families named Identity and Contact Info[1]\n", "\n", "
" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "[Document](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#document-data-stores) data stores build on the concept of a key-value data store and are made up of a series of fields and objects. This section will explore document databases with the Cosmos DB emulator." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Here is an example from Azure Cosmos DB database. The fields of interest in this document are `firstname`, `id`, and `age`. The rest of the fields with the underscores were generated by Cosmos DB.\n", "\n", "```json\n", "{\n", " \"firstname\": \"Eva\",\n", " \"age\": 44,\n", " \"id\": \"8c74a315-aebf-4a16-bb38-2430a9896ce5\",\n", " \"_rid\": \"bHwDAPQz8s0BAAAAAAAAAA==\",\n", " \"_self\": \"dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/\",\n", " \"_etag\": \"\\\"00000000-0000-0000-9f95-010a691e01d7\\\"\",\n", " \"_attachments\": \"attachments/\",\n", " \"_ts\": 1630544034\n", "}\n", "```" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "#### NoSQL databaseTypes and examples1\n", "\n", "| Type | Notable examples of this type |\n", "| ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n", "| Key–value cache | [Apache Ignite](https://en.wikipedia.org/wiki/Apache_Ignite \"Apache Ignite\"), [Couchbase](https://en.wikipedia.org/wiki/Couchbase \"Couchbase\"), [Coherence](https://en.wikipedia.org/wiki/Oracle_Coherence \"Oracle Coherence\"), [eXtreme Scale](https://en.wikipedia.org/wiki/IBM_WebSphere_eXtreme_Scale \"IBM WebSphere eXtreme Scale\"), [Hazelcast](https://en.wikipedia.org/wiki/Hazelcast \"Hazelcast\"), [Infinispan](https://en.wikipedia.org/wiki/Infinispan \"Infinispan\"), [Memcached](https://en.wikipedia.org/wiki/Memcached \"Memcached\"), [Redis](https://en.wikipedia.org/wiki/Redis \"Redis\"), [Velocity](https://en.wikipedia.org/wiki/Velocity_(memory_cache) \"Velocity (memory cache)\") |\n", "| [Key–value store](https://en.wikipedia.org/wiki/Key%E2%80%93value_database \"Key–value database\") | [Azure Cosmos DB](https://en.wikipedia.org/wiki/Azure_Cosmos_DB \"Azure Cosmos DB\"), [ArangoDB](https://en.wikipedia.org/wiki/ArangoDB \"ArangoDB\"), [Amazon DynamoDB](https://en.wikipedia.org/wiki/Amazon_DynamoDB \"Amazon DynamoDB\"), [Aerospike](https://en.wikipedia.org/wiki/Aerospike_(database) \"Aerospike (database)\"), [Couchbase](https://en.wikipedia.org/wiki/Couchbase \"Couchbase\"), [ScyllaDB](https://en.wikipedia.org/wiki/Scylla_(database) \"Scylla (database)\") |\n", "| Key–value store (eventually consistent) | [Azure Cosmos DB](https://en.wikipedia.org/wiki/Azure_Cosmos_DB \"Azure Cosmos DB\"), [Oracle NoSQL Database](https://en.wikipedia.org/wiki/Oracle_NoSQL_Database \"Oracle NoSQL Database\"), [Riak](https://en.wikipedia.org/wiki/Riak \"Riak\"), [Voldemort](https://en.wikipedia.org/wiki/Voldemort_(distributed_data_store) \"Voldemort (distributed data store)\") |\n", "| Key–value store (ordered) | [FoundationDB](https://en.wikipedia.org/wiki/FoundationDB \"FoundationDB\"), [InfinityDB](https://en.wikipedia.org/wiki/InfinityDB \"InfinityDB\"), [LMDB](https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database \"Lightning Memory-Mapped Database\"), [MemcacheDB](https://en.wikipedia.org/wiki/MemcacheDB \"MemcacheDB\") |\n", "| Tuple store | [Apache River](https://en.wikipedia.org/wiki/Jini \"Jini\"), [GigaSpaces](https://en.wikipedia.org/wiki/GigaSpaces \"GigaSpaces\"), [Tarantool](https://en.wikipedia.org/wiki/Tarantool \"Tarantool\"), [TIBCO](https://en.wikipedia.org/wiki/TIBCO_Software \"TIBCO Software\") ActiveSpaces, [OpenLink Virtuoso](https://en.wikipedia.org/wiki/Virtuoso_Universal_Server \"Virtuoso Universal Server\") |\n", "| [Triplestore](https://en.wikipedia.org/wiki/Triplestore \"Triplestore\") | [AllegroGraph](https://en.wikipedia.org/wiki/AllegroGraph \"AllegroGraph\"), [MarkLogic](https://en.wikipedia.org/wiki/MarkLogic_Server \"MarkLogic Server\"), [Ontotext-OWLIM](https://en.wikipedia.org/wiki/Ontotext \"Ontotext\"), [Oracle NoSQL database](https://en.wikipedia.org/wiki/Oracle_NoSQL_Database \"Oracle NoSQL Database\"), Profium Sense, [Virtuoso Universal Server](https://en.wikipedia.org/wiki/Virtuoso_Universal_Server \"Virtuoso Universal Server\") |\n", "| [Object database](https://en.wikipedia.org/wiki/Object_database \"Object database\") | [Objectivity/DB](https://en.wikipedia.org/wiki/Objectivity/DB \"Objectivity/DB\"), [Perst](https://en.wikipedia.org/wiki/Perst \"Perst\"), [ZopeDB](https://en.wikipedia.org/wiki/Zope_Object_Database \"Zope Object Database\"), [db4o](https://en.wikipedia.org/wiki/Db4o \"Db4o\"), [GemStone/S](https://en.wikipedia.org/wiki/Gemstone_(database) \"Gemstone (database)\"), [InterSystems Caché](https://en.wikipedia.org/wiki/InterSystems_Cach%C3%A9 \"InterSystems Caché\"), [JADE](https://en.wikipedia.org/wiki/JADE_(programming_language) \"JADE (programming language)\"), [ObjectDatabase++](https://en.wikipedia.org/wiki/ObjectDatabase%2B%2B \"ObjectDatabase++\"), [ObjectDB](https://en.wikipedia.org/wiki/ObjectDB \"ObjectDB\"), [ObjectStore](https://en.wikipedia.org/wiki/ObjectStore \"ObjectStore\"), [ODABA](https://en.wikipedia.org/wiki/Odaba \"Odaba\"), [Realm](https://en.wikipedia.org/wiki/Realm_(database) \"Realm (database)\"), [OpenLink Virtuoso](https://en.wikipedia.org/wiki/Virtuoso_Universal_Server \"Virtuoso Universal Server\"), [Versant Object Database](https://en.wikipedia.org/wiki/Versant_Object_Database \"Versant Object Database\"), [ZODB](https://en.wikipedia.org/wiki/ZODB \"ZODB\") |\n", "| [Document store](https://en.wikipedia.org/wiki/Document-oriented_database \"Document-oriented database\") | [Azure Cosmos DB](https://en.wikipedia.org/wiki/Azure_Cosmos_DB \"Azure Cosmos DB\"), [ArangoDB](https://en.wikipedia.org/wiki/ArangoDB \"ArangoDB\"), [BaseX](https://en.wikipedia.org/wiki/BaseX \"BaseX\"), [Clusterpoint](https://en.wikipedia.org/wiki/Clusterpoint \"Clusterpoint\"), [Couchbase](https://en.wikipedia.org/wiki/Couchbase \"Couchbase\"), [CouchDB](https://en.wikipedia.org/wiki/CouchDB \"CouchDB\"), [DocumentDB](https://en.wikipedia.org/wiki/DocumentDB \"DocumentDB\"), [eXist-db](https://en.wikipedia.org/wiki/EXist \"EXist\"), [IBM Domino](https://en.wikipedia.org/wiki/Lotus_Notes \"Lotus Notes\"), [MarkLogic](https://en.wikipedia.org/wiki/MarkLogic \"MarkLogic\"), [MongoDB](https://en.wikipedia.org/wiki/MongoDB \"MongoDB\"), [RavenDB](https://en.wikipedia.org/wiki/RavenDB \"RavenDB\"), [Qizx](https://en.wikipedia.org/wiki/Qizx \"Qizx\"), [RethinkDB](https://en.wikipedia.org/wiki/RethinkDB \"RethinkDB\"), [Elasticsearch](https://en.wikipedia.org/wiki/Elasticsearch \"Elasticsearch\"), [OrientDB](https://en.wikipedia.org/wiki/OrientDB \"OrientDB\") |\n", "| [Wide Column Store](https://en.wikipedia.org/wiki/Wide_column_store \"Wide column store\") | [Azure Cosmos DB](https://en.wikipedia.org/wiki/Azure_Cosmos_DB \"Azure Cosmos DB\"), [Amazon DynamoDB](https://en.wikipedia.org/wiki/Amazon_DynamoDB \"Amazon DynamoDB\"), [Bigtable](https://en.wikipedia.org/wiki/Bigtable \"Bigtable\"), [Cassandra](https://en.wikipedia.org/wiki/Apache_Cassandra \"Apache Cassandra\"), [Google Cloud Datastore](https://en.wikipedia.org/wiki/Google_Cloud_Datastore \"Google Cloud Datastore\"), [HBase](https://en.wikipedia.org/wiki/Apache_HBase \"Apache HBase\"), [Hypertable](https://en.wikipedia.org/wiki/Hypertable \"Hypertable\"), [ScyllaDB](https://en.wikipedia.org/wiki/Scylla_(database) \"Scylla (database)\") |\n", "| Native multi-model database | [ArangoDB](https://en.wikipedia.org/wiki/ArangoDB \"ArangoDB\"), [Azure Cosmos DB](https://en.wikipedia.org/wiki/Azure_Cosmos_DB \"Azure Cosmos DB\"), [OrientDB](https://en.wikipedia.org/wiki/OrientDB \"OrientDB\"), [MarkLogic](https://en.wikipedia.org/wiki/MarkLogic_Server \"MarkLogic Server\"), [Apache Ignite](https://en.wikipedia.org/wiki/Apache_Ignite \"Apache Ignite\"),[[22]](https://en.wikipedia.org/wiki/NoSQL#cite_note-22)[[23]](https://en.wikipedia.org/wiki/NoSQL#cite_note-23) [Couchbase](https://en.wikipedia.org/wiki/Couchbase \"Couchbase\"), [FoundationDB](https://en.wikipedia.org/wiki/FoundationDB \"FoundationDB\"), [Oracle Database](https://en.wikipedia.org/wiki/Oracle_Database \"Oracle Database\") |\n", "| [Graph database](https://en.wikipedia.org/wiki/Graph_database \"Graph database\") | [Azure Cosmos DB](https://en.wikipedia.org/wiki/Azure_Cosmos_DB \"Azure Cosmos DB\"), [AllegroGraph](https://en.wikipedia.org/wiki/AllegroGraph \"AllegroGraph\"), [ArangoDB](https://en.wikipedia.org/wiki/ArangoDB \"ArangoDB\"), [InfiniteGraph](https://en.wikipedia.org/wiki/InfiniteGraph \"InfiniteGraph\"), [Apache Giraph](https://en.wikipedia.org/wiki/Apache_Giraph \"Apache Giraph\"), [MarkLogic](https://en.wikipedia.org/wiki/MarkLogic \"MarkLogic\"), [Neo4J](https://en.wikipedia.org/wiki/Neo4J \"Neo4J\"), [OrientDB](https://en.wikipedia.org/wiki/OrientDB \"OrientDB\"), [Virtuoso](https://en.wikipedia.org/wiki/Virtuoso_Universal_Server \"Virtuoso Universal Server\") |\n", "| [Multivalue database](https://en.wikipedia.org/wiki/MultiValue \"MultiValue\") | D3 [Pick database](https://en.wikipedia.org/wiki/Pick_database \"Pick database\"), [Extensible Storage Engine](https://en.wikipedia.org/wiki/Extensible_Storage_Engine \"Extensible Storage Engine\") (ESE/NT), [InfinityDB](https://en.wikipedia.org/wiki/InfinityDB \"InfinityDB\"), [InterSystems Caché](https://en.wikipedia.org/wiki/InterSystems_Cach%C3%A9 \"InterSystems Caché\"), jBASE [Pick database](https://en.wikipedia.org/wiki/Pick_database \"Pick database\"), mvBase [Rocket Software](https://en.wikipedia.org/wiki/Rocket_Software \"Rocket Software\"), mvEnterprise [Rocket Software](https://en.wikipedia.org/wiki/Rocket_Software \"Rocket Software\"), [Northgate Information Solutions](https://en.wikipedia.org/wiki/Northgate_Information_Solutions \"Northgate Information Solutions\") Reality (the original Pick/MV Database), [OpenQM](https://en.wikipedia.org/wiki/OpenQM \"OpenQM\"), Revelation Software's OpenInsight (Windows) and Advanced Revelation (DOS), UniData [Rocket U2](https://en.wikipedia.org/wiki/Rocket_U2 \"Rocket U2\"), UniVerse [Rocket U2](https://en.wikipedia.org/wiki/Rocket_U2 \"Rocket U2\") |\n", "\n", "
\n", "\n", "\n", "\n", "*1. Nosql. (2022). In Wikipedia. https://en.wikipedia.org/w/index.php?title=NoSQL&oldid=1123949416*\n", "\n", "" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## 4. Your turn! 🚀\n", "\n", "1. [Displaying airport data](https://ocademy-ai.github.io/machine-learning/assignments/data-science/displaying-airport-data.html)\n", "2. [Twitter data](https://ocademy-ai.github.io/machine-learning/data-science/working-with-data/non-relational-data.html#your-turn)\n", "3. [Soda profit](https://ocademy-ai.github.io/machine-learning/assignments/data-science/soda-profits.html)\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## 5. References\n", "\n", "1. [Relational database](https://ocademy-ai.github.io/machine-learning/data-science/working-with-data/relational-databases.html)\n", "2. [Non-relational data](https://ocademy-ai.github.io/machine-learning/data-science/working-with-data/non-relational-data.html)" ] } ], "metadata": { "celltoolbar": "Slideshow", "init_cell": "run_on_kernel_ready", "jupytext": { "formats": "ipynb" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13 (main, May 24 2022, 21:28:31) \n[Clang 13.1.6 (clang-1316.0.21.2)]" }, "rise": { "autolaunch": true, "chalkboard": { "color": [ "rgb(250, 250, 250)", "rgb(250, 250, 250)" ] }, "enable_chalkboard": true, "header": "", "scroll": true }, "vscode": { "interpreter": { "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" } } }, "nbformat": 4, "nbformat_minor": 2 }