Avatar billede dennish Nybegynder
09. februar 2009 - 12:39 Der er 6 kommentarer og
1 løsning

søger persistent lag til tabeller

Hejsa

Jeg søger et persistent lag, jeg kan ligge oveen på min tabeller (SAS tabeller). Tabellerne er ikke i en database dvs. jeg har ikke en underliggende dbms der understøtter ACID properties. Så pt kan der f.eks. kun være en brugere af gangen logget på min applikation, der ændrer i data. Det skal lige siges jeg tilgår data via jdbc. Findes der et framewok til tilbyder mig ACID properties så jeg kan håndtere flere brugere at gangen i min applikation
Avatar billede arne_v Ekspert
11. februar 2009 - 03:26 #1
Jeg har aldrig hørt om sådan en.

Opgaven er tricky. Det er nemt at lave en passthrough JDBC driver. Men hvis den underliggende driver ikke kan låse på nogen måde så skal den nye driver både håndtere:
- andre tråde i samme JVM
- andre JVM på samme PC
- andre JVM på andre PC'ere

Så jeg tænker:
- passthrough JDBC driver
- parse af SQL sætninger
- låsninger distribueret via JGroups

Det vil kræve lidt arbejde !
Avatar billede dennish Nybegynder
11. februar 2009 - 10:21 #2
Arne>> Ja jeg tænkte nok det kræver noget arbejde. Havde egentlig håbet at et persistent lag a la Hibernate kunne give mig ACID properties. Sagen er nemlig den at når 2 personer arbejder på den samme tabel er der ingen lås på tabellen så hvis person1 tror hun opdaterer data samtidig med at person2 opdaterer data ja så det nærmere tilfældighederne der afgør hvem der først får gemt data. nu ved jeg ikke lige hvad en passthrough jdbc driver er. Men jeg er desværre låst af en allerede jdbc driver der connecter til SAS tabeller. Så jeg skal vel kode en form for låsning af mine tabeller. JGroups (Reliable Multicast Communication). Hmm ser da vist ud til at blive en kompliceret opgave.
Avatar billede arne_v Ekspert
12. februar 2009 - 02:01 #3
Det jeg kalder en passthrough JDBC driver kaldes også en delegateing JDBC driver.

Tricket er at din applikation loader driver addlocking.Driver som så loader sas.Driver, når du laver en connection laver den connection en connection til SAS og når du udfører en statement så laver driveren først en lock kalder SAS driveren med samme lock og releaser så lock igen.
Avatar billede arne_v Ekspert
12. februar 2009 - 02:03 #4
Men jeg kommer lidt i tvivl.

Snakker vi traditionelle database transaktioner hvor der skal låses i millisekunder eller snakker vi låsninger i minutter mens et levende menneske skal kigge på og rette data ?

Det er to forskellige problem stillinger. Omend det grundliggende problem stadigt er næsten det samme.
Avatar billede dennish Nybegynder
13. februar 2009 - 17:55 #5
arne>> Det er en lås for et levende menneske der sider og retter data i en tabel.
Avatar billede dennish Nybegynder
06. juni 2009 - 16:58 #6
arne smider du et svar så jeg kan få lukket spørgsmålet ?
Avatar billede arne_v Ekspert
06. juni 2009 - 23:58 #7
gerne
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
Kategori
Kurser inden for grundlæggende programmering

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