Databáze > MySQL

TMySQLDatabase

<< < (5/5)

Vladimir64:
k odpovědi výše... persistentní data na stanicích nepotřebuji. Jak jsem psal výše, mohl bych data stáhnout ze serveru a dál pracovat s nimi. Momentálně ale hledám cestu jak pracovat s db. Jinak budu muset přeprogramovat celé výpočty. Chci zprovoznit několik pocket PC (micro, mini nebo jak se těm asijským krabičkám říká). Jsou pro výpočty pomalejší, ale může jich běžet najednou hodně. Mně v podstatě nevadí, že výpočet trvá třeba dva týdny, ale potřebuji jich mít spuštěných najednou více. Jeden zkušební Pocket PC W5 Pro už běží a počítá. Každých 24 hodin uloží mezivýsledky (pro jistotu) a po ukončení výpočtu uloží výsledky.

pf1957:

--- Citace: Vladimir64  16-03-2021, 20:39:12 ---hledám cestu jak pracovat s db.

--- Konce citace ---
Ja vidim potiz v tom, ze neni DB jako DB...

Takze jestlli to mas napsane proti MySQL, tak bud z hrusky dolu co se rychlosti tyce nebo nezbyde pouzit lokalni instalaci MySQL a nejak replikovat data mezi serverem. Ale zalezi, jak mas SQL prenesitelny na jiny RDBMS -> pak by se mozna na stanicich dalo uvazovat o nejake embedded DB, ktera se v podstate neinstaluje, jen se prida k aplikaci .DLL, jako je Firebird.

Samotne FireDAC v Delphi nabizi jakesi siditko v podobe TFDLocalSQL a sadou TFDMemTables, ale nikdy jsem to nepouzil, takze moznosti neznam.

Treba SQLite se zadanim :MEMORY: misto jmena DB souboru da spustit jako in-memory DB. My ji kdysi v jednom projektu pouzili prave na klientech proti MySQL serveru, ale SQLite je pro radu programatoru "divna" databaze, protoze puvodne mela jen PK jako int a vsechna ostatni pole jako ASCIIZ, ale postupem casu to zacali pod tlakem DB verejnosti ohybat smerem k beznym RDBMS, takze se mi prestala libit. A uz jsem v ni hafo let taky nic nedelal, takze jeji skutecny stav neznam.

S temi ostastnim in-memory DB bude v Delphi nejspis problem, ale uvidis.

Vladimir64:
step by step. Nejdříve zkusím před spuštěním výpočtu aktualizovat data ze serveru na klienta s nainstalovanou Mysql a dále výpočet poběží už jen lokálně. Tohle by mohlo fungovat a asi to nedá moc práce. Možná bych mohl zkusit spustit víc instancí programu a změřit co to udělá s rychlostí výpočtu. V dalším kroku se musím seznámit s komponentami FireDAC, na první pohled to vypadá, že bych mohl naplnit TFDMemTables a dál pracovat s touto tabulkou pomocí standardních sql příkazů bez instalace Mysql na stanicích. Díky za rady

Vladimir64:
Prozatím považuji problém za vyřešený. Děkuji všem kdo mně navedli správným směrem. Mysql je instalovaná jak na serveru, tak i na stanicích. Data aktualizuji pouze na serveru. Před spuštěním výpočtů na stanicích se aktualizují data ze serveru. Vyžaduje to dva řádky kódu.

Na formulář je potřeba umístit a nastavit správně komponenty:
TMySQLDatabase 2x
TMySQLTable 2x
TDataSource 2x
jednu sadu nastavit na databázi na serveru a druhou na databázi na stanici
Dále komponenty:
TFDBatchMove
TFDBatchMoveDatasetWriter
TFDBatchMoveDatasetReader
nastavit je na zdrojovou a cílovou tabulku.

a ty dva řádky kódu jsou:
DataContainerForm.ResultsTab.EmptyTable;
DataContainerForm.FDBatchMove1.Execute;

  :)


Navigace

[0] Seznam témat

[*] Předchozí strana

Přejít na plnou verzi