- SQL-like databáze implementovaná v C
- podporuje:
- CREATE TABLE
- SELECT
- INSERT
- UPDATE
- DELETE
- výstup v JSON formátu, jelikož se s ním dále nejlépe pracuje
- nestabilní a z části nefunkční
- Vytvořit složku v kořenovém adresáři
- dbs - pro databáze
- test - pro testovací scénáře
- Založit databázi
- toto jde zatím jen manuálně, tudíž je potřeba založit složku v
/dbs
OPTIONALpřiřadit víc paměti, pokud nepracuje správně
- projekt se skládá ze čtyř hlavních částí
- SQL parser
- Commands
- DBAccessor
- DBCreator
- hlavní účel je naparsovat query ve formátu stringu do
CompiledQuerystruktury, která se dále předává do commands - dost často se parsuje na základě mezer, tudíž syntaxe query je hodně strict, ale zárověn pořád podobná SQL
- reprezentováno soubory končícími na QueryParser
- bližší popis:
- queryParser.c
- vezme query string a pomocí mezer ho rozdělí do QueryParts array, která se dále předává do specifičtějších parserů
- části převede na malá písmena
- vezme první část
KEYWORDa podle té se rozdělí do parseru - naalokuje potřebné části(pozn. aplikace se snaží alokování dělat na jednom místě a celkově alokovat co nejmíň, jelikož s tím byly "problémy")
- pokud keyword nepozná, nic neprovede
- createQueryParser.c
- naparsuje
CREATE TABLEquery, které má zaúkol vytvořit novou tabulku - syntax:
CREATE TABLE ( <nazev> <typ>, <nazev> <typ>, <nazev> <typ> )- nazev sloupce: libovolny, bez mezer
- typ: VARCHAR nebo INT
- naparsuje
- selectQueryParser.c
- naparsuje
SELECTquery, které vybere data z tabulky - syntax:
SELECT <nazev_sloupce>,<nazev_sloupce>,<nazev_sloupce>,... FROM <nazev_tabulky>
- naparsuje
- insertQueryParser.c
- naparsuje
INSERTquery, které vloží nový řádek do tabulky - syntax:
INSERT INTO <nazev_tabulky> VALUES (<hodnota>,<hodnota>,<hodnota>)INSERT INTO <nazev_tabulky> (<nazev_sloupce>,<nazev_sloupce>) VALUES (<hodnota>,<hodnota>)- hodnoty a nazvy mohou byt ohraniceny uvozovkami
- naparsuje
- updateQueryParser.c
- naparsuje
UPDATEquery, které mění hodnoty řádku - syntax:
UPDATE <nazev_tabulky> SET <nazev_sloupce>=<nova_hodnota>
- naparsuje
- deleteQueryParser.c
- naparsuje
DELETEquery, které smaže řádek - syntax:
DELETE FROM <nazev_tabulky>
- naparsuje
- queryParser.c
- každý command má svůj soubor skládající se z:
- funkce pro vykonání commandu na jednom řádku
- funkce
executeCommandkterá mu dává správné fungování a volá ho v kontextu celé tabulky
- obstarává přístupy k jednotlivým souborům
- spravuje cesty k souborům
- připojuje se k jednotlivým databázím
- vytváří soubory a tabulky
- pracuje nad Accessor vrstvou
- JSON
- Select vrací JSON formát, jelikož je to dnes nejpoužívatelnejší, jeden z nejjednodušších a nejlépe dále zpracovatelných formátů
- Testy
- testy byly psány pro potřebu vývoje
- většinou fungují(oproti aplikaci samotné)
- binární zápis
- šetří místo
- kdo kdy viděl databázi, která to ukládá do texťáku
- logger
- lépe zpracovává hlášky pro uživatele, které ale nejsou output
- v budoucnu by měl zapisovat do souboru