fSQL Steven Buberl

fSQL on failipõhine relatsiooniline andmehoiustus / andmebaasisüsteem mis toetab ka syntaxi lugemist. fSQLi syntax on disainitud võimalikult sarnaseks MySQL syntaxiga, et too ei tunduks väga võõras ega võimatu.

Installatsioon

Download: fsql.zip 17.65 kb

GitHub: https://github.com/sbuberl/fSQL / SourceForge: https://sourceforge.net/projects/fsql/ (sekundaarne)

Laadige alla (soovitatavalt viimane versioon GitHubist) fSQl zip fail ja asetage failid fSQL.php, fSQLDatabase.php ning fSQLFunctions.php kõik kõrvuti teile sobivasse asukohta.

Seadistamine

fSQL ei vaja oma tööks sisuliselt mitte midagi peale andmbaasi ning tema asukoha defineerimise ja aktiivseks määramise kuid on soovitatav siiski luua mõned kaustad, et säilitada puhtus ka failistruktuuris.

Teadmiseks edaspidised koodinäited on paralleelselt rakendatud ka antud veebilehel.

Loome juurkausta (failide fSQL.php, fSQLDatabase.php ja fSQLFunctions.php kõrvale) kausta db ning kausta db loome kaks kausta: db001 ja db002.

Hoiatus! Kaustade loomine läbi funktsiooni mkdir ning nede edasine kasutamine fSQLis ei pruugi töödata.

Loome juurkausta index.php ning seame tema sisu järgnevaks:


						include("fSQL.php");
						$fsql = new fSQLEnvironment;

						$fsql->define_db('db001', dirname(__FILE__) . '/db/db001');
						$fsql->define_db('db002', dirname(__FILE__) . '/db/db002');
						$fsql->select_db('db001');
						
						$fsql->query("CREATE TABLE inimesed ( 
						   id INT NOT NULL AUTO_INCREMENT,
						   name VARCHAR(30), 
						   age INT,
						   PRIMARY KEY(id)
						)") or die($fsql->error());
					

Ülaltoodud koodiga, oleme defineerinud 2 olemasolevat andmebaasi (eelnevalt käsitsi loodud kasutadesse) db001 ja db002 ning oleme palunud fSQLil kasutada andmebaasi db001 kuhu lisasime uue tabeli `inimesed`

Syntax

fSQL syntax on disainitud võimalikult lähedale MySQL syntaxiga ning seda nimelt, et uustulijatel fSQL kasutajatel ei oleks raskusi ümberharjumisega.

MySQL syntaxiga saate tutvuda dev.mysql.com kodulehel või laadida chm formaadis käsiraamat mysql-refman-5.5-en.chm (14.25 mb).

Hoiatus! versioon 1.3.1 ei oma täismõõdus tuge üksik-ülakoma-vasakule (backticks) kasutamisele vältige nimedes `nimi` jutumärke.

PHPs $fsql funktsioone kasutades võib abiks olla selline teadmine: kui on olemas funktsioon mysqli_query, siis on olemas ka $fsql->query, kui on mysqli_num_rows on ka $fsql->num_rows. Ühesõnaga funktsioonid kattuvad kui asendate mysqli_ asemele $fsql-> .

Kiirustest

Kasutame ka antud lehel fSQL lahendust ning oleme loonud külastajate loenduri millele on poogitud ka benchmarking. Siin on resultaadid:

  • Loome ühenduse andmebaasiga: 0.0032200813 sek
    $s = microtime(true);
    						# include("fSQL.php");
    						include("fSQL.1.3.1.php");
    
    						$fsql = new fSQLEnvironment;
    						$fsql->define_db('db001', dirname(__FILE__) . '/db/db001');
    						$fsql->select_db('db001');
    
    						$c = number_format(microtime(true) - $s, 10);
    						

  • Loome tabeli juhul kui teda ei eksisteeri: 0.0000901222 sek
    # Table creation check
    						$s = microtime(true);
    						# $fsql->query("DROP TABLE visits");
    						$fsql->query("CREATE TABLE IF NOT EXISTS visits (
    							id INT NOT NULL AUTO_INCREMENT,
    							ip VARCHAR(16),
    							PRIMARY KEY(id)
    						)") or die( $fsql->error() );
    						$t = number_format(microtime(true) - $s, 10);
    						

  • Lisame antud külastuse: 0.0172009468 sek
    # Insert
    						$s = microtime(true);
    						$fsql->query("INSERT INTO visits (id, ip) VALUES (NULL, '{$_SERVER['REMOTE_ADDR']}');") or die( $fsql->error() );
    						$i = number_format(microtime(true) - $s, 10);
    						

  • Loeme mitu sissekannet on tabelis ( select count(id) ) 0.0010280609 sek // resultaat 2290
    # Select
    						$s = microtime(true);
    						$sql = $fsql->query("SELECT COUNT(id) AS num FROM visits") or die( $fsql->error() );
    						$chn = $fsql->fetch_assoc($sql) or die( $fsql->error() );
    						$S = number_format(microtime(true) - $s, 10);
    						

  • Saadame päringu ( select ip ) ning hiljem teeme ( foreach { ! in_array } ) 0.0897748470 sek // resultaat 706
    # Select distinct
    						$s = microtime(true);
    						$sql = $fsql->query("SELECT ip FROM visits") or die( $fsql->error() );
    						$chp = array();
    						while($row = $fsql->fetch_assoc($sql))
    						{
    							if( ! in_array($row['ip'], $chp) )
    							{
    								$chp[] = $row['ip'];
    							}
    						}
    						$SD = number_format(microtime(true) - $s, 10);
    						

Kontakt

Võtke ühendust e-posti teel info@joonaskolostov.ee
kirjutage facebooki kasutajale Joonas Kolostov


2021-01-06 00:45:11