[Java] Data wegschrijven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Ik heb een reader die allerlei data verzameld. Laten we voor het gemak even aannemen dat het een array van double betreft. Op een gegeven moment zit deze array vol en zal deze weggeschreven moeten worden naar een database of bestand of whatever. Dit proces (laten we het writer noemen) zal deze data weg moeten schrijven. De reader moet in de tussentijd data blijven verzamelen. Als de writer klaar is moet het geheugen natuurlijk weer vrijgegeven worden.

Ik heb een tijdje na zitten denken hoe ik dit voor elkaar ga krijgen en dan ook nog thread safe en ik kom er niet uit. Ik heb nog geen code voor de writer, omdat ik nog niet weet hoe ik dit aan moet pakken. Kan iemand mij hierbij helpen?

You don't have to be crazy to do this job, but it helps ....


Acties:
  • +3 Henk 'm!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

Waarom niet gewoon een queue gebruiken?

Kan je writer ook makkelijker kijken of hij iets moet doen en kun je de items 1 voor 1 wegschrijven, waardoor je niet een hoop data blijft opslaan omdat je de writer alleen in batches wil laten werken.

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Wat is het voordeel van een Queue ten opzichte van een addObject(Object o) functie van de Writer?

You don't have to be crazy to do this job, but it helps ....


Acties:
  • +1 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:17
Is dit niet gewoon een gevalletje Producer / Consumer pattern ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 09:28

The Eagle

I wear my sunglasses at night

Kijk even naar Apache Flume. Doet exact wat jij zoekt. Daar kun je veel van lenen imho :)
Of gewoon gebruiken ;)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
@Knuffelbeer is een beginner, misschien gewoon dan ff beginnen met wegschrijven naar een logfile?

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
whoami schreef op maandag 30 oktober 2017 @ 20:21:
Is dit niet gewoon een gevalletje Producer / Consumer pattern ?
Klopt. Ik moet de data in consumer verzamelen en op een geschikt moment wegschrijven. Mijn kronkel ligt erbij dat de producer dit moet ophopen om de data beschikbaar te houden, maar dit is natuurlijk niet zo.
Hydra schreef op dinsdag 31 oktober 2017 @ 17:55:
@Knuffelbeer is een beginner, misschien gewoon dan ff beginnen met wegschrijven naar een logfile?
Wat heb ik aan een logfile?

Ik heb een goed idee wat en hoe ik het moet doen. Ik kom wel terug zodra het niet lukt.

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 13:22

Kettrick

Rantmeister!

Knuffelbeer schreef op woensdag 8 november 2017 @ 00:06:
[...]


Klopt. Ik moet de data in consumer verzamelen en op een geschikt moment wegschrijven. Mijn kronkel ligt erbij dat de producer dit moet ophopen om de data beschikbaar te houden, maar dit is natuurlijk niet zo.
De producer moet juist niet ophopen, dat moet je oplossing doen, de producer moet produceren. Mocht je consumer het niet bij kunnen houden moet je system backpressure toepassen om je producer rustiger aan te laten doen.

Dit soort code wil je zelf niet schrijven, er zijn tal van data streaming oplossing waarmee dit kan.

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Kettrick schreef op woensdag 8 november 2017 @ 00:15:
[...]


De producer moet juist niet ophopen, dat moet je oplossing doen, de producer moet produceren.
Klopt. En daar zat mijn gedachtekronkel. :)
Mocht je consumer het niet bij kunnen houden moet je system backpressure toepassen om je producer rustiger aan te laten doen.
De consumer moet het makkelijk bij kunnen houden, mits in datablokken verzameld. Het rustiger aan doen van de producer is geen optie. Desnoods gaan er samples verloren, maar de producer moet door gaan.
Dit soort code wil je zelf niet schrijven, er zijn tal van data streaming oplossing waarmee dit kan.
Het kan niet moeilijk zijn om dit zelf te maken. Ik haat het om libs toe te voegen als ik het zelf eenvoudig op kan lossen. :)

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:39
Idee: dump het op een messagequeue. Gratis je producer en consumer losgekoppeld, en als je consumer het niet bijhoudt zou je er eventueel meerdere kunnen starten.

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Knuffelbeer:
Klopt. En daar zat mijn gedachtekronkel. :)
Je gedachtenkronkel zit volgens mij in het feit dat je het van het begin af aan al over een list hebt die je in delen weg wilt schrijven. En omdat je dan de aanname doet dat het dezelfde datastructure moet zijn begin je vervolgens aan concurrency issues te denken. Maar als je het zaakje nou eens opsplitst in 3 lijsten, namelijk degene die gevuld wordt, degene die klaar is om weg te schrijven en degene die weggeschreven wordt, dan wordt je probleem al een stuk eenvoudiger.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:17
Knuffelbeer schreef op woensdag 8 november 2017 @ 00:06:
[...]


Klopt. Ik moet de data in consumer verzamelen en op een geschikt moment wegschrijven. Mijn kronkel ligt erbij dat de producer dit moet ophopen om de data beschikbaar te houden, maar dit is natuurlijk niet zo.
De producer produceert data en plaatst het op een queue (zoals reeds 2x aangehaald in dit topic :P)

De consumer(s) luistert op die queue en neemt de data er vanaf en verwerkt ze.

[ Voor 5% gewijzigd door whoami op 08-11-2017 10:19 ]

https://fgheysels.github.io/

Pagina: 1