Model de proiectare pentru analiza datelor fișierelor binare și stocarea într-o bază de date

Are cineva recomanda un model de design pentru a lua un fișier de date binare, parsarea de părți din ea în obiecte și stocarea datelor rezultate într-o bază de date?

Cred că un model similar ar putea fi folosit pentru a lua un fișier xml sau tabel delimitat și pentru al analiza în obiectele reprezentative.

O structură comună de date ar include:

(Antet) (DataElement1) (DataElement1SubData1) (DataElement1SubData2) (DataElement2) (DataElement2SubData1) (DataElement2SubData2) (EOF)

Cred că un design bun ar include o modalitate de a schimba definiția de analiză bazată pe tipul de fișier sau pe anumite metadate definite în antet. Deci un Model de fabrică ar face parte din designul general al părții Parser.

0
fr hi bn

4 răspunsuri

  1. Doar parcurgeți parserul fișierelor, utilizând orice tehnică care vă vine în minte
  2. Scrieți multe teste de unitate pentru a vă asigura că toate carcasele de margine sunt acoperite

Odată ce ați făcut acest lucru, veți avea de fapt o idee rezonabilă despre această problemă/soluție.

Acum ai doar teorii ce plutesc în capul tău, cele mai multe dintre ele se vor dovedi a fi greșite.

Pasul 3: Reactorul fără milă. Scopul dvs. ar trebui să fie ștergerea a aproximativ jumătate din codul dvs.

Veți găsi că codul dvs. la sfârșit se va asemăna fie cu un model de design existent, fie că ați creat unul nou. Veți fi apoi calificat să răspundeți la această întrebare :-)

0
adăugat

Utilizați Lex și YACC. Dacă nu dedicați următorii zece ani exclusiv acestui subiect, ei vor produce codul mai bun și mai rapid de fiecare dată.

0
adăugat

Sunt pe deplin de acord cu Orion Edwards și, de obicei, modul în care abordez problema; dar în ultima vreme am început să văd niște tipare (!) la nebunie.

Pentru sarcini mai complexe, de obicei, folosesc ceva de genul interpret (sau strategie ) care folosește constructor (sau fabrică ) pentru a crea fiecare parte din date.

Pentru streaming de date, întregul parser ar arăta cam ca un adaptor , adaptându-se dintr-un obiect de flux la un flux de obiecte (care de obicei este doar o coadă).

Pentru exemplul dvs. ar fi probabil un constructor pentru structura completă a datelor (de la cap la EOF) care utilizează intern constructorii pentru elementele de date interne (alimentate de interpret). Odată ce se întâlnește EOF, un obiect ar fi emis.

Cu toate acestea, obiectele create într-o instrucțiune de comutare în unele funcții din fabrică sunt probabil cea mai simplă metodă pentru mai multe sarcini mai mici. De asemenea, îmi place să-mi păstrez imuabilitatea obiectelor de date pe măsură ce nu știți niciodată când cineva lovește concurența pe gât :)

0
adăugat

Modelul Strategiei poate fi unul pe care doriți să îl priviți. Strategia este algoritmul de parsare a fișierelor.

Apoi, doriți o strategie separată pentru inserarea bazei de date.

0
adăugat