[
    {
        "id": "tidesdb",
		"visible": true,
        "name": "TidesDB",
        "logo": "/assets/logo_tidesdb.png",
        "description": "TidesDB is a fast, light-weight and efficient embeddable key-value storage engine library written in C.",
        "website": "https://tidesdb.com/",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "external",
        "tags": [],
        "sponsor": "silver",
        "sponsor_primary": true,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About TidesDB",
                    "content": [
                        "TidesDB is a fast, light-weight and efficient embeddable key-value storage engine library written in C. Built on a log-structured merge-tree (LSM-tree) architecture, it provides a foundational library for building database systems or can be used directly as a standalone key-value or column store.",
                        "TidesDB is designed for direct integration into applications. It handles keys and values as raw byte sequences without size restrictions (up to system memory limits), giving you full control over serialization. Optimized for write-heavy workloads, it maintains efficient reads through bloom filters, caching, block indices, and compaction."
                    ]
                },
                {
                    "title": "MariaDB Support",
                    "content": "TideSQL is a pluggable storage engine for MariaDB, built on top of TidesDB. The engine supports ACID transactions through multi-version concurrency control (MVCC), letting readers proceed without blocking writers. It handles primary keys, secondary indexes, auto-increment columns, virtual and stored generated columns, savepoints, TTL-based expiration, data-at-rest encryption, online DDL, partitioning, and online backups. All of these features are accessible through standard SQL, so switching from InnoDB to TidesDB for a particular table requires nothing more than changing the ENGINE clause."
                }
            ],
            "links": [
                { "label": "Official Website", "url": "https://tidesdb.com/" },
                { "label": "Documentation", "url": "https://tidesdb.com/getting-started/what-is-tidesdb/" },
                { "label": "Installation", "url": "https://tidesdb.com/reference/tidesql/" },
                { "label": "GitHub", "url": "https://github.com/tidesdb/tidesdb" },
                { "label": "Sponsorship Announcement", "url": "https://mariadb.org/tidesdb-becomes-silver-sponsor-of-the-mariadb-foundation/" }
            ]
        }
    },
    {
        "id": "archive",
		"visible": true,
        "name": "Archive",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "The Archive storage engine is optimized for high-speed insertion and compression of large amounts of data, suitable for logging and auditing.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/archive",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Archive",
                    "content": [
                        "The ARCHIVE storage engine is a storage engine that uses gzip to compress rows. It is mainly used for storing large amounts of data, without indexes, with only a very small footprint.",
                        "A table using the ARCHIVE storage engine is stored in two files on disk. There's a table definition file with an extension of .frm, and a data file with the extension .ARZ. At times during optimization, a .ARN file will appear.",
                        "New rows are inserted into a compression buffer and are flushed to disk when needed. SELECTs cause a flush. Sometimes, rows created by multi-row inserts are not visible until the statement is complete.",
                        "ARCHIVE allows a maximum of one key. The key must be on an AUTO_INCREMENT column, and can be a PRIMARY KEY or a non-unique key. However, it has a limitation: it is not possible to insert a value which is lower than the next AUTO_INCREMENT value."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/server-usage/storage-engines/archive" }
            ]
        }
    },
    {
        "id": "aria",
		"visible": true,
        "name": "Aria",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "A crash-safe storage engine compiled into MariaDB Server, used internally for system and temporary tables. Offers improved caching and crash recovery over MyISAM.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/aria",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "installed",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Aria",
                    "content": "Aria is a storage engine developed as a crash-safe successor to MyISAM, compiled into MariaDB Server since version 5.1. It serves as the storage engine for internal system tables and temporary tables. Aria supports three row formats — PAGE (default), FIXED, and DYNAMIC — and provides better caching than MyISAM, which benefits queries involving GROUP BY and DISTINCT operations."
                },
                {
                    "title": "Key Features",
                    "content": [
                        "Used internally by MariaDB for system tables and temporary tables, ensuring reliability for internal query processing.",
                        "Improved caching over MyISAM, accelerating intermediate query operations such as GROUP BY and DISTINCT",
                        "Three row formats: PAGE (default, enables crash safety), FIXED, and DYNAMIC, allowing storage behavior to be tuned per table.",
                        "Group commit support that batches write operations to the transaction log, reducing I/O overhead on write-heavy workloads."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/server-usage/storage-engines/aria" }
            ]
        }
    },
    {
        "id": "audit",
		"visible": true,
        "name": "Audit Plugin",
        "logo": "/assets/logo_plugin_audit.svg",
        "description": "The MariaDB Audit Plugin records server activity, including connections, queries, and table access, to help meet organizational auditing and compliance regulations.",
        "website": "https://mariadb.com/docs/server/reference/plugins/mariadb-audit-plugin/mariadb-audit-plugin-overview",
        "type": "Audit",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Audit Plugin",
                    "content": [
                        "MariaDB and MySQL are used in a broad range of environments, but if you needed to record user access to be in compliance with auditing regulations for your organization, you would previously have had to use other database solutions. To meet this need, though, MariaDB has developed the MariaDB Audit Plugin. Although the MariaDB Audit Plugin has some unique features available only for MariaDB, it can be used also with MySQL.",
                        "Basically, the purpose of the MariaDB Audit Plugin is to log the server's activity. For each client session, it records who connected to the server (i.e., user name and host), what queries were executed, and which tables were accessed and server variables that were changed. This information is stored in a rotating log file or it may be sent to the local syslogd."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/mariadb-audit-plugin/mariadb-audit-plugin-overview" }
            ]
        }
    },
    {
        "id": "aws-key-mngt",
		"visible": true,
        "name": "AWS Key Management",
        "logo": "/assets/logo_plugin_encryption.svg",
        "description": "This plugin uses Amazon KMS to generate and store master keys, decrypting them at startup to enable data-at-rest encryption with key rotation support.",
        "website": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/aws-key-management-encryption-plugin",
        "type": "Encryption",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About AWS Key Management",
                    "content": "The AWS Key Management plugin uses the Amazon Web Services (AWS) Key Management Service (KMS) to generate and store AES keys on disk, in encrypted form, using the Customer Master Key (CMK) kept in AWS KMS. When MariaDB Server starts, the plugin will decrypt the encrypted keys, using the AWS KMS 'Decrypt' API function. MariaDB data will then be encrypted and decrypted using the AES key. It supports multiple encryption keys. It supports key rotation."
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/aws-key-management-encryption-plugin" },
                { "label": "AWS KMS", "url": "https://aws.amazon.com/kms/" },
                { "label": "Key Management in MariaDB", "url": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/encryption-key-management" }
            ]
        }
    },
    {
        "id": "blackhole",
		"visible": true,
        "name": "Blackhole",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "The BLACKHOLE storage engine discards all data written to it but records operations in the binary log, useful for replication filtering and testing.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/blackhole",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Blackhole",
                    "content": [
                        "The BLACKHOLE storage engine accepts data but does not store it and always returns an empty result.",
                        "A table using the BLACKHOLE storage engine consists of a single .frm table format file, but no associated data or index files.",
                        "This storage engine can be useful, for example, if you want to run complex filtering rules on a slave without incurring any overhead on a master. The master can run a BLACKHOLE storage engine, with the data replicated to the slave for processing."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/server-usage/storage-engines/blackhole" }
            ]
        }
    },
    {
        "id": "connect",
		"visible": true,
        "name": "CONNECT",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "The CONNECT storage engine enables MariaDB to access external local or remote data (MED).",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/connect/introduction-to-the-connect-engine",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About CONNECT",
                    "content": [
                        "The CONNECT storage engine enables MariaDB to access external local or remote data (MED). This is done by defining tables based on different data types, in particular files in various formats, data extracted from other DBMS or products (such as Excel or MongoDB) via ODBC or JDBC, or data retrieved from the environment (for example DIR, WMI, and MAC tables)",
                        "This storage engine supports table partitioning, MariaDB virtual columns and permits defining_special_ columns such as ROWID, FILEID, and SERVID."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/server-usage/storage-engines/connect/introduction-to-the-connect-engine" }
            ]
        }
    },
    {
        "id": "file-key-mngt-enc",
		"visible": true,
        "name": "File Key Management",
        "logo": "/assets/logo_plugin_encryption.svg",
        "description": "This plugin reads encryption keys from a plain-text (or encrypted) file, serving as a simple solution or reference implementation for data-at-rest encryption",
        "website": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/file-key-management-encryption-plugin",
        "type": "Encryption",
        "maturity": "Gamma",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About File Key Management",
                    "content": [
                        "MariaDB's data-at-rest encryption requires the use of a key management and encryption plugin. These plugins are responsible both for the management of encryption keys and for the actual encryption and decryption of data.",
                        "MariaDB supports the use of multiple encryption keys. Each encryption key uses a 32-bit integer as a key identifier. If the specific plugin supports key rotation, then encryption keys can also be rotated, which creates a new version of the encryption key.",
                        "The File Key Management plugin that ships with MariaDB is a key management and encryption plugin that reads encryption keys from a plaintext file."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/file-key-management-encryption-plugin" }
            ]
        }
    },
    {
        "id": "pam",
		"visible": true,
        "name": "PAM",
        "logo": "/assets/logo_plugin_authentication.svg",
        "description": "This authentication plugin delegates password validation to the OS PAM framework, enabling integration with LDAP, Kerberos, and other services.",
        "website": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam",
        "type": "Authentication",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About PAM",
                    "content": [
                        "The pam authentication plugin allows MariaDB to offload user authentication to the system's Pluggable Authentication Module (PAM) framework. PAM is an authentication framework used by Linux, FreeBSD, Solaris, and other Unix-like operating systems.",
                        "Windows does not support PAM, so the pam authentication plugin does not support Windows. However, one can use a MariaDB client on Windows to connect to MariaDB server that is installed on a Unix-like operating system and that is configured to use the pam authentication plugin."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam" }
            ]
        }
    },
    {
        "id": "userstat",
		"visible": true,
        "name": "User Statistics",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "The userstat plugin creates multiple tables allowing the user to better understand the server activity and load.",
        "website": "https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/query-optimizations/statistics-for-optimizing-queries/user-statistics",
        "type": "Information Schema",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About User Statistics",
                    "content": [
                        "The User Statistics (userstat) plugin creates the USER_STATISTICS, CLIENT_STATISTICS, the INDEX_STATISTICS, and the TABLE_STATISTICS tables in the INFORMATION_SCHEMA database. As an alternative to these tables, the plugin also adds the SHOW USER_STATISTICS, the SHOW CLIENT_STATISTICS, the SHOW INDEX_STATISTICS, and the SHOW TABLE_STATISTICS statements.",
                        "These tables and commands can be used to understand the server activity better and to identify the sources of your database's load.",
                        "The plugin also adds the FLUSH USER_STATISTICS, FLUSH CLIENT_STATISTICS, FLUSH INDEX_STATISTICS, and FLUSH TABLE_STATISTICS statements."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/query-optimizations/statistics-for-optimizing-queries/user-statistics" }
            ]
        }
    },
    {
        "id": "sql-error-log",
		"visible": true,
        "name": "SQL Error Log",
        "logo": "/assets/logo_plugin_audit.svg",
        "description": "The SQL Error Log Plugin allows logging of errors sent to clients to a file, enabling analysis of application-side errors that might otherwise be missed.",
        "website": "https://mariadb.com/docs/server/server-management/server-monitoring-logs/sql-error-log-plugin",
        "type": "Audit",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About SQL Error Log",
                    "content": [
                        "The SQL_ERROR_LOG plugin collects errors sent to clients in a log file defined by sql_error_log_filename, so that they can later be analyzed. The log file can be rotated if sql_error_log_rotate is set.",
                        "Errors are logged as they happen and an error will be logged even if it was handled by a condition handler and was never technically sent to the client.",
                        "Comments are also logged, which can make the log easier to search. But this is only possible if the client does not strip the comments away. For example, the mariadb command-line client only leaves comments when started with the --comments option."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/server-management/server-monitoring-logs/sql-error-log-plugin" }
            ]
        }
    },
    {
        "id": "unix-socket",
		"visible": true,
        "name": "Unix Socket",
        "logo": "/assets/logo_plugin_authentication.svg",
        "description": "The unix_socket authentication plugin allows the user to use operating system credentials when connecting to MariaDB via the local Unix socket file. ",
        "website": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-unix-socket",
        "type": "Authentication",
        "maturity": "Stable",
        "distribution": "installed",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Unix Socket",
                    "content": [
                        "The unix_socket authentication plugin is installed by default, and it is used by the 'root'@'localhost' user account by default. This Unix socket file is defined by the socket system variable.",
                        "The unix_socket authentication plugin works by calling the getsockopt system call with the SO_PEERCRED socket option, which allows it to retrieve the uid of the process that is connected to the socket. It is then able to get the user name associated with that uid. Once it has the user name, it will authenticate the connecting user as the MariaDB account that has the same user name.",
                        "The unix_socket authentication plugin is not suited to multiple Unix users accessing a single MariaDB user account."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-unix-socket" },
                { "label": "Authentication", "url": "https://mariadb.com/docs/server/security/user-account-management/authentication-from-mariadb-10-4" }
            ]
        }
    },
    {
        "id": "parsec",
		"visible": true,
        "name": "PARSEC",
        "logo": "/assets/logo_plugin_authentication.svg",
        "description": "PARSEC is a modern, secure authentication plugin that uses salted passwords and elliptic curve cryptography to prevent replay attacks and secure user credentials.",
        "website": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-parsec",
        "type": "Authentication",
        "maturity": "Gamma",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About PARSEC",
                    "content": [
                        "The PARSEC (Password Authentication using Response Signed with Elliptic Curve) authentication plugin uses salted passwords, key derivation, extensible password storage format, and both server- and client-side scrambles.",
                        "It signs the response with ed25519, but it uses stock unmodified ed25519 as provided by OpenSSL/WolfSSL/GnuTLS."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-parsec" }
            ]
        }
    },
    {
        "id": "caching-sha2-password",
		"visible": true,
        "name": "caching_sha2_password",
        "logo": "/assets/logo_plugin_authentication.svg",
        "description": "To aid migrations, MariaDB provides MySQL compatible caching_sha2_password authentication plugin.",
        "website": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-caching_sha2_password",
        "type": "Authentication",
        "maturity": "Gamma",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About caching_sha2_password",
                    "content": "The caching_sha2_password plugin allows to move users from MySQL to MariaDB without requiring them to change their passwords. It should be only used for migration, otherwise a more secure and convenient PARSEC plugin is recommended."
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-caching_sha2_password" }
            ]
        }
    },
    {
        "id": "handlersocket",
		"visible": true,
        "name": "HandlerSocket",
        "logo": "/assets/logo_plugin_daemon.svg",
        "description": "This plugin enables high-performance NoSQL-like access directly to InnoDB tables, bypassing SQL parsing for fast key-value operations.",
        "website": "https://mariadb.com/docs/server/reference/sql-structure/nosql/handlersocket/handlersocket-installation",
        "type": "Daemon",
        "maturity": "Beta",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About HandlerSocket",
                    "content": "HandlerSocket is a NoSQL plugin for MariaDB and MySQL. It works as a daemon inside the mysqld process, accept tcp connections, and execute requests from clients. HandlerSocket does not support SQL queries. Instead, it supports simple CRUD operations on tables."
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/sql-structure/nosql/handlersocket/handlersocket-installation" },
                { "label": "GitHub", "url": "https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL" }
            ]
        }
    },
    {
        "id": "xmltype",
		"visible": true,
        "name": "XMLTYPE",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "XMLTYPE is a data type introduced in MariaDB 12.3 for storing XML data.",
        "website": "https://mariadb.com/docs/server/reference/data-types/string-data-types/xmltype",
        "type": "Data Type",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About XMLTYPE",
                    "content": "The XMLTYPE data type is designed to provide convenient storage of XML data, ensure compatibility with Oracle databases as well as support future XML validation and processing capabilities."
                },
                {
                    "title": "Characteristics",
                    "content": [
                        "Maximum storage capacity: 4GB (same as LONGBLOB).",
                        "Compatibility: Designed to be compatible with Oracle’s XMLTYPE.",
                        "Validation: XML validation or schema enforcement is not supported.",
                        "Length restriction: Length cannot be specified."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/xmltype" }
            ]
        }
    },
    {
        "id": "inet6",
		"visible": true,
        "name": "INET6",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "IPv6 address data type. Stores IPv6 addresses as 16-byte binary strings, also supporting IPv4 addresses via mapping.",
        "website": "https://mariadb.com/docs/server/reference/data-types/string-data-types/inet6",
        "type": "Data Type",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About INET6",
                    "content": [
                        "The INET6 data type is intended for storage of IPv6 addresses, as well as IPv4 addresses assuming conventional mapping of IPv4 addresses into IPv6 addresses. Both short and long IPv6 notation are permitted, according to RFC-5952."
                    ]
                },
                {
                    "title": "Characteristics",
                    "content": [
                        "Values are stored as a 16-byte fixed length binary string, with most significant byte first.",
                        "Storage engines see INET6 as BINARY(16).",
                        "Clients see INET6 as CHAR(39) and get text representation on retrieval."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/inet6" }
            ]
        }
    },
    {
        "id": "mysql-json",
		"visible": true,
        "name": "MYSQL_JSON",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "The MYSQL_JSON plugin provides a JSON data type alias for compatibility, ensuring that tables created with the MySQL JSON type can be read by MariaDB.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/mysql_json",
        "type": "Data Type",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About MYSQL_JSON",
                    "content": "The JSON type in MySQL stores the JSON object in its own native form, while, in MariaDB, the JSON type is a LONGTEXT. The mysql_json plugin is used to make it easier to upgrade to MariaDB."
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/mysql_json" },
                { "label": "JSON Data Type", "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/json" }
            ]
        }
    },
    {
        "id": "uuid",
		"visible": true,
        "name": "UUID",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "The UUID data type is intended for the storage of 128-bit UUID (Universally Unique Identifier) data. See the UUID function page for more details on UUIDs themselves.",
        "website": "https://mariadb.com/docs/server/reference/data-types/string-data-types/uuid-data-type",
        "type": "Data Type",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About UUID",
                    "content": [
                        "The UUID data type is intended for the storage of 128-bit UUID (Universally Unique Identifier) data. Data retrieved by this data type is in the string representation defined in RFC4122.",
                        "String literals of hexadecimal characters and CHAR/VARCHAR/TEXT can be cast to the UUID data type. Likewise hexadecimal literals, binary-literals, and BINARY/VARBINARY/BLOB types can also be cast to UUID."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/uuid-data-type" },
                { "label": "UUID Function", "url": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/uuid" },
                { "label": "RFC4122", "url": "https://datatracker.ietf.org/doc/html/rfc4122" }
            ]
        }
    },
    {
        "id": "inet4",
		"visible": true,
        "name": "INET4",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "The inet4 plugin provides the INET4 data type, allowing for efficient native storage and manipulation of IPv4 addresses as 4-byte binary strings.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/inet4",
        "type": "Data Type",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About INET4",
                    "content": "This plugin implements the inet4 data type and functions used by this data type, like conversions. It can be used in stored procedures as a variable type and as a data type for table columns. It is built in to MariaDB Server and it cannot be disabled."
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/inet4" },
                { "label": "INET4 Data Type", "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/inet4" }
            ]
        }
    },
    {
        "id": "hashicorp-key-management",
		"visible": true,
        "name": "Hashicorp Key Management",
        "logo": "/assets/logo_plugin_encryption.svg",
        "description": "The Hashicorp Key Management Pugin is used to implement encryption using keys stored in the Hashicorp Vault KMS.",
        "website": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/hashicorp-key-management-plugin",
        "type": "Encryption",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Hashicorp Key Management",
                    "content": "The HashiCorp Key Management plugin supports key versioning provided by the HashiCorp Vault Server. In previous versions, rotating keys required a server restart to clear the internal cache. As of MariaDB 12.3, you can flush the plugin cache manually while the server is running."
                },
                {
                    "title": "Characteristics",
                    "content": [
                        "Authentication is done using the Hashicorp Vault's token authentication method.",
                        "If additional client authentication is required, then the path to the CA authentication bundle file may be passed as a plugin parameter.",
                        "The creation of the keys and their management is carried out using the Hashicorp Vault KMS and their tools.",
                        "The plugin uses libcurl (https) as an interface to the HashiCorp Vault server.",
                        "JSON parsing is performed through the JSON service (through the include/mysql/service_json.h)."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/hashicorp-key-management-plugin" },
                { "label": "Install Vault", "url": "https://developer.hashicorp.com/vault/docs/get-vault" }
            ]
        }
    },
    {
        "id": "inet6-aton",
		"visible": true,
        "name": "INET6_ATON",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Convert an IPv6 address to binary. This function takes an IPv6 (or IPv4) address string and returns it as a VARBINARY(16) string.",
        "website": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/inet6_aton",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About INET6_ATON",
                    "content": "Given an IPv6 or IPv4 network address as a string, returns a binary string that represents the numeric value of the address. No trailing zone ID's or traling network masks are permitted. For IPv4 addresses, or IPv6 addresses with IPv4 address parts, no classful addresses or trailing port numbers are permitted and octal numbers are not supported. Returns NULL if the argument is not understood."
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/inet6_aton" }
            ]
        }
    },
    {
        "id": "inet-aton",
		"visible": true,
        "name": "INET_ATON",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Convert an IPv4 address to an integer. This function takes a dotted-quad IP string (e.g., '1.2.3.4') and returns its numeric representation.",
        "website": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/inet_aton",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About INET_ATON",
                    "content": "Given the dotted-quad representation of an IPv4 network address as a string, returns an integer that represents the numeric value of the address. Addresses may be 4 or 8-byte addresses. Returns NULL if the argument is not understood."
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/inet_aton" }
            ]
        }
    },
    {
        "id": "uuid-v7",
		"visible": true,
        "name": "UUID_v7",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Generate a time-ordered UUID (v7). This function returns a version 7 UUID, which is sortable by creation time.",
        "website": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/uuid_v7",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About UUID_v7",
                    "content": [
                        "Returns a Universally Unique Identifier (UUID) version 7. To generate a version 1 UUID, see the UUID function. To generate a version 4 UUID, see UUID_v4.",
                        "A UUID is designed as a number that is globally unique in space and time. Two calls to UUID() are expected to generate two different values, even if these calls are performed on two separate computers that are not connected to each other.",
                        "A UUID is a 128-bit number represented by a utf8 string of five hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/uuid_v7" },
                { "label": "UUID Data Type", "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/uuid-data-type" }
            ]
        }
    },
    {
        "id": "query-cache-info",
		"visible": true,
        "name": "Query Cache Information",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "This plugin exposes the contents of the query cache via the QUERY_CACHE_INFO table in the Information Schema, aiding in performance analysis.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/query-cache-information-plugin",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Query Cache Information",
                    "content": "The QUERY_CACHE_INFO plugin creates the QUERY_CACHE_INFO table in the INFORMATION_SCHEMA database. This table shows all queries in the query cache. Querying this table acquires the query cache lock and will result in lock waits for queries that are using or expiring from the query cache. You must have the PROCESS privilege to query this table."
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/query-cache-information-plugin" },
                { "label": "Query Cache", "url": "https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/buffers-caches-and-threads/query-cache" }
            ]
        }
    },
    {
        "id": "user-variables",
		"visible": true,
        "name": "User Variables",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "The User Variables plugin adds the USER_VARIABLES table to the Information Schema, allowing users to inspect defined user variables and their values.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/user-variables-plugin",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About User Variables",
                    "content": [
                        "The user_variables plugin creates the USER_VARIABLES table in the INFORMATION_SCHEMA database. This table contains information about user-defined variables.",
                        "User-defined variables can be viewed by either querying the USER_VARIABLES, or by running SHOW USER_VARIABLES.",
                        "User-defined variables are reset and the Information Schema table emptied with the FLUSH USER_VARIABLES statement."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/user-variables-plugin" }
            ]
        }
    },
    {
        "id": "query-response-time",
		"visible": true,
        "name": "Query Response Time",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "The Query Response Time plugin collects and displays the distribution of query execution times, helping to identify performance bottlenecks.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/query-response-time-plugin",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Query Response Time",
                    "content": [
                        "The query_response_time plugin creates the QUERY_RESPONSE_TIME table in the INFORMATION_SCHEMA database. The plugin also adds the SHOW QUERY_RESPONSE_TIME and FLUSH QUERY_RESPONSE_TIME statements.",
                        "The slow query log provides exact information about queries that take a long time to execute. However, sometimes there are a large number of queries that each take a very short amount of time to execute. This feature provides a tool for analyzing that information by counting and displaying the number of queries according to the length of time they took to execute."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/query-response-time-plugin" },
                { "label": "Slow Query Log", "url": "https://mariadb.com/docs/server/server-management/server-monitoring-logs/slow-query-log/slow-query-log-overview" }
            ]
        }
    },
    {
        "id": "disks",
		"visible": true,
        "name": "Disks",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "The Disks plugin adds the DISKS table to the Information Schema, providing metadata about the system's disk storage and usage.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/disks-plugin",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Disks",
                    "content": [
                        "The DISKS plugin creates the DISKS table in the INFORMATION_SCHEMA database. This table shows metadata about disks on the system, enabling monitoring of the disk space status. Accessing the INFORMATION_SCHEMA.DISKS table requires the FILE privilege.",
                        "As an alternative option, the plugin includes the INFORMATION_SCHEMA.MOUNTS table, which contains mount points and their respective disks."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/disks-plugin" }
            ]
        }
    },
    {
        "id": "myrocks-for-mariadb",
		"visible": true,
        "name": "MyRocks for MariaDB",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "MyRocks is a storage engine based on RocksDB, optimized for high-write workloads and flash storage, offering superior compression and reduced write amplification.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/myrocks/about-myrocks-for-mariadb",
        "type": "Storage Engine",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About MyRocks for MariaDB",
                    "content": [
                        "MyRocks is an open source storage engine that was originally developed by Facebook.",
                        "MyRocks has been extended by the MariaDB engineering team to be a pluggable storage engine that you use in your MariaDB solutions. It works seamlessly with MariaDB features. This openness in the storage layer allows you to use the right storage engine to optimize your usage requirements, which provides optimum performance. Community contributions are one of MariaDB’s greatest advantages over other databases. Under the lead of our developer Sergey Petrunia, MyRocks in MariaDB is occasionally being merged with upstream MyRocks from Facebook.",
                        "MyRocks, typically, gives greater performance for web scale type applications. It can be an ideal storage engine solution when you have workloads that require greater compression and IO efficiency. It uses a Log Structured Merge (LSM) architecture, which has advantages over B-Tree algorithms, to provide efficient data ingestion, like read-free replication slaves, or fast bulk data loading."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/server-usage/storage-engines/myrocks/about-myrocks-for-mariadb" },
                { "label": "MyRocks", "url": "https://myrocks.io/" }
            ]
        }
    },
    {
        "id": "innodb",
		"visible": true,
        "name": "InnoDB",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "The default storage engine for MariaDB.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/innodb",
        "type": "Storage Engine",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About InnoDB",
                    "content": "InnoDB is a general purpose transactional storage engine that is performant, ACID-compliant, and well-suited for most workloads."
                },
                {
                    "title": "InnoDB Features",
                    "content": [
                        "Is available with all versions of MariaDB Enterprise Server and MariaDB Community Server.",
                        "Is a general purpose storage engine.",
                        "Is transactional and well-suited for online transactional processing (OLTP) workloads.",
                        "Is ACID-compliant.",
                        "Performs well for mixed read-write workloads.",
                        "Supports online DDL."
                    ]
                }
            ],
            "links": [
                { "label": "Documentation", "url": "https://mariadb.com/docs/server/server-usage/storage-engines/innodb" }
            ]
        }
    },
    {
        "id": "videx",
		"visible": true,
        "name": "VIDEX",
        "logo": "/assets/logo_videx.jpeg",
        "description": "The VIDEX storage engine is an aggregated, extensible engine suitable for what-if analyses in MariaDB. The name is derived from [VI]rtual in[DEX].",
        "website": "https://github.com/bytedance/videx",
        "type": "Storage Engine",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
		"contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About VIDEX",
                    "content": [
                        "VIDEX is a virtual/hypothetical index engine for what-if analysis.",
                        "Goal: Evaluate how potential indexes (and optimizer decisions such as join orders) would change query plans without creating real indexes on production data.",
                        "How it works: VIDEX replays optimizer / handler calls using statistics (cardinality, NDV, histograms, etc.) instead of reading table data. Complex statistics computation is offloaded to an external service (VIDEX-Server) via HTTP.",
                        "In practice, you keep your existing MariaDB schema and data as the target, and create a second schema whose tables use ENGINE=VIDEX. You then run EXPLAIN on both schemas and compare plans.",
                        "VIDEX is developed by the ByteBrain Team at ByteDance and serves as a practical, extensible platform for database what-if analysis, index evaluation, and optimizer research. It has been deployed in ByteDance production environments for large-scale slow SQL optimization, processing millions of slow SQL queries daily."
                    ]
                }
            ],
            "links": [
                { "label": "VLDB Demo paper", "url": "https://www.vldb.org/pvldb/vol18/p5231-zhang.pdf" },
                { "label": "GitHub", "url": "https://github.com/bytedance/videx" },
                { "label": "MariaDB Documentation", "url": "https://mariadb.com/docs/server/server-usage/storage-engines/videx-storage-engine" }
            ]
        }
    },
    {
        "id": "rest2sql-plugin",
		"visible": true,
        "name": "REST2SQL-plugin",
        "logo": "/assets/logo_arbaudie.png",
        "description": "A MariaDB daemon plugin under active development that exposes a REST API for querying databases via HTTP GET requests.",
        "website": "https://github.com/MariaDBJones/REST2SQL-plugin",
        "type": "Daemon",
        "maturity": "Pre-alpha",
        "distribution": "external",
        "tags": [],
        "sponsor": "silver",
        "details": {
            "sections": [
                {
                    "title": "About REST2SQL-plugin",
                    "content": [
                        "REST2SQL-plugin is a pre-alpha MariaDB daemon plugin that embeds a lightweight HTTP server directly inside the MariaDB process using libmicrohttpd. Currently supporting read operations via GET to SELECT mapping, the plugin is under active development with POST, PATCH, DELETE, and authentication planned for upcoming releases.",
                        "By running inside the database rather than as an external proxy or middleware layer, it eliminates intermediate network hops and leverages existing database resources directly. The plugin is designed for single-database deployments where simplicity and tight database integration are priorities over a full API gateway."
                    ]
                },
                {
                    "title": "MariaDB Support",
                    "content": "REST2SQL-plugin is a native MariaDB plugin written in C, compiled against the MariaDB plugin API and deployed directly into the server. It is developed by Sylvain Arbaudie of ArBauDie.IT."
                }
            ],
            "links": [
                { "label": "Development Status", "url": "https://github.com/MariaDBJones/REST2SQL-plugin/blob/main/doc/TODO.md" },
                { "label": "Compilation", "url": "https://github.com/MariaDBJones/REST2SQL-plugin/blob/main/doc/compilation.md" },
                { "label": "ArBauDie.IT", "url": "https://arbaudie.it/" }
            ]
        }
    }
]