Cercar en aquest blog

8/10/09

Dades

No cal dir que en tot sistema d' informació, les dades són el més important de tot. Els SI serveixen bàsicament per crear, modificar, cercar, transformar, facilitar.... DADES.

En un Hospital, evidentment és manipulen dades, un gran volum de dades, expressades en diferents formats, text, imatges, video, etc. Aquestes, han estat generades a partir de diferents entorns (aplicacions) que juntes i d'una manera distribuida interacctuen entre elles.

Recordem però que volem implementar un sistema nou, que doni resposta a tot el que fa referencia a l'assitència mèdica. Aquest sistema treballarà en dades del propi sistema i dades originaries d'altres sistemes.

Imaginem un sistema del més normal. Les dades d'aquest segurament estaràn enmagatzemades en una BD. I, l'accés a elles en última instància segurament es farà en SQL.

Molt bé doncs, abans de pensar quina solució oferir a aquesta part tant important (Data Acces Layer) la capa d'accés a dades, cal fer un esforç i marcar-se uns objectius, que si es pot més tard es dissenyerant per una futura implementació.

Que volem aconseguir, quins objectius volem assolir en aquest projecte pel que fa a l'accés a dades?

  • Transparència d’origen de dades: El lloc on estiguin allotjades ha de ser indiferents respecta al seu accés. Això no vol dir que qualsevol lloc és bo.
  • Model d'entitats únic, independent de la BD: Això vol dir que sigui quina sigui la BD el model d'entitats (mapejos a objectes, més o menys) ha de seguir el mateix patró.
  • Facilitar la lectura de dades relacionades en diferents BD: Cercar dades d'un origen a partir de dades tretes d'un altre.
  • Veure les dades com si fossin totes d’un mateix context: Totes les dades han de formar un context de dades únic (Conjunt de contextos).
  • Augmentar la productivitat en els desenvolupament de capes de procés (Bussiness Layer)
  • Facilita-ne, si cal, l' accés remot (Serveis de dades).
  • Evitar cadenes SQL dins el codi de les aplicacions (no es una tonteria).

Recordo que plantajem la solució en .Net.

Si mirem que ens ofereix aquesta tecnologia sobre accésos a dades i models d'entitas ens trobem que els de Microsoft estàn fent feina.

ADO.Net Entity Data Model

  • System.Data

  • System.Data.Entity

El mateix nom es defineix com a una possible solució al que volem. Un model de dades accessible sense SQL (també si pot accedir amb SQL). I, com si accedeix?, amb LINQ.

LINQ: Increíble, incríble, increíble.

Però, no tot es bonic. Amb SQL Server funciona a la perfecció, amb origens XML també, amb coleccions carregades a memòria també, però amb les altres bases de dades (Intersystems Cache, Oracle, MySQL, etc) dependrà dels seus fabricants, o, de la nostre imaginació. Només cal implementar una llibreria que transformi expressions LINQ a sentancies SQL amb la sintaxi de la BD corresponent.(linQToSQL)



I que aconseguim ?

  • Tenir uns contextes de dades accesibles des de LINQ
  • Desde LINQ podem tractar diferents contextes de dades com si fossin un de sol.
  • Podem interrogar dades d’un contexte a partir de dades d’un altre, de manera fàcil i transparent.
  • Projectar les dades a través de serveis de dades (ADO Data Services).
  • Definir un cotext de dades (virtual) que actui com a proxy de tots els cotextes existents, al qual li demanarem les dades des de capes superiors (BL).




Una simple aproximació de disseny. Comencem a veure la llum?