Comparisons
Database Type Matrix
Caveats:
- These are generalized assumptions for average use-cases, not strict guidelines.
- Based on your expertise or use-case the recommendation may change.
✅ Highest - Better match . . . ⭐️ Average . . . ❌ Lower - Below average
Relational RDBMS | Document | Object | Key-Value | Event Store | Column | In-Memory | Graph | Time Series | |
---|---|---|---|---|---|---|---|---|---|
Example types | MySQL, Postgres | Cassandra, CouchDB | Oracle Berkeley | DynamoDB, Redis | Kafka, Kinesis | BigTable, Redshift | Redis | Neo4j, Neptune, GraphDB | |
Lowest Cost | ✅ | ⭐️ | ⭐️ | ✅ | ❌ | ⭐️ | ⭐️ | ❌ | ❌ |
Realtime Low-Latency | ❌ | ✅ | ⭐️ | ⭐️ | ✅ | ⭐️ | ✅ | ⭐️ | ⭐️ |
Data Availability | ⭐️ | ✅ | ❌ | ✅ | ⭐️ | ⭐️ | ❌ | ⭐️ | ⭐️ |
Data consistency | ✅ | ❌ | ⭐️ | ❌ | ⭐️ | ⭐️ | ⭐️ | ❌ | ❌ |
Unstructured Data | ❌ | ✅ | ⭐️ | ⭐️ | ⭐️ | ⭐️ | ⭐️ | ⭐️ | ⭐️ |
Complex queries | ✅ | ❌ | ⭐️ | ❌ | ❌ | ⭐️ | ⭐️ | ✅ | ❌ |
Efficient indexing | ✅ | ⭐️ | ❌ | ✅ | ⭐️ | ⭐️ | ❌ | ⭐️ | ⭐️ |
Data integrity | ✅ | ⭐️ | ❌ | ❌ | ⭐️ | ⭐️ | ⭐️ | ❌ | ❌ |
Flexible schema | ❌ | ✅ | ⭐️ | ⭐️ | ⭐️ | ⭐️ | ⭐️ | ⭐️ | ⭐️ |
Easy scalability | ⭐️ | ✅ | ❌ | ✅ | ⭐️ | ⭐️ | ❌ | ⭐️ | ⭐️ |
High performance | ⭐️ | ✅ | ❌ | ⭐️ | ❌ | ✅ | ⭐️ | ⭐️ | ✅ |
Query relationships | ✅ | ❌ | ⭐️ | ❌ | ⭐️ | ⭐️ | ⭐️ | ✅ | ❌ |
Relational RDBMS | Document | Object | Key-Value | Event Store | Column | In-Memory | Graph | Time Series | |
Support transactions | ✅ | ❌ | ⭐️ | ❌ | ⭐️ | ⭐️ | ⭐️ | ❌ | ❌ |
Highest reliability | ✅ | ⭐️ | ❌ | ⭐️ | ⭐️ | ⭐️ | ⭐️ | ⭐️ | ⭐️ |
Cloud Services Support | ⭐️ | ✅ | ❌ | ⭐️ | ⭐️ | ⭐️ | ❌ | ⭐️ | ⭐️ |
Read Heavy | ✅ | ⭐️ | ⭐️ | ❌ | ❌ | ⭐️ | ⭐️ | ⭐️ | ❌ |
Write Heavy | ⭐️ | ✅ | ✅ | ✅ | ✅ | ⭐️ | ⭐️ | ⭐️ | ❌ |
Fault tolerance | ✅ | ⭐️ | ⭐️ | ❌ | ❌ | ⭐️ | ⭐️ | ⭐️ | ❌ |
Compression | ✅ | ⭐️ | ⭐️ | ❌ | ❌ | ⭐️ | ⭐️ | ⭐️ | ❌ |
Backups | ✅ | ⭐️ | ⭐️ | ❌ | ❌ | ⭐️ | ⭐️ | ⭐️ | ❌ |
Storage costs | ✅ | ⭐️ | ⭐️ | ✅ | ⭐️ | ⭐️ | ⭐️ | ❌ | ❌ |
Lowest complexity | ✅ | ⭐️ | ⭐️ | ✅ | ⭐️ | ⭐️ | ⭐️ | ❌ | ❌ |
Database Detailed Comparisons
For a full text detail of each databse for comparison go here:
Comparisons
MySQL
MySQL is a good choice for software applications that need to store and retrieve structured data and require a high level of data consistency. Some specific types of applications that may benefit from using a MySQL database include:
- Content management systems (CMS): WordPress, Joomla, Drupal, etc.
- E-commerce platforms: Magento, Prestashop, Shopify, etc.
- Customer relationship management (CRM) systems: Salesforce, Zoho, Pipedrive, etc.
- Business intelligence (BI) and reporting tools: Tableau, Power BI, etc.
- Applications that have complex queries and need to join multiple tables to get the data.
- Applications that need a high level of data consistency, such as financial and accounting systems.
- Applications that require transaction management, such as an e-commerce platform.
- Applications that need to store large amounts of structured data, such as an inventory management system.
- Additionally, MySQL is a mature and widely-used technology, which means that it has a large community of developers and a wealth of resources and documentation available, which can make it easier to find support and troubleshoot issues.
NoSQL
NoSQL databases are a good choice for software applications that need to store and retrieve large amounts of unstructured or semi-structured data, and require high performance and scalability. Some specific types of applications that may benefit from using a NoSQL database include:
Big Data Applications: Applications that handle and process a large amount of data, such as real-time analytics, log processing, and data warehousing.
Internet of Things (IoT) Applications: Applications that collect and store data from connected devices, such as sensor data, location data, and machine-generated data.
Mobile and Web Applications: Applications that handle high traffic and need to store and retrieve data quickly, such as social media platforms, gaming, and messaging apps.
Content delivery networks (CDN) Applications: Applications that handle and deliver large amounts of multimedia content, such as videos, images, and audio files.
Applications that need to store and retrieve large amounts of unstructured or semi-structured data, such as JSON, XML, or key-value pairs.
Applications that need high performance and scalability, such as real-time data processing and analytics.
Applications that require a flexible data model, such as a document-based model, which allows for easy data manipulation.
Applications that require horizontal scaling, which allows for the addition of more servers to handle increased traffic and data storage.
NoSQL databases are also often used in conjunction with other databases, such as MySQL, to handle different types of data and use cases. For example, a social media platform might use a NoSQL database to store user data and a MySQL database to store structured data such as financial transactions.
Questions of Database Requirements - RDS vs. DynamoDB
As a solutions architect what questions should I ask about to decide whether I should use AWS RDS or AWS DynamoDB for my database?
note: This is intended as a getting-started guideline, it's not meant to be a comprehensive. Some change and nuances may not be reflected.
What is the size of the data that needs to be stored?
- If data size is smaller (< 10 GB): DynamoDB, unless RDBMS is required.
- If data size is larger (> 10 GB): RDS may be better in cost, but must be perforance optimized at large data sizes. In some cases DynamoDB will scale better particularly for unstructured data, but may be more costly.
What is the expected throughput (read/write requests per second)?
- Throughput is variable by settings.
- Default throughput is lower (< 10 requests/sec) for DynamoDB but can be scaled higher than RDS.
- In DynamoDB, read and write throughput is measured in "request units" per second (RU/s).
- The number of request units required for a particular operation depends on the size of the item being read or written, and the type of operation being performed.
- For example, a simple key-value read requires one request unit, while a more complex query or scan operation may require multiple request units.
- DynamoDB automatically scales throughput as needed, so the actual read and write throughput will depend on the size of the table and the amount of read and write activity.
- In general, it can handle very high throughput, in the order of millions of requests per second, but it will also depend on the specific use case and the requirements of the application.
- If throughput is high (> 10 requests/sec): RDS may handle it better out of the box initally, but also require scaling.
- In RDS, the expected throughput will depend on the underlying database engine, the size of the instance, and the amount of read and write activity.
- RDS does not automatically scale throughput, instead you can use the read replica feature for read-heavy workloads or increase the size of the instance to handle more traffic.
- In general, RDS can handle high throughput, but it may not be as high as DynamoDB, as it is optimized for structured data and complex queries.
How often will the data be written?
- If data is written frequently: DynamoDB
- If data is written infrequently: RDS
What type of data needs to be stored?
- If data is simple (key-value): DynamoDB
- If data is complex (multiple tables, joins): RDS
Does the data need to be indexed?
- If data needs to be indexed: RDS
- If data needs less indexing: DynamoDB
Is the data relational?
- If data is relational: RDS
- If data is not relational: DynamoDB
What is the budget for the project?
- If budget is lower: DynamoDB
- If budget is higher: RDS
Does the data need to be accessed through SQL?
- If data needs to be accessed through SQL: RDS
- If data does not need to be accessed through SQL: DynamoDB
Is there a need for scalability and availability?
- If scalability and availability is needed: DynamoDB may be better overall, with capacity adjustments.
- If scalability and availability is lower priority, or there is expertise to customize: RDS
Is there a need for backup and restore capabilities?
- Both provide this capability.
How much data is expected to grow over time?
- If data is expected to grow very quickly: DynamoDB
- If data is expected to grow slowly: RDS
Is there a need for transactions?
- If transactions are needed: RDS
- If transactions are not needed: DynamoDB
Does the data need to be replicated across multiple regions?
- If data needs to be replicated across multiple regions: DynamoDB
- If data does not need to be replicated across multiple regions: RDS
Does the data need to be queried using complex queries?
- If complex queries are needed: RDS
- If complex queries are not needed: DynamoDB
Does the data need to be stored in a specific format?
- If data needs to be stored in a specific format: RDS
- If data does not need to be stored in a specific format: DynamoDB
Does the data need to be shared with other users easily?
- If data needs to be shared with other users easily: DynamoDB
- If data does not need to be shared with other users easily: RDS
Does the data need to be partitioned?
- If data needs to be partitioned: DynamoDB
- If data does not need to be partitioned: RDS
Does the data need to be used for reporting and analytics?
- If data needs to be used for reporting and analytics: RDS
- If data does not need to be used for reporting and analytics: DynamoDB
Does the data need to be stored in a specific region?
- If data needs to be stored in a specific region: RDS
- If data does not need to be stored in a specific region: DynamoDB
Is there a need for encryption at rest and in transit?
- If encryption at rest and in transit is needed: RDS
- If encryption at rest and in transit is not needed: DynamoDB
Does the data need to be managed by a relational database management system (RDBMS)?
- If data needs to be managed by an RDBMS: RDS
- If data does not need to be managed by an RDBMS: DynamoDB
Does the data need to be queried using structured query language (SQL)?
- If data needs to be queried using SQL: RDS
- If data does not need to be queried using SQL: DynamoDB
Does the data need to be stored in a distributed manner?
- If data needs to be stored in a distributed manner: DynamoDB
- If data does not need to be stored in a distributed manner: RDS
Does the data need to be horizontally scalable?
- If data needs to be horizontally scalable: DynamoDB
- If data does not need to be horizontally scalable: RDS
Does the data need to be processed in real-time?
- If data needs to be processed in real-time: DynamoDB
- If data does not need to be processed in real-time: RDS
Does the data need to be protected from accidental deletion or modification?
- If data needs to be protected from accidental deletion or modification: Either
- For DynamoDB, the following options are available:
- AWS Backup: This is a fully managed backup service that can be used to automate the process of creating and retaining backups of DynamoDB tables. It allows you to define backup schedules, set retention periods, and restore data from backups.
- Point-in-Time Recovery (PITR): This feature allows you to restore a table to a specific point in time, which can be useful in cases of accidental deletion or modification of data.
- DynamoDB Streams: This feature allows you to capture a time-ordered sequence of item-level modifications in a DynamoDB table, and can be used to keep a record of changes to the table.
- For RDS:
- Automated Backups: This feature allows you to automatically take full and incremental backups of your RDS instance, and can be used to restore data in case of accidental deletion or modification.
- Snapshots: This feature allows you to create manual, full backups of your RDS instance. Snapshots can be used to restore data in case of accidental deletion or modification.
- Multi-AZ (Availability Zone) Deployment: This feature allows you to deploy your RDS instance in multiple availability zones, which can provide enhanced data durability and availability in case of accidental deletion or modification.
- Read Replicas: This feature allows you to create a replica of your RDS instance, which can be used to offload read traffic and improve performance, but also provide a replica for data recovery.
- Does the data need to be automatically backed up?
- If data needs to be automatically backed up: RDS
- If data does not need to be automatically backed up: DynamoDB
- Does the data need to be versioned?
- If data needs to be versioned: RDS
- If data does not need to be versioned: DynamoDB
- Does the data need to be highly available?
- If data needs to be highly available: DynamoDB
- If data does not need to be highly available: RDS
- Does the data need to be monitored and managed?
- If data needs to be monitored and managed: RDS
- If data does not need to be monitored and managed: DynamoDB
More RDS/DynamoDB Questions
note: This is intended as a getting-started guideline, it's not meant to be a comprehensive. Some change and nuances may not be reflected.
- What is the size of your data?
-If the size is greater than 10 GB, RDS is the better choice. RDS is better suited to larger datasets, while DynamoDB is better suited to smaller datasets.
- What type of data are you storing?
-If you are storing relational data, RDS is the better choice. DynamoDB is a NoSQL database and is ✅ suited to unstructured data.
- What type of access do you need to your data?
-If you need to run complex queries on your data, RDS is the better choice. DynamoDB is limited in its query capabilities compared to RDS.
- What are your scalability requirements?
-If you need to scale quickly and easily, DynamoDB is the better choice. DynamoDB is a fully managed service, and can scale up and down with ease.
- What is your budget?
-If you have a limited budget, DynamoDB is the better choice. DynamoDB is a more cost-effective option compared to RDS.
Give 10 more items to add to the list
What is the expected read/write throughput of the database? -If you need high throughput, DynamoDB is the better choice. DynamoDB can scale up to millions of requests per second.
What are your latency requirements? -If you need low latency, DynamoDB is the better choice. DynamoDB is optimized for low latency queries.
What is the expected downtime for the database? -If you need high availability, RDS is the better choice. RDS provides high availability with built-in replication and redundancy.
What type of security do you need for your data? -If you need to secure your data, RDS is the better choice. RDS provides a wide range of security options, such as encryption and role-based access control.
What type of backup and restore options do you need? -If you need advanced backup and restore options, RDS is the better choice. RDS provides automated backups and point-in-time recovery.
What type of analytics do you need to perform? -If you need to perform complex analytics, RDS is the better choice. RDS provides tools for performing complex analytics on your data.
What type of monitoring do you need? -If you need real-time monitoring and alerting, RDS is the better choice. RDS provides real-time monitoring and alerting capabilities.
What is the expected growth of your data? -If you expect your data to grow rapidly, DynamoDB is the better choice. DynamoDB can automatically scale up and down to accommodate growth.
What type of disaster recovery do you need? -If you need advanced disaster recovery capabilities, RDS is the better choice. RDS provides automated replication and point-in-time recovery.
What type of performance tuning do you need? -If you need advanced performance tuning, RDS is the better choice. RDS provides a range of performance tuning options.
give 10 more items to add to the list
What type of data replication do you need? -If you need data replication across multiple regions, RDS is the better choice. RDS provides multi-region replication to ensure high availability.
What type of storage do you need? -If you need advanced storage options, RDS is the better choice. RDS provides multiple storage options, such as encrypted storage and SSD storage.
What type of access control do you need? -If you need advanced access control, RDS is the better choice. RDS provides role-based access control to ensure security.
What type of query capabilities do you need? -If you need complex query capabilities, RDS is the better choice. RDS provides a wide range of query options, such as joins and subqueries.
What type of database migration do you need? -If you need to migrate data between databases, RDS is the better choice. RDS provides tools for migrating data between different databases.
What type of transaction support do you need? -If you need support for transactions, RDS is the better choice. RDS provides support for transactions and ACID compliance.
What type of indexing do you need? -If you need advanced indexing capabilities, RDS is the better choice. RDS provides support for multiple types of indexing, such as hash and B-tree indexing.
What type of monitoring do you need? -If you need real-time monitoring and alerting, RDS is the better choice. RDS provides real-time monitoring and alerting capabilities.
What type of data streaming do you need? -If you need to stream data, DynamoDB is the better choice. DynamoDB provides support for streaming data with Amazon Kinesis.
What type of auto-scaling do you need? -If you need automated scaling, DynamoDB is the better choice. DynamoDB provides automated scaling to accommodate growth.
MySQL vs. Postgree
note: This is intended as a getting-started guideline, it's not meant to be a comprehensive. Some change and nuances may not be reflected.
MySQL (compared to Postgres):
- Developed, distributed, and supported by Oracle
- Uses a proprietary license
- Has a simpler and more limited SQL syntax
- Has better performance for read-heavy workloads and larger, simpler data sets
- Has less advanced features for data integrity and transaction management
- Has built-in support for full-text searching
- Has a larger user base and more community resources, especially in the web development community
PostgreSQL (compared to MySQL):
- Developed and supported by a global community of contributors
- Uses a open-source license
- Has a more advanced and powerful SQL syntax
- Better performance for write-heavy workloads and more complex data sets
- More advanced features for data integrity and transaction management
- Has more robust support for data types and indexes
- Smaller user base but a more dedicated and experienced community
- Better Support for JSON and Array Data types
- Support for Concurrent Data Access
- Support for Stored Procedures and Triggers
- Support for Data Validation
DynamoDB vs. MongoDB
MongoDB and DynamoDB are both popular NoSQL databases, but they have some key differences.
note: This is intended as a getting-started guideline, it's not meant to be a comprehensive. Some change and nuances may not be reflected.
MongoDB:
- Developed and supported by MongoDB Inc.
- Uses a open-source license
- Stores data in a document-oriented format, allowing for more flexible and dynamic data modeling
- Has support for secondary indexes, rich query language and complex aggregation
- Has built-in support for sharding and replication, allowing for horizontal scalability
- Has a larger user base and more community resources
- Can be run on-premises or in the cloud
- Support for ad-hoc queries: MongoDB has a rich query language that supports ad-hoc queries, allowing you to retrieve data based on any combination of fields and operators.
- Support for joins: MongoDB supports joins through its Aggregation Framework, which allows you to combine data from multiple collections.
- Support for complex transactions: MongoDB provides support for multi-document transactions, which allows you to perform complex updates and inserts across multiple documents and collections.
- Support for full-text search: MongoDB has built-in support for full-text search, allowing you to search for specific words or phrases within text fields.
- Support for geospatial indexing and querying: MongoDB supports geospatial indexing and querying, allowing you to store and query data based on location.
DynamoDB:
- Developed and supported by Amazon
- Uses a proprietary license
- Stores data in a key-value format, optimized for high write and read throughput
- Has support for secondary indexes, but the query language is more limited
- Has built-in support for horizontal scaling and data replication
- Has a smaller user base, but more tightly integrated with other AWS services
- Runs only on Amazon Web Services (AWS)
- Support for stream processing: DynamoDB supports stream processing, allowing you to capture and process real-time data streams from multiple sources.
- Support for global tables: DynamoDB supports global tables, which allow you to replicate data across multiple AWS regions for low-latency access and high availability.
- Support for backup and restore: DynamoDB supports automatic backups and point-in-time recovery, allowing you to restore your data to a specific point in time.
- Support for auto-scaling: DynamoDB supports automatic scaling of read and write capacity, allowing you to handle changes in traffic without manual intervention.
- Support for encryption at rest: DynamoDB supports encryption at rest, allowing you to secure your data at rest using AES-256 encryption.
DynamoDB vs. Cassandra
Here are some key differences between Amazon DynamoDB and Apache Cassandra:
DynamoDB:
- Developed and maintained by Amazon Web Services (AWS)
- Offers both document and key-value data models
- Provides managed, scalable and highly available NoSQL database service
- Offers a proprietary API for interacting with the database
- Strongly consistent reads by default, with an option for eventual consistency
- Has a limited free tier and charges based on usage of read and write capacity units
- Built for high performance and low latency, but at a higher cost compared to Cassandra
- For apps that need managed, scalable, and highly available NoSQL database services
- For apps that have a variable or unpredictable workload, making it difficult to provision fixed capacity
- For apps that require strong consistency for data reads
- For apps built on the AWS platform and have tight integration with other AWS services
- For apps that require fast performance and low latency, but are willing to trade off cost for these benefits
Apache Cassandra:
- Developed and maintained by the Apache Software Foundation
- Offers only a wide column data model
- Open source, highly scalable and distributed NoSQL database
- Uses the Cassandra Query Language (CQL) for interacting with the database
- Offers tunable consistency levels, with eventual consistency being the default
- Open source and free to use, but requires a certain amount of technical expertise for setup and maintenance
- Built for high scalability and high availability, with a focus on cost efficiency
- For apps that require a highly scalable and distributed NoSQL database
- For apps that have a large amount of data and require high write throughput
- For apps that require tunable consistency levels and support for complex data relationships
- For apps that have a need for cost efficiency and are willing to trade off some performance for this benefit
- For apps that are deployed in a hybrid or multi-cloud environment and require a database with a strong open-source community and multiple vendors offering support.
Event Store databases
Event Stores are distributed databases that is designed to provide high availability and fault-tolerance. It achieves this by using a technique called "Event Sourcing" where all changes to the database are stored as a sequence of events.
To achieve fault-tolerance, Event Stores use a technique called "gossip-based replication" where each node in the cluster periodically communicates with other nodes to exchange information about the state of the cluster. This allows nodes to detect when other nodes are unavailable and to automatically re-configure the cluster to ensure that data is still available.
Event Stores also provides automatic data replication across multiple nodes, ensuring that the data is always available, even in the event of a node failure. Additionally, Event Store allows you to configure the number of replicas for each event, so you can control the level of durability and fault-tolerance for your data.
Event Stores also use a technique called "chasing tails" which allows nodes to catch up on events that they may have missed while disconnected. This helps to ensure that all nodes in the cluster are eventually consistent.
designed to provide high availability and fault-tolerance by using a combination of gossip-based replication, automatic data replication, and chasing tails, which work together to ensure that your data is always available and consistent, even in the event of a node failure.
Some issues with fault tolerance:
Limited replication options: Event Store uses a technique called "gossip-based replication" which is based on a peer-to-peer model, but this approach may not provide the level of fault-tolerance that some people are looking for.
Complexity: a complex system that requires a certain level of expertise to set up and maintain. This complexity can make it difficult for some people to achieve high availability and fault-tolerance.
Limited scalability: Event Store is designed to handle large amounts of data, but it may not scale as well as other databases that are designed for horizontal scaling.
Limited data modeling: Event Store uses a technique called "Event Sourcing" which is different from traditional relational databases, it may not be suitable for all use cases, and it may be difficult for some people to adapt to this model.
Limited query options: Event Store uses a specialized query language called "Linq" which may be limiting for some people in terms of querying the data.
Most Fault Tolerant Databases
Amazon DynamoDB: A fully-managed, highly available, and scalable NoSQL database service that automatically replicates data across multiple availability zones.
Google Cloud Spanner: A globally-distributed, strongly consistent relational database service that uses a combination of techniques such as Paxos and TrueTime to provide high availability and fault-tolerance.
Apache Cassandra: A distributed, wide-column store database that is designed to handle large amounts of structured, semi-structured, and unstructured data and provide high availability and fault-tolerance.
Apache Kafka: A distributed streaming platform that is designed to handle large amounts of data and provide high availability and fault-tolerance.
FoundationDB: A distributed NoSQL database that is designed to provide high availability and fault-tolerance by using a technique called "multi-version concurrency control" (MVCC)
Riak: A distributed key-value store database that is designed to provide high availability and fault-tolerance by using a technique called "Conflict-Free Replicated Data Types" (CRDTs)
Microsoft Azure Cosmos DB: A globally-distributed, multi-model database service that automatically scales and replicates data across multiple regions to provide high availability and fault-tolerance.
GCP: Your Google Cloud database options, explained https://cloud.google.com/blog/topics/developers-practitioners/your-google-cloud-database-options-explained
SQL Comparisons
PostgreSQL vs. MySQL
Scalability
- PostgreSQL is known for its ability to handle complex data and provide advanced data analytics capabilities, while MySQL is often used for smaller applications and is more limited in terms of scalability.
ACID compliance
- PostgreSQL is fully ACID (Atomicity, Consistency, Isolation, Durability) compliant, which means it is better suited for mission-critical applications that require data integrity. MySQL is ACID compliant to a certain extent, but it does not guarantee full compliance.
Data Types
- PostgreSQL supports advanced data types such as arrays, hstore (a key-value store), and geometric data, while MySQL is more limited in terms of data types.
Query Optimization
- PostgreSQL has advanced query optimization and indexing capabilities, making it faster and more efficient when dealing with complex queries. MySQL has improved its query optimization in recent versions, but it is still considered to be behind PostgreSQL.
Community
- PostgreSQL has a larger and more active community of developers and users, which means there is more support and a larger pool of resources available.
More comparison of Mysql, PostgreSQL and other DBs info can be found here:
Storage engines for Mysql and what are some differences
InnoDB: A transaction-safe, ACID-compliant storage engine that is optimized for high-concurrency environments and is the default storage engine in recent versions of MySQL.
MyISAM: A legacy storage engine that is no longer recommended for use in most production environments due to its lack of support for transactions and foreign key constraints.
Memory (HEAP): A high-performance storage engine that stores data in memory and is commonly used for temporary or cache data.
CSV: A storage engine that stores data in plain text CSV format.
Archive: A storage engine designed for storing large amounts of historical data that is rarely read, with minimal overhead.
NDB (Network DataBase): A high-performance, distributed storage engine that is optimized for large-scale, read-intensive environments.
Differences:
Transactions: Some storage engines, such as InnoDB and NDB, support transactions and have built-in support for enforcing referential integrity, while others, such as MyISAM and CSV, do not.
Performance: The performance of different storage engines can vary widely depending on the type of data and workloads, with some, such as Memory and NDB, optimized for high-performance environments, and others, such as Archive, optimized for low overhead and data compression.
Data Integrity: Some storage engines, such as InnoDB and NDB, have built-in data integrity features, while others, such as MyISAM and CSV, do not.
Space Efficiency: The amount of storage space required by different storage engines can vary, with some, such as Archive and CSV, designed to be space-efficient, and others, such as InnoDB and NDB, designed to support high levels of data integrity.
Locking: The way different storage engines handle concurrency and locking can also vary, with some, such as InnoDB, using row-level locking, and others, such as MyISAM, using table-level locking.