Databases - spinningideas/resources GitHub Wiki

Database Types

  • Relational databases: Organizes data into tables which can be linked—or related based on data common to each. Tables consist of rows and columns that define the schema. Supports ACID (atomicity, consistency, isolation, and durability). This type of database uses SQL (Structured Query Language) to access and write data. Oracle, SQL Server, MySQL and PostGreSQL are examples.
  • Document databases: Unstructured and schema-less provides a collection and document model. Doesn’t support joins. Writing and updating data is a bit complex. Generally used for content management and more dynamic data sets, etc. DynamoDB, MongoDB are good examples.
  • Key-Value databases: Data is stored in simple “key-value” format that is optimized for reading and writing that data. The data is fetched by a unique key or a number of unique keys to retrieve the associated value with each key. The values can be simple data types like strings and numbers or complex objects. SET/GET command provides an ability to modify or retrieve data. This data modeling option is very fast but does not provide a query mechanism. Generally, this model is used for caching and super fast access to data. Redis and Memcache are good examples.
  • Wide column databases: A wide-column database is a NoSQL database that organizes data storage into flexible columns that can be spread across multiple servers or database nodes, using multi-dimensional mapping to reference data by column, row, and timestamp. It is schema-less, scales horizontally, useful for time-series data. Provides a CQL to query for data. Cassandra/Apache HBASE are good examples. More Info
  • Graph databases: A key concept is the graph (or edge or relationship). The graph relates the data items in the store to a collection of nodes and edges, the edges representing the relationships between the nodes. Data are represented as nodes and relationships as edges. Neo4J and Amazon Neptune are good examples. Used for knowledge graphs, and joins. https://en.wikipedia.org/wiki/Graph_database#List_of_graph_databases
  • Search databases: A search-engine database is a type of nonrelational (NoSQL) database that has additional features to support search such as full-text search, complex search expressions, and ranking of search results. Search-engine databases use indexes to categorize the similar characteristics among data and facilitate search capability. Search-engine databases are optimized for dealing with data that may be long, semistructured, or unstructured. Elastic, and Algolia are good examples. Based the Apache Lucene project, work is similar to document-based databases.
  • Vector databases: https://github.com/spinningideas/resources/wiki/Vector-Databases

things-you-should-know-about-databases

Development

Coding Standards

Monitoring

Vendors/Providers:

PostgreSQL

MySQL

SQL Server

Redis

  • Upstash - Redis database that can be used as a traditional database or as a robust cache. The free tier is capped at a 10,000 daily command limit.

MongoDB

  • MongoDB Atlas — one of the most popular NoSQL databases. The free tier offers 512 MB of free storage.

Others