Vra

Ek is die evaluering van opsies vir die doeltreffende stoor van data in Java.Die datastel is tyd gestempel data waardes met'n naam van die primêre sleutel.bv.

Name: A|B|C:D
Value: 124
TimeStamp: 01/06/2009 08:24:39,223

Kan'n voorraad prys op'n gegewe punt in die tyd, so dit is, dink ek, 'n klassieke tyd reeks data patroon.Egter, ek het regtig nodig het'n generiese RDBMS oplossing wat sal werk met enige redelike JDBC versoenbaar databasis soos ek wil graag om te gebruik Hiberneer.Gevolglik, tyd reeks uitbreidings te databasisse soos Oracle is nie regtig'n opsie nie soos ek wil graag die implementor in staat wees om te gebruik om hul eie JDBC/Hiberneer in staat databasis.

Die uitdaging hier is net die massiewe omvang van die data wat versamel in'n kort tydperk van die tyd.So ver, my implementering is gefokus rondom die definiëring van periodieke pakket en skoonmaak skedules waar rou data is versamel in die DAG, WEEK, MAAND, ens.tafels, maar die nadeel is die vroeë verlies van korrelig en die effense ongerief van die tydperk inco tussen periodes gestoor word in verskillende aggregate.

Die uitdaging het beperkte opsies, want daar is'n absolute beperking op hoeveel data kan fisies saamgeperste terwyl die behoud van die oorspronklike korrelig van die data, en dit beperk word vererger deur die richtlijn van die gebruik van'n relasionele databasis, en'n generiese JDBC in staat om een op daardie.

Leen'n veronderstelde konsep van klassieke data kompressie-algoritmes, en gebruik te maak van die feit dat baie opeenvolgende waardes vir die dieselfde naam van die sleutel kan verwag identies te wees, ek wonder of daar manier wat ek kan moeiteloos verminder die aantal rekords gestoor deur conflating herhaling waardes in een logiese ry, terwyl dit ook die berging van'n toonbank wat dui, effektief, "die volgende n rekords het dieselfde waarde".Die implementering van net dit lyk eenvoudig genoeg, maar die handel af, is dat die data model is nou vreeslik ingewikkeld om navraag teen die gebruik van SQL standaard, veral wanneer die gebruik van enige soort van die totale SQL funksies.Hierdie aansienlik verminder die bruikbaarheid van die data winkel aangesien slegs komplekse persoonlike kode kan die herstel van die data terug na'n "gedecomprimeerd" staat wat in'n impedansie wanverhouding met honderde van gereedskap wat sal nie in staat wees om te lewer hierdie data behoorlik.

Ek oorweeg die moontlikheid van die definisie van persoonlike Hiberneer tipes wat sou basies "verstaan" die saamgeperste data stel en blaas dit terug en terug navraag resultate met die dinamiese geskep sintetiese rye.(Die databasis sal gelees word slegs aan alle kliënte behalwe die streng beheer insette stroom).'n paar van die gereedskap wat ek in gedagte gehad het, sal integreer met Hiberneer/POJOS in bykomend tot die rou JDBC (bv.JasperReports) Maar dit maak nie regtig adres van die totale funksies kwessie en waarskynlik'n klomp van die ander kwessies soos goed.

So ek is deel manier om te bedank myself om moontlik om te gebruik om'n meer eiendoms [moontlik nie-SQL] data stoor (enige voorstelle sal waardeer word) en dan fokus op die moontlik minder komplekse taak van die skryf van'n pseudo JDBC bestuurder om ten minste gemak integrasie met eksterne gereedskap.

Ek het gehoor verwysing na iets genoem'n "bietjie verpak lêer"as'n meganisme om dit te bereik data kompressie, maar ek weet nie van enige databasisse dat hierdie aanbod en die laaste ding wat ek wil doen (of nie kan doen nie, regtig....) is skryf my eie databasis.

Enige voorstelle of insig ?

Was dit nuttig?

Oplossing

Ek wil kyk na 'n kolom-georiënteerde databasis . Dit sal wonderlik wees vir hierdie soort van aansoek

Ander wenke

Hiberneer (of enige JPA oplossing) is die verkeerde instrument vir hierdie werk.

JPA/Hiberneer is nie'n liggewig oplossing.In'n hoë-volume van aansoeke, die oorhoofse is nie net groot nie, maar hoog.Jy regtig nodig het om te kyk na rooster en cluster oplossings.Ek sal nie herhaal die oorsig van die verskeie tegnologieë hier.

Ek het'n baie ondervinding in die finansiële mark inligting stelsels.'n paar van die dinge wat jy gesê vas aan my:

  • Jy het'n baie van die rou data;
  • Jy wil hê om aansoek te doen van die verskillende groepe aan dat die data (bv. oop/hoë/lae/naby die daaglikse opsommings);
  • Hoë beskikbaarheid is waarskynlik'n probleem (dit altyd is in hierdie soort van stelsels);en
  • Lae latency is waarskynlik'n probleem (ditto).

Nou vir die rooster/cluster tipe oplossings ek verdeel hulle losweg in twee kategorieë:

  1. Kaart-gebaseerde oplossings soos Samehang of Terracotta;en
  2. Javaspaces-gebaseerde oplossings soos GigaSpaces.

Ek het gebruik om Samehang'n baie en die Kaart oplossing kan lekker wees, maar dit kan problematies wees ook.Samehang kaarte kan luisteraars op hulle, en jy kan gebruik om hierdie soort van ding te doen dinge soos:

  • Mark prys waarskuwings (gebruikers kan wil'n kennisgewing wanneer'n prys bereik'n sekere vlak);
  • Afgeleide pryse (bv. 'n beursverhandelde opsie pryse stelsel sal wil hê om te reprice wanneer'n onderliggende sekuriteit veranderinge laaste verhandel prys);
  • 'n handels-opname/bespreking stelsel kan wil om aan te pas ontvang handel kennisgewings vir versoening doeleindes;
  • ens.

Al hierdie kan gedoen word met die luisteraars nie, maar in Samehang byvoorbeeld luisteraars te wees goedkoop, wat lei tot dinge soos'n Kaart met'n luisteraar skryf as iets wat aan'n ander Kaart en dit kan ketting op vir'n rukkie.Ook, die wysiging van die kas inskrywing kan problematies wees (hoewel daar is meganismes vir die hantering van daardie soort van probleem te;Ek praat oor situasies soos die aanskakel van'n mark prys waarskuwing, sodat dit nie die sneller'n tweede keer).

Ek het gevind dat GigaSpaces tipe rooster oplossings te wees baie meer dwingende vir hierdie soort van aansoek.Die lees (of vernietigende lees) operasie is'n baie elegante en haalbare oplossing en jy kan kry transaksionele rooster updates met sub-millisekonde prestasie.

Kyk na die twee klassieke toustaan argitektuur:

  • Versoek/Reaksie:'n slegte boodskap kan blok die tou, en terwyl jy kan baie senders en ontvangers (vir scalability) opskaling van die aantal van die pype is nie altyd maklik;en
  • Publiseer/Skryf:hierdie decouples die sender en die ontvanger, maar het nie scalability in wat as jy het verskeie intekenaars hulle sal elkeen die boodskap ontvang (nie noodwendig wat jy wil sê met'n bespreking stelsel).

In GigaSpaces, 'n vernietigende lees is soos'n haalbare publiseer-skryf-stelsel en'n lees werking is soos die tradisionele publiseer-skryf model.Daar is'n Kaart en JMS implementering gebou op die top van die rooster en dit kan doen EIEU bestel.

Nou whaqt oor volharding ek hoor wat jy vra?Volharding is'n gevolg van die besluit om al die ander dinge.Vir hierdie soort van aansoek, ek hou van die Volharding as'n Diens model (ironies genoeg geskryf oor Hiberneer, maar dit is van toepassing op enigiets).

Basies beteken dit dat jou datum winkel besoeke is asynchrone en dit werk mooi met die doen opsomming van data.Soos jy kan'n diens te luister vir die handel kennisgewings en bly net die mense dit is wat belangstel in (saamgevoeg in die geheue indien nodig).Wat jy kan doen'n oop/hoë/lae/naby pryse op hierdie manier.

Vir'n hoë volume data wat jy nie regtig wil om dit te skryf al die databasis.Nie synchroon in elk geval.'n aanhoudende winkel plus'n data pakhuis is waarskynlik meer die roete wat jy wil om te gaan, maar weereens, dit hang af van die vereistes, volumes, ens.

Dit is'n ingewikkelde onderwerp en ek het net regtig touche doen dit.Hoop dit help jou.

Jy sal waarskynlik vind dit interessant wees om te aanbieding Michael Stonebraker se luister by Money: Tech . Hy tref op 'n aantal van die dinge wat jy noem nodig en hy illustreer hoe die groot drie olifante (SQL Server, Oracle, en DB2) nooit in staat sal wees om die behoeftes van bosluis winkels (wat dit lyk soos jy bou) pas. Hy grawe buite kolom winkels, wat Ek stem is die regte rigting. Hy bespreek ook kompressie en spoed, wat beide kwessies vir jou is.

hier is 'n paar meer links jy kan interessant vind:

Baie JDBC-staat databasisbestuurstelsels (bv Oracle) bied kompressie in die fisiese stoor enjin. Oracle, byvoorbeeld, het die idee van 'n "saamgeperste" tafel sonder dekompressie oorhoofse:

http: //www.ardentperf com / wp-content / uploads / 2007/07 / gevorderde kompressie-datasheet.pdf

Dankie vir die antwoorde.

Cletus, ek waardeer die uiteensetting, maar een van die werkinge ek kan maak is laat vaar DB buigsaamheid en verenigbaarheid met JDBC/Hiberneer om te toelaat dat die gebruik van al die beskikbare gereedskap.Verder, hoewel ek het nie duidelik staat hierdie, ek wil nie te dwing om my gebruikers in die aanneming van'n [moontlik duur] kommersiële oplossing.As hulle Databasis Merk X, laat'em gebruik dit.As hulle nie omgee nie, beveel ons open source Databasis Merk Y.Basies die aansoek het verskeie gesigte, een van hulle'n bewaarplek vir inkomende data, maar'n ander gesig is'n verslagdoening bron en ek regtig nie wil hê om te kry in die besigheid van die skryf van die verslag kragopwekkers.

Terwyl ek het nie regtig laai dit getoets nie, ek is baie beïndruk met LucidDB.Dit is'n kolom georiënteerde databasis en dit bied goeie navraag prestasie en oënskynlik goeie data kompressie.Dit het'n JDBC bestuurder alhoewel daar geen Hiberneer dialek bestaan vir dit nie, so ver as wat ek kan vertel.Dit ondersteun ook die gebruiker gedefinieerde transformasies wat in kort, ek dink my sal toelaat om moeiteloos te implementeer om my idee van comprimeren herhaal en opeenvolgende waardes in een "ry", maar blaas hulle terug in verskeie "sintetiese" rye by navraag tyd, al gedoen onsigbaar aan die navraag oproeper.Laastens, dit ondersteun hierdie handige funksie van buitelandse tafels waar ander JDBC ondersteunende databasis tabelle kan word weerklink in LucidDB.Ek dink dit kan van onskatbare waarde wees vir die verskaffing van'n sekere vlak van ondersteuning vir ander databasisse.

Dankie vir die wyser, Javaman.Dit gesoneer my in op LucidDB.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top