> For the complete documentation index, see [llms.txt](https://ciusji.gitbook.io/guinsoo/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ciusji.gitbook.io/guinsoo/guides/features.md).

# Features

## Main Features

* A very fast database engine
* Open source
* Written in Java
* Supports standard SQL, JDBC API
* Embedded and server mode, clustering support
* Strong security features
* The PostgreSQL ODBC driver can be used
* Multi-version concurrency

## Additional Features&#x20;

* Disk-based or in-memory databases and tables, read-only database support, temporary tables
* Transaction support (read uncommitted, read committed, repeatable read, snapshot), two-phase-commit
* Multiple connections, row-level locking
* Cost-based optimizer, using a genetic algorithm for complex queries, zero-administration
* Scrollable and updatable result set support, large result set, external result sorting, functions can return a result set
* Encrypted database (AES), SHA-256 password encryption, encryption functions, SSL

## SQL Support

* Support for multiple schemas, information schema
* Referential integrity / foreign key constraints with cascade, check constraints
* Inner and out joins, subqueries, read-only views and inline views
* Triggers and Java functions / stored procedures
* Many built-in functions, including XML and lossless data compression
* Wide range of data types including large objects (BLOB/CLOB) and arrays
* Sequences and identity columns, generated columns (can be used for function-based indexes)
* ORDER BY, GROUP BY, HAVING, UNION, OFFSET / FETCH, LIMIT, TOP, DISTINCT / DISTINCT ON (...)
* Window functions
* Collation support, including support for the ICU4j library
* Support for users and roles
* Compatibility modes for IBM DB2, Apache Derby, MS SQL Server, MySQL, Oracle, and PostgreSQL

## Security Features

* Includes a solution for the SQL injection problem
* User password authentication uses SHA-256 and salt
* For server-mode connections, user passwords are never transmitted in plain text over the network
* All database files (including script files that can be used to backup data) can be encrypted using the AES-128 encryption algorithm
* The remote JDBC driver supports TCP-IP connections over TLS
* The built-in web server supports connections over TLS
* Passwords can be sent to the database using char arrays instead of Strings
