Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Diseño BBDD Documental

A ver como os cuento. Bueno la cuestión es que voy a empezar un proyecto/aplicación documental. En ella se van a almacenar contratos con clientes escaneados a parte de más info (docs, xls...etc). La cuestión es la de siempre, la ubicación de las imágenes/docs/xls, pero como nunca he tenido que hacer este tipo de aplicación no me he interesado a fondo por el tema.

Poniéndoos al día os digo que voy a utilizar D5 (si si no reíros es tecnología punta) + MyODBC(No quiero ZEOS) + MySQL, puede que a parte de un interface windows utilice un interface web con ASP/PHP ya veremos en un futuro. Los clientes serán w2000 y XP y el servidor un w2003 Server con IIS.

Bueno pues la gran pregunta es ¿Almaceno los documentos (imágenes, docs, xls...) en la propia BBDD mediante campos BLOB o bien solo almaceno en un campo la ruta de los mismos?

Yo, sin profundizar en el tema, optaría por solo almacenar la ruta del documento ya que así la BD no se sobrecarga* pero el problema viene con la seguridad; a parte de la seguridad de la BD tendría que implementar la misma en el W2003 con lo que eso supone, y a la hora de una posible migración de todo el sistema a otro tendría que validar la compatibilidad de archivos.

Sin embargo si utilizo campos BLOB simplemente tendría que implementar la seguridad de la BD y a la hora de migrar de una máquina a otra tan solo me llevaría la BD y punto, el problema es la sobrecarga* de la BD.

(*) El volumen de información va a ser como mucho de unos 5000 registros, pero claro cada registro puede contener x archivos con x megas.

Bueno estoy hecho un lío y no se realmente que hacer, ¿¿podéis echarme una mano??

Se me olvidaba para más información la aplicación va a ser multiusuario
Responder Con Cita
  #2  
Antiguo 16-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, la teoría dice que el mejor sitio donde almacenar las imágenes es, dentro de la Base de Datos. A priori tienes más facilidades para controlar la seguridad y más sencillez para realiza las copias de seguridad (si la base de datos empieza a ser grande esto puede cambiar); De esta forma parace que la integridad del "conjunto de datos" (datos textuales e imágenes) parece más fiable.

Pero, (todo tiene un pero) desde hace un tiempo para acá (supongo que a medida que los sistemas han ido almacenando más documentos/imágenes) las cosas ya no son tan claras como dice la teoría.

Almacenar las imágenes fuera de la Base de Datos (y el path dentro) puede tener algunas ventajas y eliminar algunos inconveniente.

* Si hay que afrontar una migración de SGBD, esta solución es mucho más sencilla, que si los ficheros estuvieran codificados en el formato (BLOB) de la BD.
* El acceso a las ima´genes es más eficiente si están en un sistema de ficheros (que está preparado para gestionar ficheros) que no si están dentro de la Base de Datos.
* El acceso es más sencillo desde aplicaciones externas como Visualizadores, conversores, Clientes de FTP, Web Browsers,...
* Aunque la cosa va mejorando, las Bases de Datos están pensadas para trabajar con textos y la eficiencia baja cuando trabajan con tipos binarios.


Creo que las cosas no están a priori claras; Estudia bien tu caso; Revisa artículos sobre el almacenamiento de datos binarios en MySQL. Posibles problemas y rendimiento que ofrece.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 16-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Bueno antes cuando he dicho:

Cita:
Empezado por Tony
nunca he tenido que hacer este tipo de aplicación
he mentido un poco , tengo una aplicación pero no es documental, es de personas, y almaceno su foto en ella directamente en un campo blob de la BD (MySQL), pero claro estamos hablando de 2 o 3 kb por foto y un máximo de 2000 registros, y funciona perfectamente... y en esta nueva voy a almacenar pdf (basicamente) con 2 o 3 Mb cada uno...

Ya he mirado artículos sobre el tema, y me surgen las mismas dudas.... yo estoy más por almacenar el path pero entonces me surge la duda con los permisos, no tendría problema en el sentido que yo tb soy el admin de ese servidor, pero a la hora de definir los perfiles de usuario de la aplicación no se como debería hacerlo....
Responder Con Cita
  #4  
Antiguo 16-09-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Wink

Cita:
Empezado por tcp_ip_es Ver Mensaje
Bueno antes cuando he dicho:

Ya he mirado artículos sobre el tema, y me surgen las mismas dudas.... yo estoy más por almacenar el path pero entonces me surge la duda con los permisos, no tendría problema en el sentido que yo tb soy el admin de ese servidor, pero a la hora de definir los perfiles de usuario de la aplicación no se como debería hacerlo....
Hola

bueno, yo lo que hago es almacenar el path en un campo de una tabla, y el resto lo almaceno en un directorio compartido a un grupo... ten en cuenta que con w2003s puedes crear grupos de usuarios y si creas un usuario le puedes asignar derecho de lectura y/o escritura sobre la carpeta donde esten los documentos... además, puedes configurar las politicas de grupo desde el w2003s y cuando el usuario se conecte puedes hacer que la ruta donde estan los documentos se configure en el Pc o estación correspondiente

no se si me entendistes, pero al menos yo lo he solucionado con path y carpetas compartidas para un grupo de usuarios

Salu2
__________________
BlueSteel
Responder Con Cita
  #5  
Antiguo 16-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Vale creo que tengo claro que lo haré con el path, además me he enterado que los documentos que quieren meter van de 1 a 30 megas, con lo que la BD puede irse de madre como dicen allá en las Américas

Seguro que me surgirán dudas asi que os las haré saber!!! Muchas gracias a los dos .... según escribo esto me surge una duda je je je mi BD es de contratos con lo que es bastante confidencial (por eso mi duda de meterlo en la BD ) imaginaros que dependiendo del tipo de contrato (o cualquier otro campo de la BD) quiero que el usuario sea lector o no lo pueda ver, como controlo eso via w2003, si estamos hablando que serían lectores o escritores sobre todo un directorio ... no voy a estar controlando los ACL de cada archivo o si BlueSteel tu que has realizado una aplicación asi como lo has hecho....
Responder Con Cita
  #6  
Antiguo 16-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por tcp_ip_es Ver Mensaje
mi BD es de contratos con lo que es bastante confidencial (por eso mi duda de meterlo en la BD ) imaginaros que dependiendo del tipo de contrato (o cualquier otro campo de la BD) quiero que el usuario sea lector o no lo pueda ver, como controlo eso via w2003, si estamos hablando que serían lectores o escritores sobre todo un directorio...
Parece claro que los contratos no deberían ser accesibles para todo el mundo.
Debes pensar en dos tipos de protecciones; De acceso o de contenido.

Para protección de acceso los documentos son de acceso libre, pero se protege el acceso a ellos. Ya sea por permisos (si es posible), implementando un servidor de ficheros,...
Para protección por contenido, debes proteger los ficheros en si. Depende del tipo de ficheros que tengas o de si deseas encriptarlos (por ejemplo) desde tu aplicación. En último caso debes tener en cuenta si esos ficheros van a ser accedidos desde fuera y los problemas que eso te puede conllevar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 16-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Me parece muy acertado tu consejo. Pero tengo preguntas ... primero y resumiendo expongo... La aplicación tendrá:

De Acceso
  • Usuarios Editores: Podrá anexar contratos (docs pdf) con lo que tendrá permisos de escritura y lectura
  • Usuarios Lectores: Sólo podra leer los archivos referentes a los contratos.
y de Contenido, dependiendo de ciertos campos (p.ej. tipo de contrato) el usuario podrá desencriptar y leer ese archivo (doc pdf) o no.

Bien me gusta la idea ya que si un usuario quiere acceder "maliciosamente" via explorer windows y es lector pero no puede ver un cierto tipo de contrato como estarán encriptados no los podrá ver, hasta ahi de acuerdo pero ¿Como encripto y desencripto un pdf/doc/xls/etc? ¿Existe ya un componente a tal efecto?


De nuevo muchas gracias por vuestra dedicación...
Responder Con Cita
  #8  
Antiguo 16-09-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Wink

Hola

Lo que mejor puedes hacer es la validadción de tu sistema por Usuarios.... Además, cuando un usuario ingrese al Sistema, ese debe haber iniciado la sesión de windows....

Entonces ya tienes una doble validación... la validación del sistema (documental) te permite realizar las acciones que estimes conveniente.... la validación de usuario de Windows a través de W2003Server, te permitirá tener acceso restringido o no a ciertas carpetas... por lo cual, si tu creas una carpeta en algun directorio raiz del W2003server y la compartes, pero le asignas privilegio solo a algunos usuarios, aunque los otros tengan el patch no podran ver el contenido...

Solo te vastaria asegurarte que los usuarios no se compartan las claves de acceso... pero como el W2003 Server pide claves cada 42 dias y además que sean de un largo minimo de 7 digitos con convinación de letras (mayusculas y minusculas) y numeros... no tendras muchos problemas.... creo

En el W2003Server tambien puedes crear perfiles remotos y asignarlo a un grupo de usuarios....para tu caso creas un Perfil Contratos, y en el asignas todas las carpetas y cosas que puede ver un usuario dentro del Servidor.... Despues asignas al perfil los usuarios que estimes convenientes... y eso es todo..

Bueno, en el perfil puedes modificar de todo, desde protector de pantalla, fondo, menus de inicio, acceso a internet (no estoy seguro de esto) y programas, entre otras cosas...

ve que puedes hacer, realiza una prueba de usuarios y perfiles... y trata de acceder a carpetas compartidas con usuarios asignados y otros que no esten.. a ver que tal...

Salu2
__________________
BlueSteel
Responder Con Cita
  #9  
Antiguo 17-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
El problema BlueSteel es lo que os decía antes os lo muestro con un ejemplo:

Imaginate que tengo un usuario que solo puede ver contratos del Tipo B con fecha x, esa validación la puedo hacer desde la aplicación y no mostrarle los contratos que no son B y fecha x, pero si el usuario se sabe el camino via explorer podrá acceder al documento ya que será lector de la carpeta contratos, con lo que tendría que ir al propio archivo y quitarle los permisos, lo malo es que tendría que hacer eso por cada archivo ¿Me entiendes? , el caso que la solución que da Neftali de encriptar dichos archivos es correcta pero actualmente no se como encriptar un pdf/doc/xls/etc...
Responder Con Cita
  #10  
Antiguo 17-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hay muchas soluciones para encriptar ficheros.
Seguro que en estos temas Domingo (Seoane) tiene cosas a decir, pero sin ir más lejos en Torry (VCL/Seguridad) puedes encontrar muchos componentes que te facilitarán el trabajo.

Es una solución que funciona, y además segun el tipo de protección de acceso que necesites es la única que se me ocurre, ya que a veces los filtros sobre las cosas que los usuarios pueden y no pueden ver, sólo se pueden hacer desde la aplicación, ya que dependen de otros datos de la Base de Datos (Fechas, como tú has dicho, grupos de usuarios, departamentos, niveles de seguridad,...)

Pero insisto, antes de ponerte a implementarla, debes pararte a pensar que luegos no tengas problemas por otro sitio. Por ejemplo, si quisieras acceder a esos datos desde otra aplicación o desde una página web, ten en cuenta que estas elementos que acceden a la Base de Datos se encontarrán los datos encriptados.
No podrás acceder desde otras aplicaciones a la Base de datos directamente.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 17-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
ya tb había pensado en eso porque quería hacer un parte web en asp para acceder a los documentos, y claro si me pillo un componente de encriptación en delphi luego tengo que aplicarlo en asp también... joe que lio yo creía que habría alguna solución más rápida para todo este embrollo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Proyecto Gestión Documental Open Source. moesis OOP 15 11-05-2011 22:10:38
software libre para la gestión documental lakers Linux 9 23-12-2008 20:43:01
Documental en este momento (Castro/Cuba) Al González La Taberna 3 16-03-2008 23:20:41
Interesante documental sobre las corporaciones Al González La Taberna 2 03-11-2007 13:34:18
Documental México 2006 las elecciones poliburro La Taberna 8 31-10-2007 17:54:05


La franja horaria es GMT +2. Ahora son las 04:11:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi