Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Alternativ till lokal databas

Postades av 2009-03-20 15:47:38 - Peter Hageus, i forum arkitektur, Tråden har 6 Kommentarer och lästs av 7603 personer

Håller på med en "ocassionally connected application" (som Microsoft kallar det) i .Net, dvs den ska gå att köra utan att vara ansluten till en databas.

Är 99% inställd på att använda NHibernate för datalager, och var ganska nära att få till en lösning med Bamboo.Prevalence som cache. Men det stöp på att NHibernate inte kollar level-2 cache när man dödat sin sessionfactory/startat om applikationen.

Finns det något sätt att "lura" NHibernate att enbart fråga mot cache, om man inte har databasanslutning?

Alternativ 2 är en lokal databas, men jag skulle gärna slippa allt bök kring synkning, databasnycklar osv (har en befintlig db med identity-fält som primärnycklar). ADO.Net Sync Framework känns inte helt smidig, måste hålla på och generera datasets helt i onödan tex.

Tacksam för ideér, och har någon ett bra förslag/färdig lösning finns det utrymme att få betalt för några dagars jobb.


Svara

Sv: Alternativ till lokal databas

Postades av 2009-03-21 03:26:47 - Magnus Gladh

Det där är inte helt trivialt, är det så att du kan tänka dig att viss information inte är tillgänglig när du inte är "online".

Själv har jag i den sitsen att jag har en applikation som kan gå "offline" men som ändå måste fungera, men jag har lyxen att viss information inte behöver vara tillgänglig då vilket ju underlättar massor. Vilket gör att jag behåller en del information i min lokala cache (vilket ju dessutom ökar prestandan rejält eftersom man slipper göra anrop över internet då.

Om inte så tror jag att alternativet blir en lokal databas eftersom det kommer bli en hel del data som du måste hålla i koll på och det är inte helt trivialt och speciellt prestanda smart. Men om du använder dig av repilkering i SQL Server så bör den hantera allt bök med synkroniseringen och nyckel problem. Om du får problem med nycklarna så är mitt tips att du använder dig av GUID som nyckel istället för Identity fält, om det går.

- M


Svara

Sv:Alternativ till lokal databas

Postades av 2009-03-23 08:56:10 - Peter Hageus

Det kommer definitivt att bli skillnader online & offline, vissa anläggningar har tex. kundregister med 100 000+ poster (inkl foton), och det är ju inte aktuellt att synka ut.

Tvåvägsreplikering med MS SQL är nog inte genomförbart, med tanke på licenskostnad och administration. (det kan vara något hundratal klienter, och lokala servrar finns inget sätt att lösa administrativt).

Kan inte ändra speciellt mycket i db heller, då en stor del av systemet ligger kvar i VB6, och det måste fortsätta funka ett tag framöver. När allt väl är över i .NET (och det finns bra tester) så är det ett annat läge, men just nu får jag leva med identityfält o dyl.

Lutar lite åt att skippa NHibernate's nivå-2 cache, och hantera den själv för läsning offline. Objekt som ska skrivas skulle man kunna serialisera ner på disk när man är offline, eller kanske använda Bamboo el. dyl. Finns det någon liknande objekt-db som är mer aktivt underhållen förresten? (orsaken till att jag inte vill använda SQL CE eller något sådant är att det blir svårt att använda samma schema som den centrala servern för identityfällt mm, och jag vill inte underhålla flera mappningar för varje objekt)


Svara

Sv: Alternativ till lokal databas

Postades av 2009-03-23 13:49:29 - Johan Idstam

Jag skulle se efter om det fungerar med SQL Server Compact Editdion på klienten och synka mot SQL Server Express på servern mha MS Sync Framework.

/johan/


Svara

Sv:Alternativ till lokal databas

Postades av 2009-03-24 08:39:31 - Peter Hageus

Som sagt, både SQL CE och Sync Framework skapar mer problem än dom löser i mitt fall känner jag.

Har gjort en proof-of-concept-lösning, där varje repository håller en cache som serialiseras till och från disk. Övriga applikationen får bara tillgång till IEnumerable<> (eller IQuerable<> för de entiteter som bara ska hanteras online), och en enkel Get. Repository håller själv koll på när cache ska refreshas osv.

Funkar rätt bra, men det optimala vore såklart en mer robust och beprövad lösning. Har kikat lite på db4o, men runtime-licenser slipper man ju gärna, blir så mycket administration kring det för säljorganisationen.


Svara

Sv: Alternativ till lokal databas

Postades av 2009-03-27 15:51:10 - Magnus Gladh

jag har lost det pa ett lite annorlunda satt som du kanske kan fa ideer ifran.

For det forsta sa maste min klient veta nar den gar "offline" sa den kan informera anvandare om att den nu ar i ett offline lagge och stanga visa funktioner och dessutom varna anvandern att datan som visas inte ar helt tillforlitlig. Det gors med en heartbeat till servern.

Det andra ar att jag har en cache lite hogre upp allts i en applikationsservices som kontrollera om klienten ar offline/online, om den ar offline sa visas varningsmeddelandet och data fran cachen visas. Om klienten ar online sa kontrolleras om data finns i cachen sa fall visa den, annars sa hamta fran servern. Problemet som jag stotte pa har var att om nagra forandringar gors pa servern sa kan jag inte fa dessa eftersom jag endast gar till servern om jag inte redan har data i cahcen. Sa jag anvander heartbeaten till att hamta alla data som har andrats sedan sista heartbeaten och sedan lagga ner den i cachen, det betyder att min data endast ar inkorrekt sa lange som jag staller heartbeaten till (typ 15 sekunder).

Det andra problemet jag stotte pa vara nar jag har refererade objekt i ett objekt. Sag att jag har ett valutaobjekt till mitt artikel. Nar jag laddar artiklen sa hamtar jag aven valutaobjektet som sager att priset ar i USD och den nu ar 8.15 SEK. Om nu nagon annan klient nu andrar detta valuta objekt till 8.00 SEK hur skall min artikel fa reda pa detta? Sa jag satte upp kriterier om detta var kritisk information som maste ut till alla klienter sa fort som mojligt och sa la jag till att dessa objekt skall finnas i cachen och skickas ut med heartbeaten... gott sa langt sa bra. Testade med lite valuta objekt och sag att det forandrades i de olika klienterna nar jag andrade i en, testade sedan att hamta min artikel med valuta objekt 8.15 SEK, gick till en annan klient och andrade valuta objektet till 8.00 SEK. Titta pa min artikel och ser att den fortfarande ar 8.15 SEK, tittar pa objektet i cachen och den ar 8.00 SEK!!!! Problemet blir ju att jag hamtade valuta objektet tillsammans med mitt artikelobjekt och nar den sedan ar ute pa klienten sa ligger den ju dar som ett objekt, sa det jag fick gora var att skicka med valutaobjektets ID med artiklen och i artiklen sa varje gang som jag vill ha mitt valuta objekt sa maste jag ga till cachen och leta upp valutaobjektet med mitt ID da fungerar det underbart, speciellt med binding i WPF. Man visar artikelinformationen och sa andrar man valuta objektet i en annan klient och man ser hur priset bara andras pa skarmen, ingen refresh eller nagot sadant... riktigt snyggt.

Funderade forst pa att ha nagon tidsstyrd refresh pa min cache som du har, men skippade det ratt snabbt av prestanda skal, det finns inget som helst skall till att hamta alla mina 1000-tals artiklar till mina klienter bara for att det kan ha hant nagot i nagra fatal. Nej det blev battre med heartbeaten och dessutom sa satta jag upp om klientens senaste heartbeat var aldre an 14 dagar sa tomms hela cachen och all data maste hamtas igen vid forfragning...

- M


Svara

Sv:Alternativ till lokal databas

Postades av 2009-03-30 11:14:13 - Peter Hageus

Intressant läsning, tack för att du tog dej tid.

Jag kommer nog att lösa det på en lite högre nivå än jag tänkt från början, just pga av objekt-referenser i cachade objekt, antagligen på application/services.

Det som är synd är att inga objektdatabaser verkar gå att fråga med LINQ på ett vettigt sätt, hade blivit mycket mer transparent lösning på så vis.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 614
27 953
271 709
399
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies