# MariaDB database

## Telosys database configuration

Below are examples of typical configurations for a **MariaDB** database.

### Since Telosys 4.3

```yaml
  - id: mariadb
    name: MariaDB 'cars' database 
    type: MARIADB 
    # URL jdbc:mariadb://<host>:<port>/<database>?<options>
    url: jdbc:mariadb://myhost:3305/carsdb
    user: john_doe
    password: not_to_reveal
```

### Before Telosys 4.3

```yaml
  - id: mariadb
    name: MariaDB 'cars' database 
    type: MARIADB 
    # JDBC driver 
    driver: org.mariadb.jdbc.Driver
    # URL jdbc:mariadb://<host>:<port>/<database>?<options>
    url: jdbc:mariadb://myhost:3305/carsdb
    user: john_doe
    password: not_to_reveal
    # Metadata parameters
    tableNamePattern: '%'
    tableTypes: TABLE
```

### JDBC driver

* Download:&#x20;
  * Web site:  <https://mariadb.com/downloads/connectors/connectors-data-access/> \
    "Java 8+ Connector"
  * MVN Repository: <https://mvnrepository.com/search?q=mariadb>  \
    "MariaDB Java Client"
* JAR file example:  `mariadb-java-client-3.5.6.jar`
* Driver class name:  **org.mariadb.jdbc.Driver**

## Technical information about MariaDB

### Structure

Server → **Database** (= **Schema**) → Tables/Objects

<div align="left"><figure><img src="https://434201135-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZMZz3NJC5MgGbWIG7J%2Fuploads%2FcOAK0OdGK85G62LYxABy%2Fimage.png?alt=media&#x26;token=743da460-52ed-4541-a607-2eb621712808" alt="" width="242"><figcaption></figcaption></figure></div>

* **Database**: The main organizational unit. \
  In practice, a "**database**" is what most people think of as a "**schema**". \
  When you run `CREATE DATABASE`, it’s like creating a schema.
* **Schema**: Synonymous with database. \
  `CREATE DATABASE foo;`   and  `CREATE SCHEMA foo;`  are the same operation.
* **Cross-database** queries (cross-schema) are allowed within the same server instance (`db1.table1 JOIN db2.table2`)

### Case conversion rules

* **column name**: \
  in MariaDB, column names are **not case-sensitive**, \
  whether the identifiers are in quotes or not.
* **table name** (file system rules matter):\
  \- on **Linux**: may be case-sensitive only if  `lower_case_table_names=0`\
  \- on **Windows**/**macOS**:  case-insensitive.
