Autor Téma: Návrh optimálního umístění databáze pro aplikaci na závody  (Přečteno 4482 krát)

Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7
Zdravím,
prosím o pomoc s návrhem, jakým způsobem pracovat s daty v aplikaci na vyhodnocování závodů. Cílem je program pro tvorbu startovních listin pro různé kategorie, dílčí etapy, týmy, apod a zaznamenávání výsledků s vyhodnocením.
Jedná se cca o 5 tabulek s celkovým počtem záznamů do 2.000

Potřeboval bych ale 1) co nejrychlejší práci z jednoho počítače s tím, že databáze bude běžet jen na tomto PC 2) umožnit připojení druhého PC v lokální síti, který by mohl pracovat s daty souběžně 3) v ojedinělých případech, ale do budoucna častěji, bych potřeboval, aby byla databáze uložena na serveru, 1 nebo i více počítačů pracovalo souběžně na stejné databázi a zároven by k databázi přistupovali účástníci závodů přes mobilní telefon pro kontrolu startovní listiny a aktualizovaných výsledků

Důležitá je samozřejmě rychlost ale také právě flexibilita. Ve třetím případě i zabezpečení komunikace.

Pracuji s databázemi MySQL a mám Delphi XE7.

Prosím o jakýkoli nápad, jak byste toto řešili.

Díky

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 737
  • Karma: 42
    • Verze Delphi: 10.3
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #1 kdy: 04-01-2018, 20:41:47 »
A v čem je vlastně problém? MySQL je možné provozovat jak na "obyčejném" počítači (připojit se dá i z druhého PC - nastavit firewall), tak na serveru (Win, linux...). Já bych teda akorát použil svůj oblíbený Firebird :-) U MySQL jsem vždycky zápasil s velikostí písmen v názvech tabulek, když se databáze přenášela mezi Windows a linuxem.

Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #2 kdy: 04-01-2018, 20:57:36 »
Určitě to jde, o tom také nepochybuji. Spíš nejsem tak zběhlý v tom, jak si s tím nejlépe poradit. Můžu mít pro případ 1 databázi v rámci programu bez instalace lokálního serveru, aby to pro uživatele bylo co nejjednodušší? Může se pak další PC připojit k databázi na souběžně spuštěném počítači s databází bez serveru?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #3 kdy: 04-01-2018, 21:01:08 »
OT: Keď som sa dočítal, že niektoré RDBM vyžadujú len veľké písmena, tak v mojej DB (aj keď to je FB) sa malé písmená nikde nevyskytujú. Pre mudrlantov: okrem údajov :) Aj samotné SQL texty sú len z veľkých písmen.
A ešte otázočka: máš kúpený Add-On Pack pre FireDAC? Ten dodávaný s Delphi umožňuje pracovať len s embeded verziou.
« Poslední změna: 04-01-2018, 21:04:39 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 737
  • Karma: 42
    • Verze Delphi: 10.3
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #4 kdy: 04-01-2018, 21:03:05 »
Určitě to jde, o tom také nepochybuji. Spíš nejsem tak zběhlý v tom, jak si s tím nejlépe poradit. Můžu mít pro případ 1 databázi v rámci programu bez instalace lokálního serveru, aby to pro uživatele bylo co nejjednodušší? Může se pak další PC připojit k databázi na souběžně spuštěném počítači s databází bez serveru?

Tohle by asi uměl ten Firebird, ale vyzkoušeno to nemám (hlavně nemám vyzkoušený ten souběžný přístup více strojů k jednomu souboru bez spuštěného serveru).

Offline miroB

  • Guru
  • *****
  • Příspěvků: 514
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #5 kdy: 04-01-2018, 22:04:12 »
.. a zároven by k databázi přistupovali účástníci závodů přes mobilní telefon ..

.. Ve třetím případě i zabezpečení komunikace.

Pracuji s databázemi MySQL a mám Delphi XE7.
Nie je jasné, či máš Delphi vyššie ako Pro.
Ak nie, tak DB Server a aj mobilný telefón môžu byť problém (add on Pack C/S a add OnPack Mobile, každý tak po 1000Eur).
Aj napriek tomu by tu boli určité možnosti, ale nie triviálne. Skôr naopak:
- spomínaný Rest server .. príspevok Delfin
- prípadne SYNOPSE mORMot (pozor ten framework má niekoľko 1000 stranový návod)
http://blog.synopse.info/post/2014/08/11/CrossPlatform-Clients/SmartMobileStudio
Osobne by som si to veru netrúfol, neviem si predstaviť, ako to zvládnuť jednoducho, bez širokých poznatkov..

Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #6 kdy: 05-01-2018, 14:31:25 »
Díky za podněty. Delphi mám XE7 Architect.

Určitě nemám znalosti, abych se mohl pustit do něčeho, co zkušený programátor řekne, že je složité. Čili případ 2 bych tedy řešil lokálním serverem na jednom z PC s připojením v rámci lokální sítě druhého.
Třetí případ by znamenal externě uložený server a přístup všech počítačů a mobilů přes internet a nebo lokální server s Wifi pro připojení mobilů do lokální sítě.

Je možné při přístupu mobilních telefonů používat databázi MySQL?
Je výhodnější pro první případ - tedy práce pouze na jednom PC, s databází pracovat na lokálním serveru nebo spíše využít komponent pro práci s daty pouze v rámci programu?
Je možné nainstalovat server MySQL nějakým "tichým" přednastaveným způsobem, aby to proběhlo v rámci instalace programu jako takového? (ideálně, aby to nijak nezatěžovalo uživatele)

Díky

Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #7 kdy: 05-01-2018, 15:56:05 »

 [kdyby se me zeptal klient ktery takovou aplikaci chce naprogramovat seriozne, v Delphi, poradil bych mu jiny jazyk byt je Object Pascal muj "rodny jazyk"]
A jaký by si doporučil? Začínal jsem na škole s Pascalem a pokračoval tak plynule do Delphi, kde mi vyhovuje jednoduchost rozhraní se spoustou dostupných komponent, které mi dost ulehčují život.

- pokud vytvoris z telefonu na server tunel, nemel by byt problem
- tomu bodu nerozumim, ale chapal bych to jako dotaz ve smyslu "mam nainstalovat MySQL spise na stroj v siti nez na kazdeho klienta?"; pokud to chapu spravne, dal bych se cestou centralni instalace protoze pokud se ma ta aplikace rozvijet, je jen otazkou casu kdy bude stejne (nejen) kvuli synchronizaci treba cetralizovani databaze zajistit
- verim ze to mozne je (MySQL nepouzivam), nasel jsem jen referenci k verzi 5.5

Druhou otázkou jsem myslel buď na každé uživatelské PC nainstalovat server, ze kterého by aplikace brala data a nebo použít Memtable/ClientDataSet. Pokud by tedy uživatel neměl v plánu, aby na závodě pracovalo víc PC najednou a nebo aby se k datům přistupovalo z mobilů, tak jestli není jednodušší a rychlejší data ukládat v paměti při běhu aplikace.

Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #8 kdy: 05-01-2018, 16:00:58 »
Pro upřesnění ještě dodávám, že závody probíhají na různých místech a od různých organizátorů. Takže uživatelů je poměrně dost. Proto přemýšlím, jestli musí mít každý nainstalovaný server, i když nepotřebuje přístup z jiných PC nebo mobilů.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2579
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #9 kdy: 05-01-2018, 19:29:46 »
Implementace zminovaneho REST serveru a klienta neni az tak slozita (viz. webinar)
Je otazka, jestli aplikace bez HATEOAS je REST aplikace, nebo jen buzzword ;)

Ale jinak s tebou souhlasim: DB bych zaboxoval do sluzby. Jestli to bude REST nebo SOAP nebo neco jineho je jedno, zrovna tak jaky bude typ RDBMS nebo jestli pobezi lokalne nebo na jinem pocitaci. To by mela byt jen otazka konfigurace. A napsat jednoduchy HTML serverik treba nad Synapsi je brnkacka - my ho v Delphi davali skoro do kazde aplikace.

Jen s tim PHP bych si nic nezacinal  ;)

Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #10 kdy: 05-01-2018, 20:14:35 »
Díky, podívám se na googlu na ten REST, protože moje znalosti jsou hodně omezené a o tomhle nevím nic.
Kdyby si někdo chtěl dát tu námahu a polopaticky mi vysvětlit jak to funguje a co by to v mém případě mělo provádět, budu opravdu rád.

Zatím jsem pracoval jen s vazbou Delphi>ZeosLIb>MySQL v prehistorickém Delphi 7.

Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #11 kdy: 07-01-2018, 13:58:13 »
Tak začínám tomu snad trochu rozumět.

Bylo by dobré tedy řešit všechny tři případy takhle?
Vždy na PC nainstalovat lokální server a připojit aplikaci přes FireDAC (i při jednom PC a bez telefonů)
Pro připojení druhého PC připojit přes lokální sít (wifi) přímo k DB přes FireDAC
Pro připojení telefonů - telefony se připojí také k Wifi a k aplikaci přes Datasnap+REST

Dává to takhle smysl?
Jaký je rozdíl mezi přístupem přes DataSnap s HTTP a Datasnap+REST?
Zvládne průměrný notebook spuštěný server a samostatnou práci v databázi přes aplikaci + připojení druhého PC k databázi na tomto notebooku + přístupy cca 50-150 telefonů pro zobrazování dat?

Telefony nebudou zapisovat ani upravovat žádná data, jen číst.


Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7
Re:Návrh optimálního umístění databáze pro aplikaci na závody
« Odpověď #12 kdy: 08-01-2018, 20:24:03 »
Tak začínám tomu snad trochu rozumět.

Bylo by dobré tedy řešit všechny tři případy takhle?
Vždy na PC nainstalovat lokální server a připojit aplikaci přes FireDAC (i při jednom PC a bez telefonů)
Pro připojení druhého PC připojit přes lokální sít (wifi) přímo k DB přes FireDAC
Pro připojení telefonů - telefony se připojí také k Wifi a k aplikaci přes Datasnap+REST

Dává to takhle smysl?

Dava. Jen budes psat dvoji interface (jeden pro prime spojeni s RDBMS a druhy pro REST server).
OK, tak to takhle udělám. Nejsem si jistý, jak by to šlapalo při práci pouze přes REST server i na zapisujících PC.

Jaký je rozdíl mezi přístupem přes DataSnap s HTTP a Datasnap+REST?

Nevim co tim myslis nebo kde jsi na to narazil. Ptas se jaky je rozdil mezi TDSRESTServer a TDSHTTPServer?
Ano, asi tak. Pro mě by bylo asi nejsnazší vytvořit projekt DataSnap REST Application a dále Stand-alone app>VCL app>TDataModule
V této aplikaci bych potom vytvořil připojení k DB a spouštěl REST server pro připojení mobilů.
Zvládne průměrný notebook spuštěný server a samostatnou práci v databázi přes aplikaci + připojení druhého PC k databázi na tomto notebooku + přístupy cca 50-150 telefonů pro zobrazování dat?

Telefony nebudou zapisovat ani upravovat žádná data, jen číst.

Snad ano, ale mel by sis jej vyzkouset pod umelou zatezi (REST server muzes otestovat trebas pomoci Apache HTTP server benchmarking tool).
Ok, až to bude někdy hotové, tak to vyzkouším.