Toon posts:

DB Client-Server

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Besten,

ik ben bezig met de voorbereidingen van een client server ontwerp voor wiskundige berekeningen.
De berekeningen maakt gebruik van enkele tabellen. Deze tabellen zullen ofwel in een database worden bijgehouden, ofwel in een xml-file. Deze tabellen staan op de server en kunnen maandelijks aangepast worden. Op deze server staat ook apache met php, dus de tabellen moeten ook via php opgevraagd kunnen worden.

Het is de bedoeling dat de client (een java of .net programma) de berekeningen maakt aan de hand van ingevoerde gegevens door de gebruiker en de gegevens uit enkele tabellen. De client moet ook offline kunnen werken, dus de tabellen moeten ook lokaal worden bijgehouden en de mogelijkheid hebben om te kunnen updaten indien er connectie mogelijk is naar de server.

Nu is mijn vraag, hoe zouden jullie dit aanpakken? Ik heb kennis van MySQL en XML, maar verder niets. Bestaat er iets als een offline mysqlDB die op de client-zijde kan mee geinstalleerd worden en kan updaten met een MySQL server?
Ik heb in.net magazine van juni 2007 gelezen dat er een SQL Server compact edition bestaat die op de client mee kan geinstalleerd worden en de basisfuncies bied van een SQL Server. Deze kan bij connectie synchroniseren met de back-end SQL Server.
Het zou leuk zijn moest deze ook opensource bestaan zoals MySQL.

Of kan ik best op de server een MySQL naar XML parsing doen, die XML doorsturen naar de client en op de client een XML naar MS Access DB parsing maken.

Er moet ook de mogelijkheid zijn om bepaalde clients enkel lees rechten te geven, en andere bv volledige rechten.

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Het is een beetje afhankelijk van de complexiteit van de data. Als het een paar simpele tabellen zijn, zou ik niet weten waarom je niet gewoon die XML van de server naar de client zou lezen, en deze daar zou cachen. Inlezen van XML in .Net en dit opslaan en weer inlezen is in ieder geval extreem simpel. Kun je misschien iets meer vertellen over de hoeveelheid data en de aard van de berekeningen? Als het een paar tabellen zijn, vind ik het wat overkill om daarvoor Access of MSSQL 'nodig' te hebben.

https://niels.nu


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:32

Janoz

Moderator Devschuur®

!litemod

Waar wordt de client geinstalleerd? Voor een enkele applicatie lijkt het me complete overkill en zlfs erg onwenselijk dat je lokaal een database server gaat installeren. Naast het feit dat mysql bijvoorbeeld een serversocket opent (waardoor de gebruiker wel eens ene leuke firewall melding kan krijgen) kan het ook nog eens fiks conflicteren met reeds geinstalleerde databases.

Ikzelf zou eerder gaan voor een embedded database. Voor Java zou je kunnen denken aan hsqldb. Voor .net zullen ook wel dergelijke alternatieven bestaan. Je zult in je programma iets moeten implementeren dat de verschillende databases synchroniseert. Aangezien de data toch offline beschikbaar moet zijn zou ik me puur richten op een applicatie die puur lokaal werkt en enkel online synchroniseert.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Voor MS SQL Server is er de compact edition. In combinatie met .NET 2.0 is er al aardig wat mogelijk om offline te werken en af en toe te synchronizen en daarvoor geschikt voor 'occasionally connected datasources'.

Bas van Atteveld heeft hier een lezing van gehouden tijdens de devdays. Zie ook zijn presentatie en demos hier.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

In .NET zou je ook gebruik kunnen maken van een DataSet. In een DataSet kun je tabellen en oo kunnen foreign keys worden gedefineerd. De DataSet kent ook een methode 'Merge' waarmee je twee DataSets kunt samenvoegen.

Echter omdat het formaat in zowel .NET, Java en PHP (webserver) gebruik moet kunnen worden is XML waarschijnlijk het beste formaat. De clients kunnen zelfs het XML document 'posten' naar de webserver zodat deze het kan verwerken in de master database.

Zoals opgemerkt door Janoz is het installeren van een fullscale database niet echt the way to go. Wil je toch echt select queries blijven uitvoeren, dan raad ik je aan te kijken naar de sqlite database. Dit is een snelle en krachtige embedded database engine met veel functies. Voor alle drie de platformen (.Net, java en PHP) zijn versies beschikbaar. Daarnaast worden zowel de structuur, indexen en data in 1 bestand opgeslagen wat de uitwisseling met de server vereenvoudigd.

If it isn't broken, fix it until it is..


Verwijderd

Topicstarter
Het project is dan toch gewijzigd. Het zal een client applicatie worden met een locale kleine database die synchroniseerd met een grotere online database. Het is dus niet nodig een applet te schrijven.

Ik heb intussen gekozen om de applicatie in C# te programmeren.
Als lokale DB had ik gekozen voor SQL Server 2005 Compact Edition, een DB waarvan de server slechts 1,6 MB groot is en mee geimplementeerd kan worden in de installatie van de applicatie.
Deze lokale DB zou synchroniseren met een online SQL Server 2005.

Jammer genoeg moet ik buiten data ook nog files (zip-files) kunnen opslaan in de database.
De SQL Server 2005 kan varbinary data aan tot 2 gig, ruim genoeg dus, maar de Compact edition kan slechts 8kb aan varbinary aan.

Volgens mij zijn er dan nog 2 mogelijkheden.
1. De files lokaal naast de applicatie en de lokale DB bewaren en bij het overzetten naar de online DB deze wel in de online DB plaatsen omdat deze wel grotere files aan kan.
2. De data opsplitsen in meerdere records.
3. Een andere lokale DB vinden die wel grotere varbinary types kan opslaan en ook een light weight server installatie heeft die bij in de installatie van de applicatie kan geïmplementeerd worden.

Tot nu toe heb ik nog geen andere light weight database gevonden die de SQL 2005 CE kan vervangen. Mss dat iemand een andere lokale DB weet of een andere oplossing?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:32

Janoz

Moderator Devschuur®

!litemod

In dit topic worden er anders wel een paar genoemd. Zorg iig dat je de database kunt embedden. dat is, zoals ik eerder ook al zei, een behoorlijk harde eis om een beetje een fatsoenlijke applicatie in elkaar te draaien die niet de hele computer van de gebruiker onnodig overhoop gooit.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Tot nu toe heb ik nog geen andere light weight database gevonden die de SQL 2005 CE kan vervangen. Mss dat iemand een andere lokale DB weet of een andere oplossing?
Dan raad ik je toch ten zeerste aan om eens een kijkje te nemen op de www.sqlite.org. Een sqlite database engine hoef je niet te installeren. Voor .NET zijn verschillende wrappers beschikbaar. Wij gebruiken zelf de wrapper van phxsoftware waarvan ook de broncode beschikbaar is (gratis). Je hebt dan wel .NET 2.0 of hoger nodig.

sqllite wordt o.a. ook gebruikt in producten van Google en Mozilla (Firefox 3.0). Voor zover ik weet is dit de enigste embedded database met transaction support.

If it isn't broken, fix it until it is..


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Firebird embedded :) Of sqllite inderdaad.

SqlServer 2005 CE Desktop is echt te beperkt. Het is wel 'aardig' maar feitelijk niet meer dan de port van de CE versie voor windows CE, nou... die kan niet zoveel hoor.

Ik zou dan nog eerder voor access kiezen dan voor Sqlserver 2005 CE desktop.

Firebird embedded heeft als voordeel dat je gewoon de firebird server kunt gebruiken voor connected access en de fdb file + 1 dll kunt nemen voor een desktop app die direct de db moet gebruiken zonder service (dus 0.0 installeren). Verder heb je gewoon alle features tot je beschikking en zit je niet met een kreupele, blinde database waar je feitelijk niets aan hebt zoals sqlserver 2005 CE Desktop.
Niemand_Anders schreef op donderdag 05 juli 2007 @ 12:35:
sqllite wordt o.a. ook gebruikt in producten van Google en Mozilla (Firefox 3.0). Voor zover ik weet is dit de enigste embedded database met transaction support.
Err... MS Access heeft zelfs transacties. En natuurlijk firebird embedded. Of als je geld teveel hebt en met trage databases wilt werken... vistadb! ;)

[ Voor 23% gewijzigd door EfBe op 05-07-2007 13:05 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1