Document Store v MySQL

10. června 2021

Od verze MySQL 8.0.11 je ve výchozím stavu součástí instalace X plugin. Tento plugin nám umožňuje pomocí  X DevAPI využívat MySQL mj. jako NoSQL a mnohem více. 

 

Pojďme se tedy podívat na důvody, proč využít NoSQL v MySQL. Asi jako první důvod mě napadá, že při dnešním vývoji aplikací je prostě SQL (vzniklo v roce 1970) poněkud zkostnatělé. Ze své praxe si pamatuji hodiny strávené na poradách vývojářů, kde s probíralo, co se stane, pokud se do nějaké tabulky přidá jeden nový sloupeček a kde všude se bude muset zasáhnout do kódu.

No, ale proč MySQL? Možná proto, že díky tomu, že data využívají InnoDB úložiště, můžeme tedy mluvit o plné kompatibilitě s ACID. Data ukládaná do databáze, přesněji do collections jsou ve formátu JSON.

 

Dost teorie, nakonec všechno je jasně popsané v dokumentaci. Protože každý obor s sebou přináší nové názvosloví, tak tady je jednoduchá tabulka, ať víme co je co:

 

Relační DB (SQL)  Dokument (NoSQL)
connection session
database schema
table collection
insert create
select find
update modify
delete remove

 

Použijeme MySQL Shell a databázi z mého předchozího článku.

Vytvoříme si na základě dat z blokovaných IP adres collection “blacklist” a do něj vložíme JSON data získaná z https://freegeoip.app/

 

 

Tak a teď si předvedeme transakce.

 

 

Pěkné, že?

 

Tak teď se například rozhodneme, že do naší collection přidáme pole ip_range, abysme mohli blokovat celé IP rozsahy, pokud to bude potřeba. V klasickém SQL by to znamenalo přidat sloupec do tabulky, tady se jenom použije db.blackhole.modify().

Vrátíme zpátky záznamy o IP 45.252.248.149 a přidáme výsledky nalezené např. pomocí příkazu whois (pole inetnum).

 

 

Dobrá zpráva na konec: Nejnovější verze konektorů již všechny podporují X DevApi.

https://dev.mysql.com/doc/index-connectors.html

 

Přeji příjemnou zábavu a rychlejší vývoj.
session.close()

Předchozí článek MySQL shell

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *