Avatar billede psycosoft-funware Nybegynder
28. september 2009 - 00:28 Der er 4 kommentarer og
1 løsning

database adgang over internet - best practice

Hej Eksperter :)

Jeg har fået til opgave at lave et program der kan håndtere arbejdessedler, ugesedler, lagerstatus m.m. af et elektrikerfirma.
Da dette involvere databasebrug har jeg brug for nogle råd hvad angår databaser (jeg har ikke rørt databaser særligt meget, så jeg er rimelig uerfaren på det punkt).

Databasen skal kunne tilgås over internettet men at have direkte adgang til denne er det dummeste man kan gøre. så jeg havde tænkt mig noget i denne retning:

[database] <-> [database adaptor /w ssl tunnel] <-- internet --> [adaptor /w ssl] <-> [klient]

men da klienterne ikke har mulighed for konstant forbindelse kræver dette jo at en lokal database bliver synkroniseret med hoved databasen, dette vil imidlertid kunne skabe problemer hvis nyere data bliver overskrevet af gammel data.

nogen der har erfaring med sådanne implementationer?
så vil gode råd blive modtaget med kyshånd :)

håber noget af teksten giver mening :)

./psycosoft-funware
Avatar billede psycosoft-funware Nybegynder
28. september 2009 - 00:41 #1
jeg har tænkt mig at basere det på enten MySQL eller PostgreSQL afhængigt af hvilken i mener egner sig bedst :)

./psycosoft-funware
Avatar billede arne_v Ekspert
28. september 2009 - 01:33 #2
Hvis der er mulighed for forbindelse "on demand", så ville:

Delphi app----(SOAP/HTTPS)----web service f.eks. PHP----database

nok være det nemmeste.

Skal der være mulighed for opdatering offline, så skal du lave noget synkronisering og kunne håndtere hvis flere offline brugere laver inkonsistente rettelser i de samme data. Det er ikke helt simpelt. Principielt er det bare database brug men det kræver at tabel strukturer lavet til det og at koden kan håndtere alle mulige scenarier.
Avatar billede psycosoft-funware Nybegynder
29. september 2009 - 00:21 #3
>>arne_v: det lyder ret fornuftigt :)
(ud over at programmet bliver udviklet i Lazarus/Free Pascal men det er så en mindre detalje :) )

eftersom medarbejderne er ude i "marken" er der ikke internetforbindelse on demand altid.

nu snakker du om php på service siden; vil du så anbefale man bruger en form for GUID hver gang man tilgår fx domain.tld/dbaccess.php?[GUID] eller har du andre bedre forslag :) ?

hver medarbejder får deres eget table hvor deres information bliver gemt (jeg traf dette valg af hensyn til ikke at få blandet flere medarbejderes data sammen samt når en medarbejder stopper).

i forbindelse med offline redigering af data, har jeg tænkt lidt i de samme baner som versions styring af kildekode (SVN - Subversion) ved simpelt hen at have et felt med revisions nr af den pågældene medarbejder som bliver forhøjet hver gang data flettes sammen med hovedserveren.

(my apologies hvis spørgsmålene virker en smule dumme, men som sagt jeg er rimelig blank på dette område)

./psycosoft-funware :)
Avatar billede arne_v Ekspert
29. september 2009 - 04:10 #4
GUID er nok en fordel fremfor almindelig AUTO_INCREMENT da den vil give forskellig id'er på de forskellige PC'ere.

Jeg ville putte data i samme tabel og have en kolonne med bruger id. Det andet bliver noget rod.

Du skal have et felt med enten version nummer eller et timestamp.

Det mest tricky er som sagt hvis flere personer retter i samme data offline.
Avatar billede arne_v Ekspert
22. oktober 2009 - 22:45 #5
Tid at få afsluttet her ?

Og et svar fra mig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester