Adgang til MS Access hostet i Ubuntu server fra Java i en Windows-baseret VPS?

Indlæg af Hanne Mølgaard Plasc

Problem



Hej jeg har dette lille store problem Jeg har en arena VB6 desktop applikation, der forbinder til en MS Access database hostet i en lokal Ubuntu server maskine, der deles til LAN som en SMB andel og jeg har en Tomcat webapplikation hostet i en Windows baseret VPS, disse er


Krav




  • Læs oplysninger fra MS Access db og vis det i webapp (On URL besøg og næsten nøjagtighed i realtid).

  • Opdater MS Access db med oplysninger modtaget via hjemmesiden.



Fakta


  • 20Mb < db størrelse

  • Delt med 15 ~ 25 brugere.

  • Konstant lokal opdatering og forespørgsel.



Filstørrelsen er lille, fordi den bliver afkortet, da den vokser værktøj stor (> 100 MB)
Nu ved jeg, at arquitecture ikke er det bedste, og at MS Access er på sine grænser, er en migrering til fuld Java og MySQL på vej, men det kommer til at tage lang tid .... I mellemtiden har jeg har brug for en måde at gennemføre den funktion på, her er mine muligheder.





Mulighed 1



Få adgang til db'en i ubuntu-serveren via en VPN direkte fra webapp.


Ulemper



  • Er det muligt?.

  • Langsom forbindelse.

  • Kan låse db MORE ofte, da det sker ret ofte lokalt.



Mulighed 2



Få en lokal webapp til at køre i Ubuntu-serveren, der udsætter db'en som REST API, så opdateringer vil blive håndteret af den lokale webapp.


Ulemper:



  • Det er svært at bruge MS Access i et UNIX-miljø og ser på unixODBC og FreeTDS, men indtil videre har jeg ikke kunnet bruge det. [1] [2]

  • Nå skriver du hele appen og sikrer serveren.



Mulighed 3



Nogen forslag?


Tak, hvis du læser dette langt, er enhver hjælp virkelig værdsat.

Bedste reference


Medmindre jeg savnede noget i din beskrivelse, tror jeg, du kan forveksle forskellene mellem en API og et bibliotek. Grundlæggende er ODBC en API, som implementeres som et bibliotek og almindeligvis anvendes på Windows-baserede maskiner gennem yderligere databasebiblioteker som ADO og ADO.NET. Jeg nævner dette, da du henviste til UnixODBC som en løsning. Det ville ikke være en komplet løsning, da der er mere til det end blot API'en alene.


Enkelt sagt er databasefilen, du oprettede med Microsoft Access, en .MDB-flad fildatabase (ok, der er lidt mere til det, men i forhold til at behandle det som en database, det er det eneste der betyder noget her). Hvis du ved, hvordan strukturen i .MDB-filen virker, kan du skrive dit eget bibliotek, der læser/skriver til det. Dette er selvfølgelig ikke trivielt, og på Windows-platforme er dette givet til dig af Microsoft ved hjælp af de biblioteker, der er inkluderet i operativsystemet. Dette kaldes også en JET-driver og database. JET er det databaseformat, som .MDB-filen implementerer og bruges af Access og andre applikationer via de tilsvarende navngivne JET-drivere.


Så for at finde en tilsvarende mulighed for ikke-Windows-platforme, har du brug for en slags bibliotek, der ved at læse/skrive til .MDB-filen direkte. Hvis du forsøger at bruge .MDB-filen på samme tid fra et Access-program, skal du sørge for, at det bibliotek, du vælger, understøtter samtidig adgang til brugeren til databasen.


I en hurtig søgning synes der at være nogle løsninger, jeg kunne finde. Den første synes at have nogle funktionelle begrænsninger. Det andet synes at være et kommercielt produkt.


MDB Værktøjer [3]


Easysoft JET/Access Driver [4]