Sunday, March 21, 2010

Cambio en el diseño y RandomAccessFile


Hola a todos

Empezare por detallarles un poco nuestro diseño actual. En esta parte lo que teníamos como ya dijimos en otro post era un Cliente ligero que se comunicaba con el servidor el cual sera pesado. En el servidor se hacia la parte de Networking y de Comunicación a la base de datos. El problema es que todas estas funciones estaban en el modulo del servidor, lo cual hace que pierda cohesión

El viernes tuvimos una pequeña junta, donde llegamos a la solución que debíamos separar esto en dos módulos, es decir el servidor el cual es el que se encargara de la parte de networking y probablemente de locking después y la parte del manejador de base de datos. Estos cambios se reflejaran mas tarde, ya que hay que hacer algunas modificaciones para que puedan ser llamados desde el server y no directamente.

En este habíamos tenido un pequeño problema y es que pensábamos que no podíamos editar directamente el archivo donde esta la base de datos. Esto es por que nuestra elección de herramientas estaba mal, ya que intentábamos usar un DataOutputStream, ya que muchas cosas las estamos manejando a nivel Byte. Para lograr realizar nuestro objetivo investigando con diversas personas y en diversos lugares, descubrimos que lo que realmente necesitábamos era un RandomAccessFile, la cual es una clase que tiene métodos como seek(long v) que te permite poner un apuntador en el archivo y que empiece a escribir o leer desde ahí Así que todos los que en los foros decían que con Java(y por lo consiguiente con Clojure) para poder modificar una parte de un archivo, tenias que reescribirlo todo, creo que esta solución es algo mas interesante en nuestro caso. Claro que no aplica si tienes que usar delimitadores para poder leer lineas, ya que las lineas generalmente son de diferente tamaño, pero cuando todo esta bien delimitado, RandomAccessFile es bastante útil.

La liga al API de Java donde se encuentra la descripción de RandomAccessFile: http://java.sun.com/javase/6/docs/api/java/io/RandomAccessFile.html


No comments:

Post a Comment