Ready for testing
User Rating: / 0
- Details
-
Category: Development
-
Published on Saturday, 16 August 2008 12:35
-
Written by Ove
-
Hits: 2714
We are ready to test the new version of AgetoAge4 with MySQL server support. You can connect to local server (localhost) or external server. If you connect to an external server and want to try make a new database, make sure you have privilege to do this.
Jeg har lastet opp ny versjon av AgetoAge4 der alt virker som før, men det er nå en meny "Database" hvor man kan koble på en local server eller en MySQL server på et domene. For å kunne koble på local server må man installere MySQL server på maskinen sin. Den kan lastes ned fritt fra
http://dev.mysql.com/downloads/mysql/5.0.html
Man trenger ikke Enterprise versjonen, men MySQL Community Server holder og den er gratis. Men har man et domene med MySQL server kan man koble til denne og man kan opprette en ny database fra AgetoAge4 (må ha lov til å opprette nye databaser).
Dette er en testversjon der man må følge visse regler hvis man ønsker å teste MySQL supporten.
- Koble til server.
- Velg en database og klikk "Use selected database". Er det ingen "Available databases" må man lage en ny base.
- På "Operations" arket, klikk "Transfer all data in database to AgetoAge4 intenal memory"
Dette laster inn alle data til AgetoAge4, men det er ikke nødvendig å gjøre det motsatte etter man har lagt til nye personer og famiier. Hver gang man endrer data (eller legger til en ny person) vil dette oppdateres i databasen på serveren. Funksjonen "Transfer all data in AgetoAge4 internal memory to database" skal KUN brukes hvis man har en .GED fil eller .ATA fil man ønsker å legge i en database. Det finnes kanskje noen som bare har tilgang til èn database, men jeg kan legge til en funksjon senere som oppretter standardtabellene i denne slik at denne kan brukes. Jeg har med vilje laget det slik at bare databaser som har standardtabellene som AgetoAge4 bruker vil vises i "Available databases" Men det er ingenting i veien for at man ikke kan opprette disse tabellene i en eksisterende base....funksjon for dette vil komme...
Når man avslutter AgetoAge4 etter å ha redigert data importert fra en MySQL server får man spørsmål etter om man vil lagre filen...dette svarer man bare NEI til hvis man ikke vil lagre til en vanlig .ATA fil eller .GED fil. Som nevnt under punkt 2 vil endringer av data bli lagret på serveren mens man redigerer.
Jeg er spent på hvordan dette vil fungere når flere redigerer samtidig. Hvis Edith, Torill og jeg legger til nye personer eller familier vet ikke AgetoAge4 hva den neste ID til den personen jeg vil legge til vil bli... Torill har kanskje nettopp lagt til en ny person og Edith har kanskje også lagt til en masse personer. Så AgetoAge4 må sende en forespørsel etter den neste ID som kan brukes, til serveren (som i vårt tilfelle befinner seg i Amsterdam) om å få neste ID, i det øyeblikk man klikker OK på personkortet blir en ny forespørsel sent....for mens man har redigert den nye personen har kankje noen andre allerede lagt til en ny person. og den ID man fikk er kanskje ikke ledig nå. Så den ID man ser på personkortet når man legger til en ny person vil kanksje ikke være den endelige ID personen får.. men kan være en midlertidig ID inntil man er ferdig med redigering og klikker OK. Jeg har ikke lagt inn sperringer som hindrer at to personer legger til hver sin person samtidig. Men hvis Torill og Edith klikker OK på samme tid slik at serveren får forespørsel etter neste person ID på samme tid....vel.....så det er vel lite trolig at dette kan skje i praksis, men hvis serveren er opptatt med å undersøke neste ledige ID for Torill når Edith sender førespørsel så vil AgetoAge4 tvinne tommeltotter til Torill har fått sin neste ID og så vil serveren finne neste ledige ID til Edith.
En ting som jeg ønsker å finne ut av er om det er mulig å få MySQL serveren til å sende ut en info til alle andre klienter enn klienten som oppdaterer data om at den eller den personen er blitt oppdatert slik at AgetoAge4 kan oppdatere sin "hukommelse". All data blir jo lest inn fra serveren en gang for alle ved hver pålogging. Data som blir redigert blir lagret på serveren fortløpende men endringer som blir gjort av andre klienter blir ikke oppdatert i andre klienter (fordi dataene allerede er lest inn i AgetoAge4s' private hukommelse). Jeg kan i farten tenke meg en selvkontruert løsning på dette som følger: En egen tabell blir opprettet i hver database som kun blir brukt til å legge inn ID til alle oppdaterte data og når AgetoAge4 ikke har noe annet arbeid som venter kan da sjekking av denne tabellen for å se om det er nødvendig å oppdatere data bli gjort.
Et annet problem er hvis noen editerer samme person på samme tid. Jeg bruker denne løsningen: Hver tabell får et ekstra felt "RevisedByClient" av boolean type. Når en klient vil editere en person, vil AgetoAge4 sende forespørsel til serveren for denne personen for å undersøke om RevisedByClient er TRUE eller FALSE. Hvis det er FALSE vil AgetoAge4 godkjenne editering...hvis det er TRUE vil man få en beskjed om at "Data for person X is beeing revised by other client" og man får ikke lov å endre data for denne. Hvis man får lov å endre data for denne personen vil AgetoAge4 sette RevisedByClient til FALSE (da vil andre kunne redigere denne personen) når man klikker OK.
Jeg vil legge til en funksjon som vil sette dette flagget til FALSE for alle personer da det kan være nødvendig hvis man f.eks mister internett forbindelsen mens man editerer en person....da vil flagget bli stående som TRUE.
Good luck!
PS. Hvis noen som leser dette har kunnskap om server/klient problemstillinger eller andre relevante ting er det hyggelig å få kommentarer..