Autor Téma: Návrh optimálního umístění databáze pro aplikaci na závody  (Přečteno 1028 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

  • Hrdina
  • ****
  • Příspěvků: 382
  • Karma: 29
    • Verze Delphi: 10.2
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
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ů: 3212
  • Karma: 30
    • Verze Delphi: XE7 professional
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

  • Hrdina
  • ****
  • Příspěvků: 382
  • Karma: 29
    • Verze Delphi: 10.2
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 Delfin

  • Guru
  • *****
  • Příspěvků: 742
  • Karma: 32
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Vytvoris business logic vrstvu a pak uz je jedno kde bude DBMS. Ano, pozadavek na "nejrychlejsi praci z jednoho pocitace" tim nesplnis, ale moc nechapu proc by melo pro zavody neco kritickeho existovat. Napr. REST serverem si vytvoris vratka pro budouci mobilni aplikaci a "zajistis zabezpeceni".
« Poslední změna: 04-01-2018, 21:21:31 od Delfin »
I'm a soldier, so don't panic!

Offline Miroslav Baláž

  • Plnoletý
  • ***
  • Příspěvků: 197
  • Karma: 5
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
.. 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
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 Delfin

  • Guru
  • *****
  • Příspěvků: 742
  • Karma: 32
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
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.

Implementace zminovaneho REST serveru a klienta neni az tak slozita (viz. webinar), byt jsem ho nikdy v produkci nepouzil a spis bych se mu vyhnul ve prospech jinych jazyku. Ale tvrdi to osel ktery se tahnul vic nez 12 let (nepocitaje takovych 6 let ucebnich) za Delphi a ono mu pod rukama umira :-[ :) [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"]

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)

- 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
« Poslední změna: 05-01-2018, 15:20:00 od Delfin »
I'm a soldier, so don't panic!

Offline matej

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: XE7

 [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
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 Delfin

  • Guru
  • *****
  • Příspěvků: 742
  • Karma: 32
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
V tomto pripade nejspis PHP 8) A rychlost co resis je s dnesnim vykonem otazka zlomku sekund, ne-li milisekund - i pres rozumne nastavenou sit. A poradatele bych rozlozil logicky, co poradatel, to server - idealne separovany, centralni (i za cenu toho ze by na nem z financnich duvodu pracoval treba nejaky predseda zavodu ci neceho takoveho).
« Poslední změna: 05-01-2018, 18:36:23 od Delfin »
I'm a soldier, so don't panic!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2045
  • Karma: 103
    • Verze Delphi: D2007, XE3, DX10
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
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 Delfin

  • Guru
  • *****
  • Příspěvků: 742
  • Karma: 32
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
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  ;)

S PHP? Ja taky ne, ale je multiplatformni ;) A dokud nema Delphi implementovane v Oknech ani "nove" thread pool API v kombinaci s async sockety (coz doda vyznamny narust vykonu serverovych aplikaci i pred planovanym poklesem kvuli chybe Intel), nema pro me smysl radit lidem si s nim zacinat v serioznich serverovych aplikacich ;) Zalezi jak moc seriozni je tato. I tak bych ji ale zaboxoval do sluzby se kterou si pripadne budou rozumet i "ostatni programatori".
« Poslední změna: 05-01-2018, 22:54:07 od Delfin »
I'm a soldier, so don't panic!

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):