MySQL v Dockeru

Chcete si vyzkoušel MySQL, ale nechcete ji instalovat do počítače. Použijte docker. Zde je příklad pro použití docker-compose.

docker-compose.yml

version: "3"

services:
  mysql:
    image: mysql:latest
    container_name: mysql
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - 3306:3306
    
volumes:
  db_data:

Následně stačí zadat příkaz docker-compose up.

Číst dálMySQL v Dockeru

MongoDB shell

Shell pro MongoDB se nazývá mongosh. Dříve se používala shell mongo, která byla odstraněna ve verzi MongoDB 6.0. Pokud se pokusíte zavolat mongo a dostanete chybu bash: mongo: command not found, mongo shell již na vašem systému není k dispozici. Pokud máte běžíci docker kontejner mongo, dovnitř kontejneru se dostanete pomocí docker exec -it mongo bash. K databázi se pak připojíte příkazem mongosh -u username -p password. Zobrazí se vám verze mongosh i mongo databáze.

Using MongoDB:		6.0.2
Using Mongosh:		1.6.0

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

Shell můžete ukončit několika způsoby:
Napište .exit, exit, nebo exit().
Napište quit nebo quit().
Stiskněte Ctrl + D.
Stiskněte dvakrát Ctrl + C.

Mongo quickstart

Mongo databáze ukládá záznamy jako dokumenty (documents), což je obdoba záznamů (řádků) v klasické SQL databázi. Dokumenty jsou v tak zvaných kolekcích (collections), což je obdoba tabulek v klasické SQL databázi. Databáze tedy obsahuje jednu nebo více kolekcí, které obsahují dokumenty. Sloupec (column) v SQL databázi zhruba odpovídá poli (field) v Mongu. Velmi hezky zpracované porovnání příkazů a názvosloví mezi Mongem a SQL je zde.

Číst dálMongo quickstart

Informace o dotazech v PostgreSQL

Modul pg_stat_statements umožňuje sledovat statistiku vykonávání SQL příkazů. K získání těchto dat poskytuje databázové view (pohled) pg_stat_statements.

Query vrací dané sql, calls počet volání daného sql a mean_time průměrnou dobu vykonání sql. Další zajímavé sloupce jsou max_time a mean_time a další.

select query, calls, mean_time from pg_stat_statements where mean_time > 1 order by calls desc;
+---------------------------------------------------------------------------------------------------+-------+------------------+
|query                                                                                              |calls  |mean_time         |
+---------------------------------------------------------------------------------------------------+-------+------------------+
|select subscripti0_.id as id1_13_, subscripti0_.created_at as created_2_13_, subscripti0_.updated_a|1683638|1.6858550426386856|
|select userfilter0_.id as id1_15_0_, filterdiff2_.id as id1_3_1_, filterkitc4_.id as id1_6_2_, filt|46466  |7.517142569714144 |
+---------------------------------------------------------------------------------------------------+-------+------------------+

Zdroj: postgresql.org/docs/current/pgstatstatements.html

Zobrazení data v PostgreSQL v určité časové zóně

K zobrazení času v určité časové zóně se v PostegreSQL používá at time zone + zóna.

select created_at at time zone 'CEST' as cest, created_at at time zone 'GMT' as gmt, created_at at time zone 'EST' as est from table_name;

+--------------------------+--------------------------+--------------------------+
|cest                      |gmt                       |est                       |
+--------------------------+--------------------------+--------------------------+
|2021-05-06 13:13:44.360009|2021-05-06 11:13:44.360009|2021-05-06 06:13:44.360009|
|2021-05-06 13:13:43.676227|2021-05-06 11:13:43.676227|2021-05-06 06:13:43.676227|
|2021-05-06 13:13:43.578580|2021-05-06 11:13:43.578580|2021-05-06 06:13:43.578580|
+--------------------------+--------------------------+--------------------------+

Zdroj: popsql.com/learn-sql/postgresql/how-to-convert-utc-to-local-time-zone-in-postgresql

Vytvoření uživatele v PostgreSQL

Po instalaci PostgreSQL se do databáze přihlásíte pod uživatelem postgres.

sudo su - postgres
psql -U postgres

Vytvoříte nového uživatele.

create user username password 'password' createdb;

To že byl uživatel vytvořen a jaké má role si v psql zobrazíte příkazem \du.

                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 username  | Create DB                                                  | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

Pro přihlášení do databáze je ještě potřeba, aby uživatel s daným jménem existoval i v systému.

Peer authentication funguje dle dokumentace následovně. Z operačního systému se získá uživatelské jméno a to se považuje za povoleného databázové uživatele. V operačním systému musí existovat uživatel stejného jména jako v databázi a musíme být pod daným uživatelem přihlášeni.
www.vitfo.cz/2018/09/15/prvni-prihlaseni-do-postgresql-v-ubuntu/

K tomu slouží příkaz adduser.

sudo adduser username

Zakázání přihlášení pod daným uživatelem.

sudo passwd -l username

Přihlášení pod novým uživatelem do databáze postgres.

psql -U username-d postgres

Redisson master slave config

Konfigurace master slave Redis klienta (Redisson) s konfigurací pro docker-compose.

redisson.json

{
  "masterSlaveServersConfig": {
    "idleConnectionTimeout": 10000,
    "connectTimeout": 10000,
    "timeout": 3000,
    "retryAttempts": 3,
    "retryInterval": 1500,
    "failedSlaveReconnectionInterval": 3000,
    "failedSlaveCheckInterval": 60000,
    "password": null,
    "subscriptionsPerConnection": 5,
    "clientName": null,
    "subscriptionConnectionMinimumIdleSize": 1,
    "subscriptionConnectionPoolSize": 50,
    "slaveConnectionMinimumIdleSize": 24,
    "slaveConnectionPoolSize": 64,
    "masterConnectionMinimumIdleSize": 24,
    "masterConnectionPoolSize": 64,
    "readMode": "SLAVE",
    "subscriptionMode": "SLAVE",
    "slaveAddresses": [
      "redis://127.0.0.1:32781",
      "redis://127.0.0.1:32782",
      "redis://127.0.0.1:32783"
    ],
    "masterAddress": "redis://127.0.0.1:32780",
    "database": 0
  },
  "threads": 16,
  "nettyThreads": 32,
  "transportMode": "NIO"
}

docker-compose.yml

version: '2'services:
  redis-master:
    image: 'bitnami/redis:latest'
    ports:
      - '6379'
    environment:
      - REDIS_REPLICATION_MODE=master
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - '/home/vitfo/Redis/volume'  redis-replica:
    image: 'bitnami/redis:latest'
    ports:
      - '6379'
    depends_on:
      - redis-master
    environment:
      - REDIS_REPLICATION_MODE=slave
      - REDIS_MASTER_HOST=redis-master
      - REDIS_MASTER_PORT_NUMBER=6379
      - ALLOW_EMPTY_PASSWORD=yes

docker-compose up –scale redis-master=1 –scale redis-replica=3 vytvoří:

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                     NAMES
dbb2a6f2bdae        bitnami/redis:latest   "/opt/bitnami/script…"   13 seconds ago      Up 11 seconds       0.0.0.0:32781->6379/tcp   redis_redis-replica_3
44adb500c854        bitnami/redis:latest   "/opt/bitnami/script…"   13 seconds ago      Up 10 seconds       0.0.0.0:32782->6379/tcp   redis_redis-replica_2
72e8bdc566b0        bitnami/redis:latest   "/opt/bitnami/script…"   13 seconds ago      Up 9 seconds        0.0.0.0:32783->6379/tcp   redis_redis-replica_1
c4b64430a2ca        bitnami/redis:latest   "/opt/bitnami/script…"   14 seconds ago      Up 12 seconds       0.0.0.0:32780->6379/tcp   redis_redis-master_1

Zdroje: