Jump to content
php.lv forumi

flat-file bāzes opitimzēšana


voodoolv

Recommended Posts

Ideja sekojoša:

 

Ir 1 fails ar šādu struktūru:

<?

$info['viens']="kautkas";

$info['zhirafe']="tastas";

$info['maarutki']="esuntu";

?>

failā ir ap 5000 ierakstu.

 

Ir otrs fails:

<?

include('pirmaisfails.php');

 

$viens = 'viens';

if ($info[$viens]<>''){echo $viens;} else {echo'nekas';}; //shis ir tikai piemeers, ar ierakstiem tiek veiktas citas, liidziigas darbiibas

?>

Uz mana lokālā servera viss notiek ātri un bez gļukiem, BET

Vai šādā veidā netiek noslogots serveris/klients? Ja jā, tad kādā veidā atrisināt šo problēmu?

Mysql un citas datubāzes nav pieejamas...

Link to comment
Share on other sites

klients nē, serveris jā...

 

Kā uzlabot? Figziņ.. jāskatās cik bieži tu to masīvu izmanto...

 

Es bi piedāvātu sadalīt to failu, piemēram veidot failus pēc pirmā chara...

a.php
<?php
$info['abcd'] = 'aaa';
$info['addd'] = 'caca';
?>

b.php
<?php
$info['bbcd'] = 'bbb';
$info['bddd'] = 'baba';
?>

function label($name)
{
$infoG = & $GLOBALS['infoG'];
$fileName = 'labels/'.substr($name,0,1) . '.php'; 
 if (!in_array($fileName,included_file()))
 {
	@ include_once($fileName);
   $infoG = array_merge($infoG,$info);
 }
return (empty($infoG[$name])) ? '@'.$name : $infoG[$name];
}

 

Ja leibli tiek izmantoti maz, tad lādēs pa pačkām...

Link to comment
Share on other sites

Tencinu.

Attiecīgi ja to visu masīvu veidotu iekš mysql datubāzes? Vai ir kāda ātrdarbības atšķirība vai tiek izmantota 5000 mysql datubāze vai 5000 ierakstu fails? Pieņemot, ka dati netiek dalīti alfabētiski un kā citādi...

Link to comment
Share on other sites

Flat teksta failā meklēšana notiks O(n) laikā (fails ta viss jāielasa pēc kārtas). Turpretī MySQL datubāzē pie pareiziem indeksiem meklēšanas sarežģītība būs logaritmiska O(log n). Ceru, ka zini atšķirību starp lineāru funkciju un logaritmisku funkciju.

Link to comment
Share on other sites

Delfins: IMHO dalīšana alfabētiskos failos nekādu labāku rezultātu nenesīs, jo pie katra pieprasījuma tiek izmantoti vairāki šīs bāzes pieprasījumi, t.i. tiek izmantoti gandrīz visas (ir iespēja arī ka visas) db daļas...

Bubu: Failu un mysql teorētiskā ideoloģija man ir skaidra.

 

Kā Jūs ieteiktu šo atrisināt? Nav man īsti skaidrs vai 5000 ieraksti ir daudz vai nav daudz. Vai tas noslogo serveri vai nē..

Šādas db ideja ir sekojoša:

Datubāzē atrodas vairāku vārdu skaidrojumi. Tā tiek izmantota ģenerējot šo vārdu sarakstu (līdz 50 pie katra pieprasījuma). Katram vārdam vai nu ir/nav skaidrojums. Ja tas tiek atrasts datubāzē, vārdam tiek pievienots tā skaidrojums...

Piem. datubāzē ir ieraksts laacis->bruuns. Pieprasījumā ir vārds laacis. Jāizvada laacis bruuns.

 

Līdz šim atrisināju to veidā kā minēts 1. postā. Lokāli man aizķeru nav un viss darbojas tip top. Nav pārliecības kā tas varētu darboties uz servera un pie liela pieprasījumu skaita. Der arī mysql iejaukšanās...

 

Any ideas?

Link to comment
Share on other sites

Ideja sekojoša:

 

Ir 1 fails ar šādu struktūru:

 

failā ir ap 5000 ierakstu.

 

Ir otrs fails:

 

Uz mana lokālā servera viss notiek ātri un bez gļukiem, BET

Vai šādā veidā netiek noslogots serveris/klients? Ja jā, tad kādā veidā atrisināt šo problēmu?

Mysql un citas datubāzes nav pieejamas...

 

SQLite?

Link to comment
Share on other sites

×
×
  • Create New...