Výsledky 1 až 16 z 16

Téma: [delphi] Lokalni SQL "cache"

  1. #1

    Standardní [delphi] Lokalni SQL "cache"

    pracuji na systemu, ktery komunikuje s MSSQL DB. Ted z DB (ruzne tabulky) taha data a nejaka tam uklada. Jak nejlepe resit to, ze vzdaleny SQL server muze byt nekdy nedostupny? Uz me napadlo udelat lokalni instalaci MSSQL express, nastavit repliakci tad. Nicmene SQL express ma omezene moznosti repliakci. Takze druhy napad byl si potrebne tabulky lokalne ukladat do "cache" a v priapde dostupnosti serveru pomoci napr. dalsiho threadu synchronizovat. V podstate se jedna o system, kde je potreba pouze cist z cizi DB par tabulek, kter se mohu menit, ale nemeni se casto a pak posilat vysledky stavu urcitych procesu (vypujcek klicu) do vlastni DB (odtud si je berou dalsi apliakce).
    Co me napadlo jako jednoduche reseni je pripravit si jednoduchy accessovsky mdb soubor a na do nej se pres ADO pripojit a z nej/do nej ukladat potrebna "cache" data. Pokud pominu ADO a ruzne MSSQL servery, tak by jeste byla moznost neco podobneho realizovat napr. v SQL Firebird. To uz ale vyzaduje instalaci toho serveru atd.

    Dat ze ctenych tabulek je nekolik set radku. Repliakce na lokal by mohla probihat napr. po pul hodinach. Celkove se za den zapise cca 100 transakci (vypujcek). Replikace zpet by byla tak po 1-2 min pokud bude MSSQL pristupny. Z DB stavu budou ostatni apliakce jen cist - nebude do nich nikdo jiny zapisovat (zatim). Staci pro to napojeni na MDB databazi nebo mam vymyslet neco vykonejsiho? Nebo existuje neco hotoveho (nebo jiny pristup)?

    Pisu v D7 bez nejakych kupovanych komponent
    Black panther - Intel E8400 (SLB9J), GigaByte EP45-UD3R, A-Data 2x2GB Vitesta, Gainward ATi/AMD Radeon 4870 512MB Gold Sample, Creative Audigy2 ZS, Samsung HD642JJ (AJ26 SMART error) + WD 6400AAKS + Samsung HD 322HJ, NEC 4571A DVD-RW, Enermax PRO82+ 525W, BenQ FP241W 24" 1920x1200, Microsoft Wheel Mouse Optical, Chicony KU-0108 mm keyboard, Microsoft VX-1000 camera, Microsoft Windows Vista Home Premium 64bit
    My gadgets : custom CIR receiver, RDS receiver (for TV card), no-more-screwdriver-mobo-powerup, Atmel 89cx051 LPTprog, N3310 LCD, ...

  2. #2
    Administrátor マツダ mince Avatar uživatele Marty
    Založen
    07.10.2002
    Bydliště
    Praha, Sanctuary
    Věk
    42
    Příspěvky
    8 225
    Vliv
    300

    Standardní Re: [delphi] Lokalni SQL "cache"

    Nejčistší by bylo opravdu použít replikaci na úrovni MS SQL. U Expressu je transakční i merge replikace jen subscriber, takže "pouze pro čtení".

    Pokud toto nestačí nebo nemůžeš použít velkej SQL Server (např. Merge Replication je plně podporovaná ve Workgroup verzi SQL, tj. by to řešil třeba server se SBS, pokud někde v lokalitě je), je to o návrhu aplikace - při spuštění synchronizovat do lokálního souboru (s tím už si pracuj jak chceš) a v něm provádět všechny změny. Při ukončení aplikace nebo dávkově pak synchronizovat zpět.

    Budeš ale muset v kódu ošetřit případné konflikty a hrozí hafo dalších chyb, protože se snažíš obejít něco ne úplně vhodnou cestou...
    CUBE> Ryzen 7 7700X + Arctic Lq Frzr III 64 GB DDR5-6000 ◦ ASUS TUF B650PLUS ◦ ASUS RTX3060 OC 12GB ◦ Kingston KC3000 2TB ◦ SS G12 GM-650 Gold ◦ Samsung S27A800 4K
    WORK> HP EliteBook 845 G9 ◦ Ryzen 5 PRO 6550 ◦ 32 GB DDR3 ◦ 2048 GB nVME SSD ◦ 14.1" 1920x1080 LED + 2x 32" Dell 4K ◦ Win11 Enterprise
    SERVER> HP ProLiant Microserver Gen8 ◦ Intel Core i5-3540T ◦ 16 GB DDR3 ◦ 180 GB SSD + 2x4 TB WD RED + 2x16 TB Toshiba ◦ 10GbE NIC
    PHOTO> Canon EOS 70D ◦ EF 70-200/4L ◦ EF-S 10-18 STM ◦ EF 50/1.8II ◦ EF-S 40/2.8 STM ◦ Yongnuo YN-568EX ◦ Tamrac 5534
    HOMECINEMA> TV Samsung UE55Q55T 55" 4K ◦ DVD Pioneer DV-310K ◦ AVR Yamaha RX-V359 ◦ SPK Dexon Allegro 5.0
    OTHERSTUFF> Mikrotik RB760iGS ◦ Mikrotik CSS610
    ◦ Mikrotik CRS326 ◦ UniFi WLAN ◦ Xerox B235 ◦ Canon PiXMA MG5350

  3. #3

    Standardní Re: [delphi] Lokalni SQL "cache"

    no problem je, ze "velky" sql bych musel kupovat a licencovat. Potrebuji si z centralni DB urcite veci stahovat a posilat na ni vysledky. Nejde o to, ze by se to muselo provadet jen pri startu/ukonceni aplikace, ale musi to behat neustale pri jeji praci. V podstate data z centralni DB potrebuji cist tak rekneme 1x za pul hodiny. Jedna se o seznamy lidi a seznam pravidel. Podle tech pravidel se pak ta aplikace ridi a vysledky posila zpet. Tj. posilani tech vysledku by melo byt co nejcastejsi. Rekneme tak kazdych 30sekund a v pripade neuspechu zvysovat cas (samozrejme by se zaclo s delsim casem, protoze lze ocekavat, ze napr. protistrana je v restartu a bude zpet napr. do 5minut - nicmene protistrana muze byt uplne mrtva i treba na nekolik hodin).

    Proste ta apliakce musi fungovat dostatecne autonomne do doby nez bude mit dostupny centralni SQL.

    (ted to mam tak, ze se apliakce proste pripoji na vzdaleny SQL a pres ADO tam cpe query, ale kdyz protistrana nereaguje, tak to vyhodi vyjimku a prd. Potrebuji tu aplikaci rozsirit o dalsi funkcnosti a to uz by ty vypadky asi neustalo. "vypadky" nejsou nijak kriticke, ale "neco" se stane v tu nejmene vhodnou dobu a system nefunguje...)
    Black panther - Intel E8400 (SLB9J), GigaByte EP45-UD3R, A-Data 2x2GB Vitesta, Gainward ATi/AMD Radeon 4870 512MB Gold Sample, Creative Audigy2 ZS, Samsung HD642JJ (AJ26 SMART error) + WD 6400AAKS + Samsung HD 322HJ, NEC 4571A DVD-RW, Enermax PRO82+ 525W, BenQ FP241W 24" 1920x1200, Microsoft Wheel Mouse Optical, Chicony KU-0108 mm keyboard, Microsoft VX-1000 camera, Microsoft Windows Vista Home Premium 64bit
    My gadgets : custom CIR receiver, RDS receiver (for TV card), no-more-screwdriver-mobo-powerup, Atmel 89cx051 LPTprog, N3310 LCD, ...

  4. #4
    Administrátor マツダ mince Avatar uživatele Marty
    Založen
    07.10.2002
    Bydliště
    Praha, Sanctuary
    Věk
    42
    Příspěvky
    8 225
    Vliv
    300

    Standardní Re: [delphi] Lokalni SQL "cache"

    Tady už po tom chceš dost advanced funkcionalitu - SQLko je navržený tak, že informační systém bys měl mít na "velkém" SQL a v případě potřeby přístupu k datům mimo potom možnost využít Express a replikovat. Ale pouze pro čtení, oboustranná replikace není v Expressu podporovaná. Microsoft si to představuje využít například pro pracovníky v terénu, kteří nahlíží do dat a podobně.

    Mrknu se ještě na jednu věc, která mě trochu zvoní hlavou, ale až v pondělí, mám to v práci.
    CUBE> Ryzen 7 7700X + Arctic Lq Frzr III 64 GB DDR5-6000 ◦ ASUS TUF B650PLUS ◦ ASUS RTX3060 OC 12GB ◦ Kingston KC3000 2TB ◦ SS G12 GM-650 Gold ◦ Samsung S27A800 4K
    WORK> HP EliteBook 845 G9 ◦ Ryzen 5 PRO 6550 ◦ 32 GB DDR3 ◦ 2048 GB nVME SSD ◦ 14.1" 1920x1080 LED + 2x 32" Dell 4K ◦ Win11 Enterprise
    SERVER> HP ProLiant Microserver Gen8 ◦ Intel Core i5-3540T ◦ 16 GB DDR3 ◦ 180 GB SSD + 2x4 TB WD RED + 2x16 TB Toshiba ◦ 10GbE NIC
    PHOTO> Canon EOS 70D ◦ EF 70-200/4L ◦ EF-S 10-18 STM ◦ EF 50/1.8II ◦ EF-S 40/2.8 STM ◦ Yongnuo YN-568EX ◦ Tamrac 5534
    HOMECINEMA> TV Samsung UE55Q55T 55" 4K ◦ DVD Pioneer DV-310K ◦ AVR Yamaha RX-V359 ◦ SPK Dexon Allegro 5.0
    OTHERSTUFF> Mikrotik RB760iGS ◦ Mikrotik CSS610
    ◦ Mikrotik CRS326 ◦ UniFi WLAN ◦ Xerox B235 ◦ Canon PiXMA MG5350

  5. #5

    Standardní Re: [delphi] Lokalni SQL "cache"

    nj, ja jsem se na ty express edice prave uz dival. Ja stavim aplikaci, ktera dodava data do informacniho systemu (ze ktereho se pak delaji prehledy atd.), ale pritom se muze stat, ze najednou spojeni nema. Uz jsem neco takoveho jednou delal - ale to bylo daleko jednodussi, protoze slo jen o jednu tabulku. tj. po urcite dobe se z SQL serveru stahnou data a pokud je to ok, tak se pouzivaji. Ten program je vyuzival tahle data jako look-up tabulku pro data ze ctecky a vysledek posila jinemu programu Tam jsem to resil kolekci stringu a bylo
    Tady bych si predstavoval, ze budu mit specialni thread, ktery se bude starat o zamykani na tabulkach pri synchronizaci, osetri pripadne nepovedene synchronizace (skrze uchovani puvodnich hodnot v zaloze) atp. Hlavni thread pak bude vyuzivat par funkci nad tabulkou te cache. Otazka je - pokud uz se podari vytvorit ten mechanismus synchronizace jestli je vhodne pouzit treba jen accessovskou DB a nebo radeji instalalovat lokalne vetsi SQL - MSSQL express, Firebird apod. Moc se mi prave nechce ten PC s aplikaci zatezovat jeste SQL serverem.
    Black panther - Intel E8400 (SLB9J), GigaByte EP45-UD3R, A-Data 2x2GB Vitesta, Gainward ATi/AMD Radeon 4870 512MB Gold Sample, Creative Audigy2 ZS, Samsung HD642JJ (AJ26 SMART error) + WD 6400AAKS + Samsung HD 322HJ, NEC 4571A DVD-RW, Enermax PRO82+ 525W, BenQ FP241W 24" 1920x1200, Microsoft Wheel Mouse Optical, Chicony KU-0108 mm keyboard, Microsoft VX-1000 camera, Microsoft Windows Vista Home Premium 64bit
    My gadgets : custom CIR receiver, RDS receiver (for TV card), no-more-screwdriver-mobo-powerup, Atmel 89cx051 LPTprog, N3310 LCD, ...

  6. #6
    Administrátor マツダ mince Avatar uživatele Marty
    Založen
    07.10.2002
    Bydliště
    Praha, Sanctuary
    Věk
    42
    Příspěvky
    8 225
    Vliv
    300

    Standardní Re: [delphi] Lokalni SQL "cache"

    Tak jsem nahlédl do knížky a fakt je to tak, to co popisuješ je optimálně Merge Replication - obousměrně, s tím, že to je podporované od verze Workgroup.
    Nelze mít v těch vzdálených lokalitách malé servery, ke kterým by se připojovali klienti? Nebo jsou to přímo "cesťáci" s notebooky?

    Možná by bylo lepší tu komunikaci se SQLkem úplně vynechat, na straně serveru rozchodit aplikační server a přes něj provádět synchronizaci. Buď to může být online, nebo dávkově - na klientu budeš mít v libovolném formátu frontu požadavků, které budeš zpracovávat tím aplikačním serverem.

    Holt ale budeš muset vymýšlet synchronizační logiku a řešit konflikty, to nebude žádná legrace.


    edit. a co takhle přístup k aplikaci přes RDP? To by vyřešilo i problém, kdy spojení nepůjde
    CUBE> Ryzen 7 7700X + Arctic Lq Frzr III 64 GB DDR5-6000 ◦ ASUS TUF B650PLUS ◦ ASUS RTX3060 OC 12GB ◦ Kingston KC3000 2TB ◦ SS G12 GM-650 Gold ◦ Samsung S27A800 4K
    WORK> HP EliteBook 845 G9 ◦ Ryzen 5 PRO 6550 ◦ 32 GB DDR3 ◦ 2048 GB nVME SSD ◦ 14.1" 1920x1080 LED + 2x 32" Dell 4K ◦ Win11 Enterprise
    SERVER> HP ProLiant Microserver Gen8 ◦ Intel Core i5-3540T ◦ 16 GB DDR3 ◦ 180 GB SSD + 2x4 TB WD RED + 2x16 TB Toshiba ◦ 10GbE NIC
    PHOTO> Canon EOS 70D ◦ EF 70-200/4L ◦ EF-S 10-18 STM ◦ EF 50/1.8II ◦ EF-S 40/2.8 STM ◦ Yongnuo YN-568EX ◦ Tamrac 5534
    HOMECINEMA> TV Samsung UE55Q55T 55" 4K ◦ DVD Pioneer DV-310K ◦ AVR Yamaha RX-V359 ◦ SPK Dexon Allegro 5.0
    OTHERSTUFF> Mikrotik RB760iGS ◦ Mikrotik CSS610
    ◦ Mikrotik CRS326 ◦ UniFi WLAN ◦ Xerox B235 ◦ Canon PiXMA MG5350

  7. #7

    Standardní Re: [delphi] Lokalni SQL "cache"

    jenze ja nemuzu mit aplikaci, ktera nejde, kdyz nejde "hlavni SQL" server - takze pres RDP nebo jakoukoliv vzdalenou cestu by to slo, ale neresilo by to autonomii aplikace. Nejde o to, ze by PC s aplikaci bylo mimo dosah site - ma to byt spis ochrana proti tomu, kdyz napr. je potreba ten hlavni SQL server restartovat a nebo nahodne sel do kytek. Resenim by byl samozrejme robustni serverovy HW dedikovany pouze pro SQL. Nicmene v soucasne praci na tohle muzu zapomenout - i kdybych to virtualizaoval s dalsimi servery, tak stejne potrebuji licenci na OS atd. Proto take hledam jak se vyhnout kupovani MSSQL serveru na PC aplikace.
    Predstavoval jsem si to tak, ze by cache logika byla na aplikaci. V pripade nedostupnosti hlavniho SQL by proste nejakou dobu cekala s pokusem o dalsi spojeni. Zatimco apliakce by si dal jela z vlastnich dat. Hrozi tu minimalne problem z neaktualnosti dat tech pravidel a nasledne v navaznosti nejaka moznost nekonzistence dat v prehledech. Ale myslim, ze to by se dalo ozelet - proste pokud nebude spojeni, tak vsechen log transakci pujde do cache. Jedine co muze byt problem je jak efektivne udelat log tech zaznamu. Ted to mam udelane tak, ze se proste zapisuje radek, ve kterem je kod operace, osoba a cas. Tim padem ja musim parovat pomoci vnorenych selectu a joinu na vlastni tabulku vypujcku a vraceni. Kdosi chytrejsi mi poradil, ze v radku by mel byt cely zaznam - tj. pujceni, osoba, kdy a vraceni, osoba, kdy. Tim odpadne prace DB na strane informacniho systemu, ktery zobrazuje vystup (i kdyz me napadlo, ze bych na to mohl rovnou udelat view - zatim jsem to zkusil postelovat pomoci indexu a tim vyrazne zkratil cas provedeni, ale treba by to pohled jeste vylepsil).
    Black panther - Intel E8400 (SLB9J), GigaByte EP45-UD3R, A-Data 2x2GB Vitesta, Gainward ATi/AMD Radeon 4870 512MB Gold Sample, Creative Audigy2 ZS, Samsung HD642JJ (AJ26 SMART error) + WD 6400AAKS + Samsung HD 322HJ, NEC 4571A DVD-RW, Enermax PRO82+ 525W, BenQ FP241W 24" 1920x1200, Microsoft Wheel Mouse Optical, Chicony KU-0108 mm keyboard, Microsoft VX-1000 camera, Microsoft Windows Vista Home Premium 64bit
    My gadgets : custom CIR receiver, RDS receiver (for TV card), no-more-screwdriver-mobo-powerup, Atmel 89cx051 LPTprog, N3310 LCD, ...

  8. #8
    Administrátor マツダ mince Avatar uživatele Marty
    Založen
    07.10.2002
    Bydliště
    Praha, Sanctuary
    Věk
    42
    Příspěvky
    8 225
    Vliv
    300

    Standardní Re: [delphi] Lokalni SQL "cache"

    Nebo rovnou indexovaný view

    Mám trochu obavu, že se snažíš vyřešit problém workaroundem, kterým si přiděláš starosti.
    Hlavní problém, který v případě výpadku SQL budeš řešit je synchronizace dávkových příspěvků uživatelů... Tohle dnes vůbec nemusíš řešit, protože na SQL máš vždy aktuální a konzistentní data. Případná lokální cache, kterou vymýšlíš, ti do toho všeho zavede nový rozměr konfliktů, které se mohou objevit - a ne všechny jdou vyřešit bez ztráty dat nebo zásahu admina! (typicky např. když různí uživatelé ve své cache změní stejná data)

    Osobně bych se k této problematice postavil nejdříve analyticky a až poté programátorsky (ostatně to je moje práce ) - vyhodnotil si klady a zápory stávajícího řešení a shrnul rizika a přínosy variant nového řešení (vč. zajištění vysoké dostupnosti velkého SQL atd.). Uvažuj i náklady na programování a následnou údržbu složitého kódu. Výsledek pak předlož sponzorovi, možná se budeš divit
    CUBE> Ryzen 7 7700X + Arctic Lq Frzr III 64 GB DDR5-6000 ◦ ASUS TUF B650PLUS ◦ ASUS RTX3060 OC 12GB ◦ Kingston KC3000 2TB ◦ SS G12 GM-650 Gold ◦ Samsung S27A800 4K
    WORK> HP EliteBook 845 G9 ◦ Ryzen 5 PRO 6550 ◦ 32 GB DDR3 ◦ 2048 GB nVME SSD ◦ 14.1" 1920x1080 LED + 2x 32" Dell 4K ◦ Win11 Enterprise
    SERVER> HP ProLiant Microserver Gen8 ◦ Intel Core i5-3540T ◦ 16 GB DDR3 ◦ 180 GB SSD + 2x4 TB WD RED + 2x16 TB Toshiba ◦ 10GbE NIC
    PHOTO> Canon EOS 70D ◦ EF 70-200/4L ◦ EF-S 10-18 STM ◦ EF 50/1.8II ◦ EF-S 40/2.8 STM ◦ Yongnuo YN-568EX ◦ Tamrac 5534
    HOMECINEMA> TV Samsung UE55Q55T 55" 4K ◦ DVD Pioneer DV-310K ◦ AVR Yamaha RX-V359 ◦ SPK Dexon Allegro 5.0
    OTHERSTUFF> Mikrotik RB760iGS ◦ Mikrotik CSS610
    ◦ Mikrotik CRS326 ◦ UniFi WLAN ◦ Xerox B235 ◦ Canon PiXMA MG5350

  9. #9

    Standardní Re: [delphi] Lokalni SQL "cache"

    tak mas pravdu, ze v pripade konkurencniho pristupu zapisu dat by v tom byl obrovsky problem. Takze bud se rekne, ze data aktualizuje jen jedna apliakce nebo se to bude muset vyresit v programu.

    Prvni co me napadlo byla samozrejme replikace na urovni SQL serveru - ale vzhledem k tomu, ze tu apliakci pisu v podtstate zdarma, tak i naklady na dalsi veci musi byt velmi male. Zkusim si rozmyslet nejakou implementaci a kdyztak se uvidi.
    Black panther - Intel E8400 (SLB9J), GigaByte EP45-UD3R, A-Data 2x2GB Vitesta, Gainward ATi/AMD Radeon 4870 512MB Gold Sample, Creative Audigy2 ZS, Samsung HD642JJ (AJ26 SMART error) + WD 6400AAKS + Samsung HD 322HJ, NEC 4571A DVD-RW, Enermax PRO82+ 525W, BenQ FP241W 24" 1920x1200, Microsoft Wheel Mouse Optical, Chicony KU-0108 mm keyboard, Microsoft VX-1000 camera, Microsoft Windows Vista Home Premium 64bit
    My gadgets : custom CIR receiver, RDS receiver (for TV card), no-more-screwdriver-mobo-powerup, Atmel 89cx051 LPTprog, N3310 LCD, ...

  10. #10

    Standardní Re: [delphi] Lokalni SQL "cache"

    Pokud se jedná pouze o "nekolik set radku", resil bych to trosku jinak. Ta kriticka data bych pri startu aplikace nacetl do nejake objektove struktury v pameti a nepracoval bych s tim jako s SQL. Zde uz by nebyl velky problem problem s ulozenim na lokal a opetovnym nactenim (napr. nejakou jednoduchou serializaci). Pokud by byl dostupny hlavni server , nalil bych to tam primo z nej a soucasne ulozil na lokal do nejakeho souboru.

  11. #11

    Standardní Re: [delphi] Lokalni SQL "cache"

    no jo, ale ono nejde o to stahnout si data (ala F@H) a pracovat s nima jako s jednotkou dat. Ty data se musi prubezne aktualizovat. Nejlepe v 0 case - tj. v aktualnim programu rovnou z puvodniho SQL serveru.
    Na druhou stranu je potreba co nejcasteji dodavat na (hlavni) SQL server data, ze kterych se tvori prehledy. Vse by melo behat s co nejaktualnejsimi daty - tj. na strane aplikace musi mit co nejcerstvejsi pristup k udajum o lidech a o pravidlech (nevim jestli jsem tu jiz psal o strukture tech dat) a posilat co nejcastejsi informace o stavu (vypujckach/vraceni). To prvni uz jsem delal v jine aplikaci pomoci kolekce stringu - protoze tam to nebylo tak slozita struktura a pak jsem pouzival asociativni pristup k tomu "poli", takze jsem tovnou vyuzil to co mi nabizi delphi. Ale tady bude potreba mit vic informaci (coz bych si napr. predem pripravil do pohledu a ten bych jen stahoval) a pak odesilal potrebna data. Marty ma pravdu v tom, synchronizace spravncy dat, ktera se budou menit bude velmi obtizna...
    Black panther - Intel E8400 (SLB9J), GigaByte EP45-UD3R, A-Data 2x2GB Vitesta, Gainward ATi/AMD Radeon 4870 512MB Gold Sample, Creative Audigy2 ZS, Samsung HD642JJ (AJ26 SMART error) + WD 6400AAKS + Samsung HD 322HJ, NEC 4571A DVD-RW, Enermax PRO82+ 525W, BenQ FP241W 24" 1920x1200, Microsoft Wheel Mouse Optical, Chicony KU-0108 mm keyboard, Microsoft VX-1000 camera, Microsoft Windows Vista Home Premium 64bit
    My gadgets : custom CIR receiver, RDS receiver (for TV card), no-more-screwdriver-mobo-powerup, Atmel 89cx051 LPTprog, N3310 LCD, ...

  12. #12

    Standardní Re: [delphi] Lokalni SQL "cache"

    V tom bych nevidel problem. V normalnim rezimu se prece bude neustale pracovat s aktualnimi daty ze serveru (jde jen o napsani nejakeho interface mezi objekt-SQL, pripadne pouzit nejaky ORM mapovaci nastroj). Pri ukonceni programu nebo v nejakem casovem intervalu se zapise cely aktualni stav do souboru na lokal (vzhledem k malemu objemu dat se to muze prepsat cele a nedelat nejakou rozdilovou logiku, zatez bude minimalni). Pokud nebude server dostupny a struktura nebude naplnena, nacte se to z toho souboru, to je cele. Tzn. ze v pripade nedostupnosti serveru budou k dispozici vzdy posledni pouzita data.

  13. #13
    Member Avatar uživatele JoeBoB
    Založen
    11.03.2005
    Bydliště
    Kladno-Praha
    Věk
    38
    Příspěvky
    214
    Vliv
    246

    Standardní Re: [delphi] Lokalni SQL "cache"

    On ale pise, ze potrebuje udelat par set transakci lokalne, kolik transakci ma ta vzdalena databaze? Jestli navrhujes napsat interface, kterej bude udrzovat delta rozdily lokalne, muze to bejt docela pekna naloz...
    Home: Core i5-2500k @ 4,2, Gelis Solution Tranquillo r.2, Patriot 2x8GB 1600MHz DDR3, Gigabyte Z77 D3H, Gigabyte R9 290 4GB GDDR5 + Windforce 3X, ASUS ASUS Xonar DX/XD, OCZ Vertex3 128GB, Samasung Spinpoint 1TB HD103UJ, Samasung Spinpoint 2TB HD204UI, Pioneer DVR-212, Corsair VX550, Thermaltake Wing RS100, Logitech UltraX Premium, A4Tech Bloody V7, Dell Ultrasharp U2412M
    Mobile: E6420, Core i-7 2720QM, RAM 4GB 1333MHz, SSD 128GB, NVIDIA NVS 420M, 1600x900
    ...default, zatim

  14. #14

    Standardní Re: [delphi] Lokalni SQL "cache"

    Citace Původně odeslal JoeBoB Zobrazit příspěvek
    On ale pise, ze potrebuje udelat par set transakci lokalne, kolik transakci ma ta vzdalena databaze? Jestli navrhujes napsat interface, kterej bude udrzovat delta rozdily lokalne, muze to bejt docela pekna naloz...
    Mozna jsem to jen spatne pochopil, ale z prvniho prispevku jsem ziskal dojem, ze se nejedna o nejaky velky objem dat. Tech cca 100 zapujcek ("transakci") snad neni mysleno jako 100 databazovych transakci na lokale (jaky by to melo smysl ?), ale jako aktivnich operaci (nacteni/zapis dat ze serveru/na server) ?
    O zadnem interface na zpracovani rozdilu zde prece nebyla rec.
    Naposledy upravil viki_; 18.10.2011 v 17:33.

  15. #15
    Member Avatar uživatele JoeBoB
    Založen
    11.03.2005
    Bydliště
    Kladno-Praha
    Věk
    38
    Příspěvky
    214
    Vliv
    246

    Standardní Re: [delphi] Lokalni SQL "cache"

    Myslel jsem to tak, že pokud chceš mít local backup (na kterym pak lokálně pracuješ), musíš si zálohovat veškerý transakce tý vzdálený databáze a to nemusí být zanedbatelný objem dat. (možná to chápu špatně a těch pár set záznamů je celkový objem...)
    Home: Core i5-2500k @ 4,2, Gelis Solution Tranquillo r.2, Patriot 2x8GB 1600MHz DDR3, Gigabyte Z77 D3H, Gigabyte R9 290 4GB GDDR5 + Windforce 3X, ASUS ASUS Xonar DX/XD, OCZ Vertex3 128GB, Samasung Spinpoint 1TB HD103UJ, Samasung Spinpoint 2TB HD204UI, Pioneer DVR-212, Corsair VX550, Thermaltake Wing RS100, Logitech UltraX Premium, A4Tech Bloody V7, Dell Ultrasharp U2412M
    Mobile: E6420, Core i-7 2720QM, RAM 4GB 1333MHz, SSD 128GB, NVIDIA NVS 420M, 1600x900
    ...default, zatim

  16. #16

    Standardní Re: [delphi] Lokalni SQL "cache"

    jsou to dve veci. Jde o system, ktery se bude starat o vedeni "vypujcek". Na jedne strane jsou informace o lidech a o pravidlech (komu co lze vypujcit). To jsou data, ktera se moc nemeni a mohla by byt synchronizovana k aplikaci rekneme v radu minut. A pak jsou data o tech vypujckach (a do budoucna i o jinych vecech, ale nebudeme to komplikovat), ktera by se mela do hlaviho SQL serveru synchronizovat co nejcasteji.
    Ted to mam udelane tak, ze na na PC na siti bezi app a nekde jinde bezi SQL server. Kdyz se SQL server restartuje a nebo (coz se tedy jeste nestalo) prestane jit sit, tak ta app nemuze fungovat. Takze potrebuje mit nabufferovano jak informace o lidech a pravidlech, tak i stavy vypujcek.
    Tady nastava ten problem, ze jsem to ze zacatku pojal dost zjedodusene. Mam to udelane jako typ eventu, datum&cas a clovek. Tzn. ze pak ke kazdemu vraceni hledam v te same tabulce pribuznou (posledni) vypujcku a cloveka co jsi to pujcil a vratil (coz mam ne moc optimalizovane reseno pres join na vlastni tabulku s funkci MAX na datum&cas a pak 2x join na tabulku lidi...). Tohle by se synchronizovalo docela dobre, protoze by se proste pri vytvoreni patricne udalosti jen odeslal sled vytvorenych udalosti (kdyz pominu, ze je potreba kontrolovat jestli uz neni vraceno atd. ale nektere tyhle problemy se eliminuji z podstaty veci).
    Naopak - nekdo chytrejsi mi poradil, ze mam udelat design tabulky jako jeden radek, ked budu mit cas a osobu vypujcky a az dojde k vrace, tak zapsat vraceni. Pro prohlizeni vysledku by pak stacil obycejny select (pripadne z joinem na tabulku lidi...). Ovsem proto aby tyhle data mohla jit synchronizovat, tak by je musela mit ta app vsechan a nebo alepson informace o "otevrenych" vypujckach.

    Nepredpoklada se, ze by existovala jeste jedna nebo dalsi app, ktere by vytvareli tyhle informace, ale robustni navrh by s tim mel asi pocitat... Delam to hlavne z toho duvodu, ze ta aplikace musi mit schopnost autonomniho provozu za vsech okolnosti a nemuzu si dovolit si k tomu kupovat SQL server co umi napr. merge repliakci (jak uz to popisoval Marty)...
    Black panther - Intel E8400 (SLB9J), GigaByte EP45-UD3R, A-Data 2x2GB Vitesta, Gainward ATi/AMD Radeon 4870 512MB Gold Sample, Creative Audigy2 ZS, Samsung HD642JJ (AJ26 SMART error) + WD 6400AAKS + Samsung HD 322HJ, NEC 4571A DVD-RW, Enermax PRO82+ 525W, BenQ FP241W 24" 1920x1200, Microsoft Wheel Mouse Optical, Chicony KU-0108 mm keyboard, Microsoft VX-1000 camera, Microsoft Windows Vista Home Premium 64bit
    My gadgets : custom CIR receiver, RDS receiver (for TV card), no-more-screwdriver-mobo-powerup, Atmel 89cx051 LPTprog, N3310 LCD, ...

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. "(2)" nebo "(3)" v názvu systémových souborů Win XP
    Založil Torontik v sekci fóra Ostatní operační systémy
    Odpovědí: 2
    Poslední příspěvek: 10.10.2008, 21:23
  2. error calling "unlink" in "GLOBAL"
    Založil Lopan v sekci fóra Operační systémy na bázi Unixu
    Odpovědí: 8
    Poslední příspěvek: 10.11.2003, 17:14
  3. "Nove celerony" (478p;128k/256k cache) >2G
    Založil Polo v sekci fóra Intel procesory
    Odpovědí: 11
    Poslední příspěvek: 14.03.2003, 10:22

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •