Nosql Page

NoSQL



Return to SQL, Cloud databases or Database topics

NoSQL Models



NoSQL Models refer to a variety of database systems that do not use the traditional Relational Database Management Systems (RDBMS) approach of tables and structured query language (SQL). Instead, NoSQL databases are designed to handle a wide range of data models, including document-oriented, key-value, column-family, and graph-based models. They are particularly useful for applications requiring flexible schema designs and database scalability.

Core Types of NoSQL Models



* Document Stores: Document-oriented databases store data as documents, typically in JavaScript Object Notation (JSON) or Extensible Markup Language (XML) formats. Each document contains key-value pairs and can be nested. Examples include MongoDB and CouchDB. Document stores are suitable for applications with evolving schemas or semi-structured data.
* Key-Value Stores: Key-value databases store data as pairs of keys and values. Each key is unique and maps to a single value, which can be a simple data type or a more complex data structure. Examples include Redis and Riak. Key-value stores excel in scenarios requiring fast read and write operations.
* Column-Family Stores: Column-family databases organize data into columns rather than rows. Data is stored in tables but accessed by column rather than by row. This model is effective for handling large-scale, distributed data. Examples include Apache Cassandra and HBase. Column-family stores are used in scenarios where write and read performance is crucial.
* Graph Databases: Graph databases focus on storing and querying data as graphs, with nodes, edges, and properties representing data relationships. They are ideal for applications requiring complex relationship traversal, such as social networks or recommendation systems. Examples include Neo4j and ArangoDB.

Advantages of NoSQL Models



* Scalability: NoSQL databases are designed to scale horizontally, meaning they can handle increased load by adding more servers rather than upgrading a single server. This makes them suitable for large-scale applications with high data volume and traffic.
* Flexibility: NoSQL databases support flexible schema designs, allowing for the storage of semi-structured and unstructured data. This adaptability is beneficial for applications with changing data requirements or varying data formats.
* Performance: Many NoSQL databases are optimized for high-performance read and write operations. They often provide features such as caching and in-memory processing to enhance speed and efficiency.

Limitations and Challenges



* Consistency: Some NoSQL models sacrifice strong consistency for improved scalability and availability. This can lead to eventual consistency, where data may not be immediately consistent across all nodes.
* Complex Queries: Unlike relational databases, NoSQL databases may lack advanced querying capabilities. While they support basic queries, complex joins and aggregations may be more challenging to implement.
* Tooling and Support: NoSQL databases may have fewer tools and third-party integrations compared to traditional RDBMSs. This can impact the ease of managing and monitoring databases.

References and Further Reading



* https://en.wikipedia.org/wiki/NoSQL
* https://www.mongodb.com/nosql-explained
* https://www.datastax.com/what-is-nosql


Types and examples of NoSQL databases


There have been various approaches to classify NoSQL databases, each with different categories and subcategories, some of which overlap. What follows is a basic classification by data model, with examples:
* Column (data store)|Column: Accumulo, Apache Cassandra|Cassandra, Druid (open-source data store)|Druid, HBase, Vertica.
* Document-oriented database|Document: Apache CouchDB, ArangoDB, BaseX, Clusterpoint, Couchbase, Cosmos DB, Lotus Notes|IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB
* Key-value store|Key-value: Aerospike database|Aerospike, Apache Ignite, ArangoDB, Berkeley DB, Couchbase, Dynamo (storage system)|Dynamo, FairCom c-treeACE, FoundationDB, InfinityDB, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, SciDB, SDBM/Flat File dbm, Apache ZooKeeper|ZooKeeper
* Graph database|Graph: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso Universal Server|Virtuoso


{{database navbar}}


Detailed Classification



A more detailed classification is the following, based on one from Stephen Yen:{{cite web|url=https://dl.dropboxusercontent.com/u/2075876/nosql-steve-yen.pdf|format=PDF|title=NoSQL is a Horseless Carriage|last=Yen|first=Stephen|publisher=NorthScale|accessdate=2014-06-26}}{{dead link|date=August 2017}}{{cite web|url=http://www.christof-strauch.de/nosqldbs.pdf|title=NoSQL Databases|last1=Strauch|first1=Christof|pages=23-24|accessdate=2017-08-27}}

{| style="text-align: left;" class="wikitable sortable"
|-
! Type !! Notable examples of this type
|-
| Key-Value Cache || Apache Ignite, Oracle Coherence|Coherence, IBM WebSphere eXtreme Scale|eXtreme Scale, Hazelcast, Infinispan, Memcached, Velocity (memory cache)|Velocity
|-
| Key-Value Store || ArangoDB, Aerospike database|Aerospike
|-
| Key-Value Store (Eventually-Consistent) || Oracle NoSQL Database, Dynamo (storage system)|Dynamo, Riak, Voldemort (distributed data store)|Voldemort
|-
| Key-Value Store (Ordered) || FoundationDB, InfinityDB, Lightning Memory-Mapped Database|LMDB, MemcacheDB
|-
| Data-Structures Server || Redis
|-
| Tuple Store || Jini|Apache River, GigaSpaces
|-
| Object Database || Objectivity/DB, Perst, Zope Object Database|ZopeDB
|-
| Document Store || ArangoDB, BaseX, Clusterpoint, Couchbase, CouchDB, DocumentDB, Lotus Notes|IBM Domino, MarkLogic, MongoDB, Qizx, RethinkDB
|-
| Wide column store|Wide Column Store || Amazon DynamoDB, Bigtable, Apache Cassandra|Cassandra, Druid (open-source data store)|Druid, Apache HBase|HBase, Hypertable
|-
| Native Multi-model Database || ArangoDB, Cosmos DB, OrientDB
|}

Correlation databases are model-independent, and instead of row-based or column-based storage, use value-based storage.

= Key-value store

=
{{main|Key-value database}}
Key-value (KV) stores use the associative array (also known as a map or dictionary) as their fundamental data model. In this model, data is represented as a collection of key-value pairs, such that each possible key appears at most once in the collection.{{cite web
| accessdate =1 January 2012
| publisher = Stackexchange
| location = http://dba.stackexchange.com/questions/607/what-is-a-key-value-store-database
| title = Key Value stores and the NoSQL movement
| author = Sandy
| date = 14 January 2011
| url = http://dba.stackexchange.com/a/619
| quote = Key-value stores allow the application developer to store schema-less data. This data usually consists of a string that represents the key, and the actual data that is considered the value in the "key-value" relationship. The data itself is usually some kind of primitive of the programming language (a string, an integer, or an array) or an object that is being marshaled by the programming language's bindings to the key-value store. This structure replaces the need for a fixed data model and allows proper formatting.}}
{{cite web
| accessdate =1 January 2012
| publisher = Marc Seeger
| location = http://blog.marc-seeger.de/2009/09/21/key-value-stores-a-practical-overview/
| title = Key-Value Stores: a practical overview
| first = Marc | last = Seeger
| date = 21 September 2009
| url = http://blog.marc-seeger.de/assets/papers/Ultra_Large_Sites_SS09-Seeger_Key_Value_Stores.pdf
| quote = Key-value stores provide a high-performance alternative to relational database systems with respect to storing and accessing data. This paper provides a short overview of some of the currently available key-value stores and their interface to the Ruby programming language.}}


The key-value model is one of the simplest non-trivial data models, and richer data models are often implemented as an extension of it. The key-value model can be extended to a discretely ordered model that maintains keys in Lexicographical order|lexicographic order. This extension is computationally powerful, in that it can efficiently retrieve selective key ranges.{{cite web
| accessdate =8 May 2014
| publisher = Ilya Katsov
| title = NoSQL Data Modeling Techniques
| first = Ilya | last = Katsov
| date = 1 March 2012
| url = http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/}}


Key-value stores can use consistency models ranging from eventual consistency to serializability. Some databases support ordering of keys. There are various hardware implementations, and some users maintain data in memory (RAM), while others employ solid-state drives (SSD) or hard disk drive|rotating disks (aka Hard Disk Drive (HDD)).

= Document store

=
{{main|Document-oriented database|XML database}}
The central concept of a document store is the notion of a "document". While each document-oriented database implementation differs on the details of this definition, in general, they all assume that documents encapsulate and encode data (or information) in some standard formats or encodings. Encodings in use include XML, YAML, and JSON as well as binary forms like BSON. Documents are addressed in the database via a unique key that represents that document. One of the other defining characteristics of a document-oriented database is that in addition to the key lookup performed by a key-value store, the database also offers an API or query language that retrieves documents based on their contents.

Different implementations offer different ways of organizing and/or grouping documents:
* Collections
* Tags
* Non-visible metadata
* Directory hierarchies

Compared to relational databases, for example, collections could be considered analogous to tables and documents analogous to records. But they are different: every record in a table has the same sequence of fields, while documents in a collection may have fields that are completely different.

= Graph

=
Main: Graph database

This kind of database is designed for data whose relations are well represented as a graph (discrete mathematics)|graph consisting of elements interconnected with a finite number of relations between them. The type of data could be social relations, public transport links, road maps, network topologies, etc.

; Graph databases and their query language
{| style="text-align: left;" class="wikitable sortable"
! Name !! Language(s) !! Notes
|-
| AllegroGraph || SPARQL || Resource Description Framework|RDF triple store
|-
| ArangoDB || AQL, JavaScript, GraphQL || Multi-model DBMS Document-oriented database|Document, Graph database and Key-value store
|-
| DEX (Graph database)|DEX/Sparksee || C++, Java (programming language)|Java, .NET Framework|.NET, Python (programming language)|Python || Graph database
|-
| FlockDB || Scala (programming language)|Scala || Graph database
|-
| IBM DB2 || SPARQL || Resource Description Framework|RDF triple store added in DB2 10
|-
| InfiniteGraph || Java (programming language)|Java || Graph database
|-
| MarkLogic || Java (programming language)|Java, JavaScript, SPARQL, XQuery || Multi-model Document-oriented database|document database and Resource Description Framework|RDF triple store
|-
| Neo4j || Cypher Query Language|Cypher || Graph database
|-
| Virtuoso Universal Server|OpenLink Virtuoso || C++, C Sharp (programming language)|C#, Java (programming language)|Java, SPARQL || Middleware and database engine hybrid
|-
| Oracle Database|Oracle || SPARQL|SPARQL 1.1 || Resource Description Framework|RDF triple store added in 11g
|-
| OrientDB || Java (programming language)|Java, SQL || Multi-model Document-oriented database|document and graph database
|-
| Ontotext|OWLIM || Java (programming language)|Java, SPARQL|SPARQL 1.1|| Resource Description Framework|RDF triple store
|-
| Profium|Profium Sense || Java (programming language)|Java, SPARQL || Resource Description Framework|RDF triple store
|-
| sqrrl|Sqrrl Enterprise || Java (programming language)|Java || Graph database
|}

= Object database

=
* db4o
* Gemstone (database)|GemStone/S
* InterSystems Caché
* JADE (programming language)|JADE
* ObjectDatabase++
* ObjectDB
* Objectivity/DB
* ObjectStore
* Odaba|ODABA
* Perst
* Virtuoso Universal Server|OpenLink Virtuoso
* Versant Object Database
* ZODB

= Tabular

=
* Apache Accumulo
* Bigtable
* HBase|Apache Hbase
* Hypertable
* Mnesia
* Virtuoso Universal Server|OpenLink Virtuoso

= Tuple store

=
* Apache River
* GigaSpaces
* Tarantool
* TIBCO Software|TIBCO ActiveSpaces
* Virtuoso Universal Server|OpenLink Virtuoso

= Triple/quad store (RDF) database

=
* AllegroGraph
* Jena (framework)|Apache JENA (It is a framework, not a database)
* MarkLogic
* Ontotext|Ontotext-OWLIM
* Oracle NoSQL Database|Oracle NoSQL database
* Profium|Profium Sense
* Virtuoso Universal Server

= Hosted

=
* Amazon DynamoDB
* Amazon SimpleDB
* Appengine|Datastore on Google Appengine
* Clusterpoint|Clusterpoint database
* Cloudant|Cloudant Data Layer (CouchDB)
* Freebase (database)|Freebase
* Microsoft Azure#Table Service|Microsoft Azure Tables
* DocumentDB|Microsoft Azure DocumentDB
* Virtuoso Universal Server|OpenLink Virtuoso

= Multivalue databases

=
* D3 Pick database
* Extensible Storage Engine (ESE/NT)
* InfinityDB
* InterSystems Caché
* jBASE Pick database
* mvBase Rocket Software
* mvEnterprise Rocket Software
* Northgate Information Solutions Reality, the original Pick/MV Database
* OpenQM
* Revelation Software's OpenInsight
* UniData Rocket U2
* UniVerse Rocket U2

= Multimodel database

=

* Apache Ignite - https://apacheignite.readme.io/docs
* ArangoDB
* Couchbase
* FoundationDB
* MarkLogic
* OrientDB
* Cosmos DB



* MongoDB
* Microsoft Azure Cosmos DB, Microsoft Azure CosmosDB, Azure Cosmos DB, Azure CosmosDB, Cosmos DB, CosmosDB, Cosmos-DB, Microsoft Cosmos DB, Microsoft CosmosDB
* CouchDB
* Cassandra
* Redis
* BigTable
* HBase
* Hypertable
* Voldemort
* Riak
* ZooKeeper


----

Return to GitHub star ranking for organizations, GitHub star ranking for repositories, GitOps or GitHub

{{wp>nosql}}



YouTube Videos


* https://youtube.com/user/nosql
* https://youtube.com/results?search_query=nosql - YouTube Search

Cloud Monk recommends the following YouTube video:



GitHub Tags


GitHub Tags:

https://github.com/search?q=nosql

External Sites



=Main

=
* g>nosql

=Interesting Articles

=

=Support Resources, FAQs, Q&A, Docs, Blogs

=
* https://github.com/search?q=nosql - GitHub Search
* https://docs.microsoft.com/en-us/search/?terms=nosql - Microsoft Documentation Search
* https://aws.amazon.com/search/?searchQuery=nosql - AWS Search
* https://cloud.google.com/s/results?q=nosql - GCP Search
* https://stackoverflow.com/search?q=nosql - StackOverflow Search
* https://superuser.com/search?q=nosql - Superuser Search
* https://reddit.com/search?q=nosql - Reddit Search
* https://quora.com/search?q=nosql - Quora Search
* https://medium.com/search?q=nosql - Medium Blog Search

=Search Engines

=
* https://duckduckgo.com/?q=nosql - DuckDuckGo Search
* https://mojeek.com/search?q=nosql - Mojeek Search
* https://qwant.com/?q=nosql - Qwant Search
* https://bing.com/search?q=nosql - Bing Search
* https://search.yahoo.com/search?p=nosql - Yahoo Search
* https://google.com/search?q=nosql - Google Search

=Repos and Registries

=
Package Managers Artifact Registries and Repos:
* https://github.com/search?q=nosql - GitHub Search
* https://hub.helm.sh/charts?q=nosql - Helm Hub Search
* https://hub.docker.com/search?q=nosql &type=image - Docker Hub Search
* https://chocolatey.org/packages?q=nosql - Chocolatey Search - Chocolatey Package Manager Search
* https://formulae.brew.sh/formula - Homebrew Search - Homebrew Package Manager Search
* https://pkgs.org/search/?q=nosql - pkgs.org Linux package search
* https://search.maven.org/search?q=nosql - Maven Search - Maven Package Manager Search
* https://mvnrepository.com/search?q=nosql - Maven Repo Search - Maven Package Manager Search
* https://plugins.gradle.org/search?term=nosql - Gradle Search - Gradle Package Manager Search
* https://npmjs.com/search?q=nosql - NPM Search - NPM Node Package Manager Search
* https://pypi.org/search/?q=nosql - PyPI Search - PyPI Python Package Index Search
* https://nuget.org/packages?q=nosql - Nuget Search - Nuget Package Manager Search
* https://rubygems.org/search?&query=nosql - RubyGem Search - RubyGem Package Manager Search
* https://gitlab.com/explore?=&name=nosql - GitLab Repo Search
* https://bitbucket.org/repo/all?name=nosql - Bitbucket Repo Search
* https://repo.jfrog.org/artifactory/libs-release-bintray/com/nosql - jFrog Artifactory Search
* https://bitnami.com/stacks - Bitnami Search

=Courses

=
* https://pluralsight.com/search/?q=nosql - Pluralsight Courses
* https://udemy.com/courses/search/?q=nosql - Udemy Courses
* https://acloudguru.com/blog/search?s=nosql - ACloudGuru Courses
* https://linkedin.com/learning/search?keywords=nosql - LinkedIn Learning Courses
* https://coursera.org/search?query=nosql - Coursera Courses

=Books

=
* https://amazon.com/s?k=nosql - Amazon Search
* https://audible.com/search?keywords=nosql - Audible Search

=Vidcasts-Podcasts

=
* https://podcasts.google.com/search/nosql - Google Podcast Search
* https://open.spotify.com/search/nosql - Spotify Podcast Search
* https://tunein.com/search/?query=nosql - TuneIn.com Podcast Search
* https://podbean.com/site/Search/index?v=nosql - PodBean Podcast Search
* https://youtube.com/results?search_query=nosql - YouTube Search



{{footer navbar}}