# Prisma's Data Guide > Learn how databases work, how to choose the right one, and how to use databases with your applications to their full potential. A Markdown version of every article is available by appending `.md` to its URL. The overview of all topics is at https://www.prisma.io/dataguide/index.md. Markdown includes complete FAQ answers, code and output, tables, glossary entries, image descriptions, and technical and version caveats. The [JSON catalog](https://www.prisma.io/dataguide/agent-index.json) lists articles, canonical and Markdown URLs, and FAQ questions with Markdown answers. The [full text](https://www.prisma.io/dataguide/llms-full.txt) combines all articles in this index in reading order. ## Introduction to databases - [Introduction to databases](https://www.prisma.io/dataguide/intro.md) - [What are databases?](https://www.prisma.io/dataguide/intro/what-are-databases.md): Learn the fundamentals of databases to gain better insight into what Prisma abstracts and how to think of the database layer generally. - [Comparing database types: how database types evolved to meet different needs](https://www.prisma.io/dataguide/intro/comparing-database-types.md): Many types of databases exist, each with their own benefits. In this guide, we compare the different types of databases and what each of them offer. - [Introduction to database schemas](https://www.prisma.io/dataguide/intro/intro-to-schemas.md): Schemas are the way that you configure your database to represent your data within the system. Here we define what they are with a few examples. - [Glossary of common database terminology](https://www.prisma.io/dataguide/intro/database-glossary.md): Database terminology can be difficult to understand. This glossary was designed to help you learn important terminology by providing definitions and context in one place. ## Data modeling - [Data modeling](https://www.prisma.io/dataguide/datamodeling.md): A crash course in (relational, although not ignoring others) designing data models. - [Intro (don't panic)](https://www.prisma.io/dataguide/datamodeling/intro-dont-panic.md): Intro (Don't Panic) - [Know your problem space](https://www.prisma.io/dataguide/datamodeling/know-your-problem-space.md): Data models rarely represent singular categories of isolated facts; more often they represent systems, and the relations and interactions of even a few components are as important to an accurate and useful representation of the system as are the components themselves. - [Tables, tuples, types](https://www.prisma.io/dataguide/datamodeling/tables-tuples-types.md): Calling tables the "basic building block" of relational databases is a little reductive. While it's hard to miss the mark by much in drawing up a list of each datum you're interested in and declaring this an integer, that a date, and so forth, effective relational database design depends first and foremost on well-thought-out and well-formulated table designs. - [Correctness and constraints](https://www.prisma.io/dataguide/datamodeling/correctness-constraints.md): Learn more about storing meaningful, useful, correct data and how correctness can be logically defined and enforced - [Making connections](https://www.prisma.io/dataguide/datamodeling/making-connections.md): Learn about using foreign keys to describe relationships which in turn define the structure of the database - [Functional units](https://www.prisma.io/dataguide/datamodeling/functional-units.md): Databases are, by definition, very good at processing and manipulating information. Learn more about functional units, workflows, and more. - [In vivo: information ecosystems](https://www.prisma.io/dataguide/datamodeling/in-vivo.md): Users, applications, scripts, and even other databases feed information into and extract information from databases. Discover how these ecosystems work. ## Database types - [Database types](https://www.prisma.io/dataguide/types.md) - [Comparing relational and document databases](https://www.prisma.io/dataguide/types/relational-vs-document-databases.md): In this article, we examine the differences between relational databases and document databases. - [What is an ORM?](https://www.prisma.io/dataguide/types/relational/what-is-an-orm.md): What are ORMs and how are they useful? In this guide, we'll explain what ORMs are and why they are helpful for many projects. - [Comparing SQL, query builders, and ORMs](https://www.prisma.io/dataguide/types/relational/comparing-sql-query-builders-and-orms.md): In this article, we examine the differences between working with raw SQL, using query builders, or using an ORM. - [What are database migrations?](https://www.prisma.io/dataguide/types/relational/what-are-database-migrations.md): Discover how database migrations allow developers to make controlled, repeatable changes to database structures. - [Strategies for deploying database migrations](https://www.prisma.io/dataguide/types/relational/migration-strategies.md): Learn about the advantages and disadvantages of various techniques for deploying schema changes to your database. - [Using the expand and contract pattern for schema changes](https://www.prisma.io/dataguide/types/relational/expand-and-contract-pattern.md): In this article, we introduce the expand and contract pattern to help migrate data and clients to a new schema. - [Comparing common database infrastructure patterns](https://www.prisma.io/dataguide/types/relational/infrastructure-architecture.md): In this article, we cover some of the most common ways of deploying your database infrastructure to meet the needs of your application environment. - [What are JOINs in SQL?](https://www.prisma.io/dataguide/types/relational/what-are-joins-in-sql.md): Discover how JOINs allow developers to combine related data from multiple tables in SQL databases. - [Relational Databases](https://www.prisma.io/dataguide/types/relational.md) - [What are document databases?](https://www.prisma.io/dataguide/types/document/what-are-document-dbs.md): In this article, we examine what document databases are and their advantages and tradeoffs - [Document Databases](https://www.prisma.io/dataguide/types/document.md) ## PostgreSQL - [PostgreSQL](https://www.prisma.io/dataguide/postgresql.md) - [The benefits of PostgreSQL](https://www.prisma.io/dataguide/postgresql/benefits-of-postgresql.md): Learn why PostgreSQL is one of the most popular RDBMSs among developers, and the benefits it offers to engineers. - [Getting to know PostgreSQL](https://www.prisma.io/dataguide/postgresql/getting-to-know-postgresql.md): Like any database system, PostgreSQL comes with its share of complexity. This article will break down some of PostgreSQL's conceptual foundations to give you a better understanding of how all of the pieces fit together. - [5 ways to host PostgreSQL databases](https://www.prisma.io/dataguide/postgresql/5-ways-to-host-postgresql.md): Compare PostgreSQL hosting options — self-managed, Docker, cloud-provider managed like AWS RDS, and fully managed Prisma Postgres — with a decision table, a "when to choose" guide, and an FAQ to help you pick the right one. - [Setting up a local PostgreSQL database](https://www.prisma.io/dataguide/postgresql/setting-up-a-local-postgresql-database.md): Install PostgreSQL 18 for local development with Docker, the PostgreSQL APT or Yum repository, Homebrew, Postgres.app or the EDB installer, then lock it down and create a least-privilege role for your application. - [How to configure PostgreSQL on Amazon RDS for production](https://www.prisma.io/dataguide/postgresql/setting-up-postgresql-on-rds.md): Set up Amazon RDS for PostgreSQL for production: choose the version, instance class, storage and Multi-AZ mode, keep the database private, connect with verified TLS, create least-privilege roles, and plan backups, monitoring, upgrades and deletion. - [Connecting to PostgreSQL databases](https://www.prisma.io/dataguide/postgresql/connecting-to-postgresql-databases.md): Before you can manage your data with PostgreSQL, you need to be able to connect to the database server. In this guide, we'll use the `psql` command line client to demonstrate how to connect to PostgreSQL databases. - [An introduction to authorization and authentication in PostgreSQL](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization/intro-to-authn-and-authz.md): PostgreSQL's authentication and authorization features help you maintain the security and integrity of your data. Learn more about how they work - [Managing roles and role attributes in PostgreSQL](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization/role-management.md): PostgreSQL roles are a combination of the ideas of users and groups into a single, flexible entity. This guide will cover what roles are and how to manage them within a PostgreSQL database cluster. - [Configuring PostgreSQL user authentication](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization/configuring-user-authentication.md): Managing authentication is one of the fundamental requirements of managing any database system. In this guide, we'll show you how to configure PostgreSQL's authentication methods to allow different types of access. - [Managing privileges in PostgreSQL with grant and revoke](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization/managing-privileges.md): Managing ownership and grants on specific database objects is the primary way to control which roles can manage, modify, and view databases, tables, sequences, and more. This guide will cover how to use PostgreSQL's grant and revocation mechanisms to lay out exactly what roles have access to each database object. - [Authentication and authorization](https://www.prisma.io/dataguide/postgresql/authentication-and-authorization.md): Learn more about PostgreSQL authentication and authorization with our comprehensive and organized list of documentation and how-to's. - [How to create and delete databases and tables in PostgreSQL](https://www.prisma.io/dataguide/postgresql/create-and-delete-databases-and-tables.md): Learn how to create and delete database and table structures using SQL and command line utilities. - [An introduction to PostgreSQL data types](https://www.prisma.io/dataguide/postgresql/introduction-to-data-types.md): PostgreSQL's data type system allows you to define your data structures and store data in various formats. These are some of the most common data types. - [An introduction to PostgreSQL column and table constraints](https://www.prisma.io/dataguide/postgresql/column-and-table-constraints.md): Data types provide some broad control over the values accepted by tables. For more granular control, PostgreSQL offers column and table constraints. In this guide we'll show how constraints can help you define valid input for your tables. - [Working with dates in PostgreSQL](https://www.prisma.io/dataguide/postgresql/date-types.md): Read on to learn about how to work with date types in PostgreSQL, including information on formats, functions, and more. - [How to insert and delete data in PostgreSQL](https://www.prisma.io/dataguide/postgresql/inserting-and-modifying-data/inserting-and-deleting-data.md): The `INSERT` and `DELETE` commands are the primary way that PostgreSQL adds and removes records from tables. This guide demonstrates how to use them to control the data your tables manage. - [How to update existing data in PostgreSQL](https://www.prisma.io/dataguide/postgresql/inserting-and-modifying-data/updating-existing-data.md): The `UPDATE` command is the primary method of altering existing data within PostgreSQL. This guide demonstrates how to use the `UPDATE` operation to modify the values within your tables. - [How to use `INSERT ON CONFLICT` to upsert data in PostgreSQL](https://www.prisma.io/dataguide/postgresql/inserting-and-modifying-data/insert-on-conflict.md): The `INSERT...ON CONFLICT` construct let's you define what PostgreSQL should do if a row you are inserting conflicts with an existing row. This enables 'upsert' operations which insert records or update them on conflict. - [Importing and exporting data in PostgreSQL](https://www.prisma.io/dataguide/postgresql/inserting-and-modifying-data/importing-and-exporting-data-in-postgresql.md): Learn the fundamentals of importing, exporting, and modifying data using PostgreSQL. - [Understanding and using transactions in PostgreSQL](https://www.prisma.io/dataguide/postgresql/inserting-and-modifying-data/using-transactions.md): Transactions help provide the atomicity, consistency, isolation, and durability promises of ACID-compliant databases. In this guide, we'll look at what transactions are, the various levels of isolation possible, and how to use them in PostgreSQL. - [Inserting and modifying data](https://www.prisma.io/dataguide/postgresql/inserting-and-modifying-data.md): Inserting and modifying data in PostgreSQL. Including how to insert and delete data in PostgreSQL, update existing data in PostgreSQL, and more. - [How to perform basic queries with `SELECT` in PostgreSQL](https://www.prisma.io/dataguide/postgresql/reading-and-querying-data/basic-select.md): The `SELECT` command is the main way to query the data within tables and views in PostgreSQL. This guide demonstrates the basic syntax and operation of this highly flexible command. - [How to filter query results in PostgreSQL](https://www.prisma.io/dataguide/postgresql/reading-and-querying-data/filtering-data.md): PostgreSQL provides many ways to constrain the results that your queries return. Discover how to filter queries to return only the data you're interested in. - [Using joins to combine data from different tables in PostgreSQL](https://www.prisma.io/dataguide/postgresql/reading-and-querying-data/joining-tables.md): Joins allow you to bring together data from multiple tables by stitching together columns that contain common values. In this guide, we'll talk about the different types of joins PostgreSQL supports and how to use joins to construct more valuable queries. - [Introduction to optimizing PostgreSQL performance](https://www.prisma.io/dataguide/postgresql/reading-and-querying-data/optimizing-postgresql.md): Learn how to discover PostgreSQL performance bottlenecks by looking at system resource utilization and identifying slow queries - [Reading and querying data](https://www.prisma.io/dataguide/postgresql/reading-and-querying-data.md): Reading and querying data in PostgreSQL. Including how to perform basic queries with `SELECT` in PostgreSQL, filter query results in PostgreSQL, and more. - [How to use single and double quotes in PostgreSQL](https://www.prisma.io/dataguide/postgresql/short-guides/quoting-rules.md): Read on to learn how PostgreSQL interprets single and double quotes and the side effects of each type. - [How to create and delete users in PostgreSQL](https://www.prisma.io/dataguide/postgresql/short-guides/creating-deleting-users.md): This short guide will cover how to create and delete users in PostgreSQL. - [Introduction to PostgreSQL connection URIs](https://www.prisma.io/dataguide/postgresql/short-guides/connection-uris.md): Learn how to encode PostgreSQL connection details in connection URIs for applications and libraries - [How to export database and table schemas in PostgreSQL](https://www.prisma.io/dataguide/postgresql/short-guides/exporting-schemas.md): Learn how to export your database objects from PostgreSQL for analysis, migrating, backups, and more. - [Short guides](https://www.prisma.io/dataguide/postgresql/short-guides.md) ## MySQL - [MySQL](https://www.prisma.io/dataguide/mysql.md) - [5 ways to host MySQL databases](https://www.prisma.io/dataguide/mysql/5-ways-to-host-mysql.md): There are many ways of getting a MySQL server up and running for your projects. This article explores some of the most popular options. - [Setting up a local MySQL database](https://www.prisma.io/dataguide/mysql/setting-up-a-local-mysql-database.md): Install MySQL 9.7 LTS for local development with Docker, the MySQL APT or Yum repository, Homebrew, or the Windows MSI, then lock it down and create a least-privilege user for your application. - [Connecting to MySQL databases](https://www.prisma.io/dataguide/mysql/connecting-to-mysql-databases.md): Learn how to connect to local and remote MySQL databases using the `mysql` client - [An introduction to authorization and authentication in MySQL](https://www.prisma.io/dataguide/mysql/authentication-and-authorization/intro-to-authn-and-authz.md): Authentication and authorization are important aspects of MySQL's security approach. Together, they function as the system's access control controllers. - [How to manage users and authentication in MySQL](https://www.prisma.io/dataguide/mysql/authentication-and-authorization/user-management-and-authentication.md): This guide demonstrates how to use MySQL's robust system for defining users and controlling their authentication options. - [How to use `GRANT` and `REVOKE` to manage privileges in MySQL](https://www.prisma.io/dataguide/mysql/authentication-and-authorization/privilege-management.md): Discover how to use the `GRANT` command and the `REVOKE` command to add and remove privileges in MySQL, as well as managing privileges nuances among users. - [How to manage privileges with roles in MySQL](https://www.prisma.io/dataguide/mysql/authentication-and-authorization/role-management.md): MySQL roles allow you to group and manage multiple privileges under a single name. - [Authentication and authorization](https://www.prisma.io/dataguide/mysql/authentication-and-authorization.md) - [How to create and delete databases and tables in MySQL](https://www.prisma.io/dataguide/mysql/create-and-delete-databases-and-tables.md): Learn how to create new databases and tables and delete them in MySQL. - [An introduction to MySQL data types](https://www.prisma.io/dataguide/mysql/introduction-to-data-types.md): MySQL supports a variety of data types to help you define what types of values different fields support.. In this guide, we'll introduce some of the most common MySQL data types and show you how to work with them. - [An introduction to MySQL column and table constraints](https://www.prisma.io/dataguide/mysql/column-and-table-constraints.md): Column and table constraints give you control over what values you allow in your database tables. In this guide, we'll learn how to define and use constraints in MySQL. - [How to insert and delete data in MySQL](https://www.prisma.io/dataguide/mysql/inserting-and-modifying-data/inserting-and-deleting-data.md): Learn how to use the `INSERT` and `DELETE` queries to add and remove data from MySQL tables. - [How to update existing data in MySQL](https://www.prisma.io/dataguide/mysql/inserting-and-modifying-data/updating-existing-data.md): The `UPDATE` command allows you to change the data in existing MySQL records. This guide demonstrates how to use the `UPDATE` operation to modify the values within your tables. - [How to use `ON DUPLICATE KEY UPDATE` to upsert data in MySQL](https://www.prisma.io/dataguide/mysql/inserting-and-modifying-data/insert-on-duplicate-key-update.md): The `INSERT...ON DUPLICATE KEY UPDATE` clause lets you handle scenarios where a record should be modified if it exists and added if it does not exist. - [Importing and exporting data in MySQL](https://www.prisma.io/dataguide/mysql/inserting-and-modifying-data/importing-and-exporting-data-in-mysql.md): Exporting data from MySQL to recreate your data structures and populate databases is a good way to migrate data, back up and recover, or prepare for replication. Learn more! - [Understanding and using transactions in MySQL](https://www.prisma.io/dataguide/mysql/inserting-and-modifying-data/using-transactions.md): Transactions are one way that MySQL is able to guarantee data consistency when modifying related data. In this article, we'll discuss what transactions are and how they can help perform complex operations safely. - [Inserting and modifying data](https://www.prisma.io/dataguide/mysql/inserting-and-modifying-data.md): Inserting and modifying data in MySQL. Including how to insert and delete data in MySQL, update existing data in MySQL, and more. - [How to perform basic queries with `SELECT` in MySQL](https://www.prisma.io/dataguide/mysql/reading-and-querying-data/basic-select.md): The `SELECT` command is the main way to query the data within tables and views in MySQL. This guide demonstrates the basic syntax and operation of this highly flexible command. - [How to filter query results in MySQL](https://www.prisma.io/dataguide/mysql/reading-and-querying-data/filtering-data.md): This articles shows you how to use filtering clauses to limit the results for `SELECT` commands and other SQL statements. - [Using joins to combine data from different tables in MySQL](https://www.prisma.io/dataguide/mysql/reading-and-querying-data/joining-tables.md): Joining tables allows you to associate and bring together related data stored in different tables in MySQL. - [Identifying slow queries in MySQL](https://www.prisma.io/dataguide/mysql/reading-and-querying-data/identifying-slow-queries.md): Learn how to find long running or slow queries within MySQL. - [Profiling and optimizing slow queries in MySQL](https://www.prisma.io/dataguide/mysql/reading-and-querying-data/optimizing-slow-queries.md): Understand what factors affect your querying performance in MySQL and how to fix them by using profiling methodology. - [Reading and querying data](https://www.prisma.io/dataguide/mysql/reading-and-querying-data.md): Reading and querying data in MySQL. Including how to filter query results in MySQL, perform basic queries with `SELECT` in MySQL, and more. - [Using `mysql_config_editor` to manage MySQL credentials](https://www.prisma.io/dataguide/mysql/tools/mysql-config-editor.md): Manage connection information like usernames, passwords, and MySQL servers with `mysql_config_editor`. - [Tools and utilities](https://www.prisma.io/dataguide/mysql/tools.md): Small tools designed to make working with MySQL more productive. - [How to create and delete users in MySQL](https://www.prisma.io/dataguide/mysql/short-guides/creating-deleting-users.md): Learn how to create MySQL users, delete users, and manage user access with this easy-to-use guide. - [How to check your MySQL configuration for syntax errors](https://www.prisma.io/dataguide/mysql/short-guides/validate-configuration.md): Learn how to check your MySQL server configuration file for syntax errors. - [How to export database and table schemas in MySQL](https://www.prisma.io/dataguide/mysql/short-guides/exporting-schemas.md): Learn how to export your database objects from MySQL for analysis, migrating, backups, and more. - [Short guides](https://www.prisma.io/dataguide/mysql/short-guides.md): Quick guides to help you be more productive with MySQL ## SQLite - [SQLite](https://www.prisma.io/dataguide/sqlite.md) - [Setting up a local SQLite database](https://www.prisma.io/dataguide/sqlite/setting-up-a-local-sqlite-database.md): Learn how to set up a SQLite database on Windows, macOS, and Linux by following the step-by-step instructions in this practical guide. - [Importing and exporting data in SQLite](https://www.prisma.io/dataguide/sqlite/importing-and-exporting-data-in-sqlite.md): Importing and exporting data with SQLite is fast and easy. Learn how to transfer data across the boundaries of your databases. - [Creating and deleting databases and tables with SQLite](https://www.prisma.io/dataguide/sqlite/creating-and-deleting-databases-and-tables.md): Learn how to create, destroy, manage, and use databases and tables using SQLite. - [Inserting and deleting data with SQLite](https://www.prisma.io/dataguide/sqlite/inserting-and-deleting-data.md): Learn how to insert and delete data using SQLite. - [How to perform basic queries with `SELECT` with SQLite](https://www.prisma.io/dataguide/sqlite/basic-select.md): Learn how to perform basic queries with `SELECT` using SQLite. - [How to update existing data with SQLite](https://www.prisma.io/dataguide/sqlite/update-data.md): Learn how to update existing data using SQLite. - [How to export database and table schemas in SQLite](https://www.prisma.io/dataguide/sqlite/exporting-schemas.md): Learn how to export your database objects from SQLite for analysis, migrating, backups, and more. ## Microsoft SQL Server - [Microsoft SQL Server](https://www.prisma.io/dataguide/mssql.md) - [Setting up a local SQL Server database](https://www.prisma.io/dataguide/mssql/setting-up-a-local-sql-server-database.md): Run SQL Server 2025 or 2022 locally in Docker on any OS, or install it on Windows or Linux, then connect with sqlcmd and create a least-privilege login for your app. ## MongoDB - [MongoDB](https://www.prisma.io/dataguide/mongodb.md) - [What is MongoDB?](https://www.prisma.io/dataguide/mongodb/what-is-mongodb.md): Learn about what MongoDB is and how it works. - [Setting up a local MongoDB database](https://www.prisma.io/dataguide/mongodb/setting-up-a-local-mongodb-database.md): Install MongoDB Community Server 9.0 and mongosh locally with Docker, apt, dnf, Homebrew or the Windows installer, turn on authentication, and create your first database. - [Connecting to MongoDB databases](https://www.prisma.io/dataguide/mongodb/connecting-to-mongodb.md): Learn how to connect to and authenticate to a MongoDB server to begin storing and managing your project's data. - [Provisioning a MongoDB Atlas cluster](https://www.prisma.io/dataguide/mongodb/mongodb-atlas-setup.md): Learn how to provision a MongoDB Atlas cluster: choose between Free, Flex and Dedicated tiers, pick a region and version, lock down network access and database users, and script it all with the Atlas CLI. - [How to manage users and authentication in MongoDB](https://www.prisma.io/dataguide/mongodb/configuring-mongodb-user-accounts-and-authentication.md): Find out how to configure user accounts and set up authentication credentials on your MongoDB server, including how to create, delete, and show list of users. - [How to manage authorization and privileges in MongoDB](https://www.prisma.io/dataguide/mongodb/authorization-and-privileges.md): Learn how to use MongoDB's authorization and privilege systems to manage access to your data, including how to assign roles to your user list. - [How to manage databases and collections in MongoDB](https://www.prisma.io/dataguide/mongodb/creating-dbs-and-collections.md): In this guide, we'll cover how to create and manage databases and collections in MongoDB. - [How to manage documents in MongoDB](https://www.prisma.io/dataguide/mongodb/managing-documents.md): Read on to learn how to create and manage documents within MongoDB, including how to delete, update, query, and more. - [How to query and filter documents in MongoDB](https://www.prisma.io/dataguide/mongodb/querying-documents.md): In this guide, we'll cover how to query and retrieve documents in MongoDB. - [Introduction to MongoDB data types](https://www.prisma.io/dataguide/mongodb/mongodb-datatypes.md): In this guide, we'll cover data types in MongoDB. - [Introduction to MongoDB indexes](https://www.prisma.io/dataguide/mongodb/mongodb-indexes.md): In this guide we will cover everything you need to know about MongoDB indexes, from how to drop, show, create, and use them. - [Introduction to MongoDB transactions](https://www.prisma.io/dataguide/mongodb/mongodb-transactions.md): In this guide, we'll cover transactions in MongoDB, including how to appropriately use them within the document model. - [Introduction to MongoDB connection URIs](https://www.prisma.io/dataguide/mongodb/connection-uris.md): Learn how to encode MongoDB connection details in connection URIs for applications and libraries, including authentication details and other parameters. - [Working with dates and times in MongoDB](https://www.prisma.io/dataguide/mongodb/working-with-dates.md): Learn how to store and manage date information in MongoDB. - [How MongoDB encrypts data](https://www.prisma.io/dataguide/mongodb/mongodb-encryption.md): The need for data encryption is even more paramount for organizations handling sensitive information. Learn how MongoDB encrypts data to ensure security. - [Introduction to MongoDB database tools & utilities](https://www.prisma.io/dataguide/mongodb/mongodb-database-tools.md): No matter the database you are working with, there are likely database tools available to help. Learn about MongoDB Database Tools & Utilities - [How to sort query results in MongoDB](https://www.prisma.io/dataguide/mongodb/mongodb-sorting.md): Learn how to sort MongoDB data in ascending and descending order, with single or multiple fields, including by date. - [Introduction to MongoDB Aggregation Framework](https://www.prisma.io/dataguide/mongodb/mongodb-aggregation-framework.md): Learn about MongoDB's Aggregation Framework and how to break complex logic into stages. ## Database tools - [Database tools](https://www.prisma.io/dataguide/database-tools.md) - [Node.js ORMs, query builders and database libraries in 2026](https://www.prisma.io/dataguide/database-tools/top-nodejs-orms-query-builders-and-database-libraries.md): A September 2026 comparison of Node.js and TypeScript ORMs and query builders (Drizzle, MikroORM, Prisma ORM, Sequelize, TypeORM, Mongoose, Knex.js and Kysely), with figures you can check. - [Evaluating type safety in TypeScript ORMs and query builders (2026)](https://www.prisma.io/dataguide/database-tools/evaluating-type-safety-in-the-top-8-typescript-orms.md): Compare eight TypeScript database libraries with independently executed compiler and runtime checks, exact dependency locks and published reproduction projects. - [What is connection pooling and how does it work?](https://www.prisma.io/dataguide/database-tools/connection-pooling.md): Learn how connection pooling helps databases handle more clients with the same resources. ## Managing databases - [Managing databases](https://www.prisma.io/dataguide/managing-databases.md) - [Troubleshooting database outages and connection issues](https://www.prisma.io/dataguide/managing-databases/database-troubleshooting.md): Learn about the possible reasons your database might be down or not connected and what you can do to fix it. - [How to spot bottlenecks in performance](https://www.prisma.io/dataguide/managing-databases/how-to-spot-bottlenecks-in-performance.md): The culprit for many application performance issues can be traced back to the database. In this article, we cover some of the most common performance bottlenecks that you might run into and what to do about them - [Syncing development databases between team members](https://www.prisma.io/dataguide/managing-databases/syncing-development-databases-between-team-members.md): Working on a team means you need to keep database changes in-sync between developers. Discover several ways to approach database syncing in this guide. - [Introduction to database replication and its benefits](https://www.prisma.io/dataguide/managing-databases/database-replication/database-replication-introduction.md): In this article, we cover what database replication is and its most common benefits. Learn more about the advantages of database replication. - [Database replication](https://www.prisma.io/dataguide/managing-databases/database-replication.md): Database Replication - [Introduction to OLAP and OLTP](https://www.prisma.io/dataguide/managing-databases/introduction-to-OLAP-OLTP.md) - [How microservices and monoliths impact the database](https://www.prisma.io/dataguide/managing-databases/microservices-vs-monoliths.md) - [Introduction to database caching](https://www.prisma.io/dataguide/managing-databases/introduction-database-caching.md): An introduction to database caching strategies and their benefits. - [Introduction to testing in production](https://www.prisma.io/dataguide/managing-databases/testing-in-production.md): An introduction to testing in production, its advantages, challenges, and more. - [Introduction to database backup considerations](https://www.prisma.io/dataguide/managing-databases/backup-considerations.md): Learn about the choices you will need to make when developing a database backup strategy. - [Introduction to full-text search](https://www.prisma.io/dataguide/managing-databases/intro-to-full-text-search.md): Learn about full-text search is and how to control the indexing and querying processes for better results. ## Serverless architecture - [Serverless architecture](https://www.prisma.io/dataguide/serverless.md): How serverless providers help you build applications without managing servers - [What is serverless?](https://www.prisma.io/dataguide/serverless/what-is-serverless.md): Learn what serverless computing, applications, and architecture mean for databases, and why these might be helpful for your projects. - [Comparing serverless computing and database providers](https://www.prisma.io/dataguide/serverless/serverless-comparison.md): Where to find current runtimes, limits and billing for AWS Lambda, Azure Functions, Google Cloud Functions, Cloudflare Workers, Netlify, Vercel and serverless databases, and what to compare. - [Introduction to common serverless challenges](https://www.prisma.io/dataguide/serverless/serverless-challenges.md): There are some important disadvantages of serverless computing. Read on to learn about common serverless challenges like cold starts, lock-in, and more. - [Traditional databases vs serverless databases](https://www.prisma.io/dataguide/serverless/traditional-vs-serverless-databases.md): Learn about the advantages, disadvantages, and comparisons of self-managed databases, managed databases, and serverless databases. - [Serverless glossary](https://www.prisma.io/dataguide/serverless/serverless-glossary.md): Learn the terminology associated with serverless. ## Just for fun - [Just for fun](https://www.prisma.io/dataguide/just-for-fun.md): A collection of interesting and just for fun topics - [The United States' most popular databases by state going into 2022](https://www.prisma.io/dataguide/just-for-fun/us-most-popular-databases-by-states.md): Want to know which databases are most popular throughout the US? Check out the map to see which is each state’s favorite - the results may surprise you!