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 12-03-2014
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Exclamation Manejar cien millones de registros

Hola amigos del foro:

Sucede que necesito desarollar un proyecto movil para manejar solo una tabla con cuantro campos

Código:
 id (string:10)  activo (booleano)   reporte (booleano)   adeudo (booleano)
Pero esta tabla debe manejar cien millones de registros. La verdadera complejidad es que lo necesitan para una solución movil (ya sea tablet, smartphone o computadora movil) sin depender de internet. Es decir, los trabajadores (como 500) cada mañana puedan descargar la BD actualizada para salir a recorrer las rutas.

He pensado hacerlo en SQlite, tambien veo que Delphi XE5 ha sacado una base de datos para moviles (creo que es InterBase).

Si alguno de ustedes ha manejado bases de datos grandes, tal vez pueda darme un consejo o alguna alternativa. Hice un cáculo muy somero y nada mas por el campo id en cien millones de registros con 10 bytes * 100,000,000 = 954mb! Es una base de datos enorme, considerando que se tiene que estar descargando cada día.

El problema no es el servidor, la empresa tiene los recursos para montar el servidor y el acceso a internet con las características necesarias. La situación son los empleados que estan regados en el pais y necesitan por internet estar descargando la BD cada dia.

Lo que he propuesto a la empresa es discriminar algunos registros en base a ciertos criterios para reducir el tamaño de la tabla. Y pues esta idea se consideró adecuada y la bajariamos a la mitad de registros tal vez. Pero bueno, ellos me piden que si es posible manejar toda la tabla, mejor.

Como ven? estan pidiendo un imposible?
Responder Con Cita
  #2  
Antiguo 12-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Todos los días cambian todos los registros de esa tabla?
¿Cuántos registros cambian?
Desde luego, descargar un giga diario por 500 personas, como que parece un poco bruto.
Responder Con Cita
  #3  
Antiguo 12-03-2014
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Sqlite con seguridad da la talla. Pero sigo sin ver porque hay que tener toda esa info instalada. No se podria filtrar por ruta o persona?
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 13-03-2014
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 darkerbyte Ver Mensaje

(1)* Sucede que necesito desarollar un proyecto movil para manejar solo una tabla con cuantro campos
(1)* Pero esta tabla debe manejar cien millones de registros.
(1)* Lo necesitan para una solución movil (ya sea tablet, smartphone o computadora movil) sin depender de internet.

(2)* Los trabajadores (como 500) cada mañana puedan descargar la BD actualizada para salir a recorrer las rutas.

Como ven?
¿Estan pidiendo un imposible?
Aquí veo dos cuestiones, los requerimientos y la solución.
Hay que decir que no conozco exactamente el problema, pero yo día que ambos son poco "realistas". Sinceramente no se quien los ha "pensado" pero no los veo muy lógicos.

(1)En cuanto a los puntos de "necesidades" de verdad que los veo orreales, por no decir rayando lo absurdo. Una aplicación móvil (pienso en tablet o smartphones -diferente es un ordenador móvil-) está pensada para ser un "cliente", pero no para contener una Base de Datos de 1 millón de registros; No me he equivocado, he dicho 1 millón, ya no te digo si hablamos de 100 millones.
No se si te va a caber, si la va a poder cargar, si la va a poder mover o si la va a poder consultar,... De todas ellas tengo grandes dudas.
Y aun así, si pudiera hacerlo (todas las operaciones) dudo más que sea correcto.

La única solución que le veo es la base de datos en el servidor y acceder a ella desde los dispositivos móviles (que para eso son dispositivos móviles) y consultarla. Pero resulta que son dispositivos móviles "sin movilidad" (= sin conexión). Otro despropósito.

Vuelvo a decir que no conozco el problema y tal vez esto sea la única solución, pero me cuesta mucho creerlo.

(2) Luego viene la solución... (agárrate los gallumbos!!)
=> Que los 500 trabajadores cada mañana se descarguen a los dispositivos móviles la Base de Datos de 100 millones de registros.
Al "lumbreras" que se le haya ocurrido esto (lo siento por si ha sido a tí -espero que no-) tenéis que hacerle empleado del mes. ¡Qué digo! del mes, ¡Empleado del año! Subirle el sueldo y ponerle coche de empresa!
¿De verdad que váis a copiar en los 500 dispositivos la BD? ¿Cuanto espacio es eso? ¿Cuanto tardaríais en hacer la copia? ¿Tendréis que parar el servidor? ¿Posibilidad de que se copie con errores? Sin hablar de que durante el día seguiría desactualizada...
¿Copiarís los 500 uno detrás de otro (el primero empieza a las 4 de la mañana y el último acaba a las 12 la copia)?
¿Los 500 a la vez?
¿Alguna de estas cosas la ha pensado el "lumbreras"?

Perdona que me lo tome un poco a cachondeo (no te ofendas), pero es que me recuerda a esas decisiones que a veces toman gente que NO TIENEN NI IDEA DE UN TEMA (sin pensar nada más y convencidos de que es la idea del siglo), en lugar de dejárselas a quien realmente sabe del tema.
Y sobre eso luego está alguien como tú, que tiene que pensar en una solución, que dado que la base es errónea va a fracasar en el 98% de los casos, y que se va a llevar las culpas por no saber hacer las cosas. Cosas "tan fáciles" como las que ha propuesto el "lumbreras".

Hablando en serio, le veo muchas "lagunas" a este plan y realmente creo que deberíais replantearoslo; O al menos si tienes algo de voz y voto, avisar de que se paren un momento a pensar antes de hacer determinadas cosas.

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.

Última edición por Neftali [Germán.Estévez] fecha: 13-03-2014 a las 15:43:37.
Responder Con Cita
  #5  
Antiguo 13-03-2014
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 mamcx Ver Mensaje
Sqlite con seguridad da la talla. Pero sigo sin ver porque hay que tener toda esa info instalada. No se podria filtrar por ruta o persona?
¿De verdad que SQLite en un Smartphone lo ves moviendo 100 millones de registros?
No quiero saber qué pasará si mientras haces la consulta te llaman...
__________________
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
  #6  
Antiguo 13-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Neftali Ver Mensaje
No quiero saber qué pasará si mientras haces la consulta te llaman...
Responder Con Cita
  #7  
Antiguo 13-03-2014
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.467
Poder: 21
newtron Va camino a la fama
Yo creo que después de tu discurso el amigo darkerbyte ha dejado la informática y se está planteando dedicarse a otra cosa.

Y ya fuera de coñas yo estoy totalmente de acuerdo en que es un proyecto inviable y que tendrían que buscar otra solución.
__________________
Be water my friend.
Responder Con Cita
  #8  
Antiguo 13-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Neftali Ver Mensaje
¿De verdad que SQLite en un Smartphone lo ves moviendo 100 millones de registros?
No quiero saber qué pasará si mientras haces la consulta te llaman...
Claramente expuesto.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 13-03-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bueno, la base medirá 1.2 GB aproximadamente. Será como transferir una peli al móvil cada día; tampoco es tanto tiempo

// Saludos
Responder Con Cita
  #10  
Antiguo 14-03-2014
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Unhappy Aqui doy mas detalles

Cita:
Empezado por newtron Ver Mensaje
Yo creo que después de tu discurso el amigo darkerbyte ha dejado la informática y se está planteando dedicarse a otra cosa...
Pues por poco y me orillan al suicidio

Por supuesto que el planteamiento del problema me pareció una barbaridad. Por eso acudo a ustedes, para que con su experiencia me puedan dar alguna idea de como atacar el problema de la empresa. Voy a ser mas claro en relación el problema.

La oficina de tránsito vehicular nacional quiere implementar una solución para dar a todos los policias de tránsito vehicular que andan en patrullas, en carretera.

Hace uno o dos años implementaron un sistema y les dieron a los oficiales unas tablets con un sistema que se conecta via internet a una base de datos donde el agente, utilizando el numero de placa podia:
1. Ver si el vehiculo tiene estado de robo
2. Ver si el vehiculo tiene alguna infracción
3. Ver si el vehiculo esta al corriente con sus pagos.

Pero la solución nunca funcionó y la inversión fue un total desperdicio porque en nuestro país generalmente no hay cobertura de red en la mayoria de las carreteras. Que decir de conexión 3G o LTE!

Despues del fracaso de este proyecto la oficina regresó a operar "a la antigua" El policia tiene que comunicarse por radio a la oficina y esperar a que algun agente de oficina conteste, haga la investigación del vehiculo y le confirme el estado del vehiculo. Esto significa mucha perdida de tiempo para los oficiales y para los conductores que generalmente se molestan por el tiempo que tardan en verificar el estado de su vehiculo.

Lo que me pidieron es si hay la manera de que cada oficial lleve una copia del sistema para que la consulta de la información la puedan hacer en el momento sin depender de la red ni de algun servicio remoto. (de hecho tambien me piden si se puede dotar al oficial con algun sistema de reconocimiento de placas para que no necesite estar capturando manualmente el numero de placa)

La idea para hacer mas liviano el sistema es solo indicar en la tabla el estado del vehiculo "reporte de robo, infracciones, pagos al corriente" en caso de que el vehiculo este "limpio" dejar marchar al ciudadano sin hacer perder mas tiempo. Si el vehiulo presenta alguna situacion de estas entonces ya se hace la llamada a oficina para solicitar todos los datos del vehiculo y hacer una inspeccion mas detallada, pero ya con causa justificada.

Lo que yo pense es que tal vez podriamos generar una base de datos de solo los vehiculos que si tienen alguna situación, de esta manera pienso yo que se rediciría el numero de registros a la cuarta parte. Y ya en oficina el servidor cada noche podría esta generarndo en modo bacth la base de datos a ser distribuida.

He echo mas investigación y en total serian unos 25 millones de registros (bueno antes eran 100) de ahi supongamos que la BD llegue a tener unos 10 millones de registros por vehiculos con alguna situación. Creen que 10 millones pueda ser posible??? Ademas no necesariamente seria una smarthphone


Cita:
Empezado por Neftali Ver Mensaje
¿De verdad que SQLite en un Smartphone lo ves moviendo 100 millones de registros?
No quiero saber qué pasará si mientras haces la consulta te llaman...
Mi estimado Neftali, el equipo sera destinado exclsivamente para el sistema. De echo el problema es precisamente que no hay cobertura, asi que no creo que le entren llamadas
Otra vez, el problema es que la infraestructura de comunicaciones en mi país aun no esta bien desarollada.

Lo que quiero es poder decir a la oficina "Definitivamente es inviable" pero hasta agotar todos los recursos
Responder Con Cita
  #11  
Antiguo 14-03-2014
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
10 millones es algo mas viable.

Hice un BD de prueba (no identico a lo que dices) con 100 millones y me dio mas de 8 GB (con indices y demas).

Con 10 millones 880 MB. Eso es mas viable.
__________________
El malabarista.
Responder Con Cita
  #12  
Antiguo 14-03-2014
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Que tal darkerbyte,
El proyecto puede ser viable, pero afinando los procesos de actualizacion de la base de datos, tanto la del servidor como las de los dispositivos mobiles, me explico.
1.- Solo vale la pena hacer la carga "completa" de toda la base de datos la primera vez, al dispositivo mobil.
2.- Las subsecuentes actualizaciones se deber de hacer por medio de un proceso de "sincronizacion", es decir solo actualizar los registros que hayan cambiado en los campos criticos para la aplicacion o bien los nuevos registros.
3.- La implementacion de la sincronizacion es la piedra angular: yo he resuelto esto por medio del manejor de versiones de los registros, de manera que aquellos registros cuyas versiones entre el dispositivo movil y la base de datos "real" difieran deben de ser actualizados.
4.- En mi caso nunca se hace un recorrido de la base en el dispositivo, siempre se tiene la ultima base de datos que se subió al dispositivo (algo asi como bd en dispositivo XYZ, en un disco duro local), la cual obviamente en tu caso va a ser una porcion de la BD "viva", lo cual alijera mucho actualizar las versiones de los registros modificados. De esta manera se sabe despues de haber hecho esta sincronizacion "local", cuales son los registros modificados o nuevos (que son muchisimo menos que el total) y son estos los que se "actualizan" ahora si en el dispositivo.
5.- En todo momento debes de guardar el estado de "ultima sincronizacion", tanto en la bd local (la bd reducida espejo del dispositivo en disco local) y la BD movil.

A grandes pasos eso es lo que en mi caso hemos implementado (me basé en la forma de operar de itunes por ejemplo, aunque no se si asi lo hace en realidad) y creeme que es muy confiable.

Saludos y mucha suerte.
__________________
Ya tengo Firma!
Responder Con Cita
  #13  
Antiguo 14-03-2014
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 darkerbyte Ver Mensaje
Mi estimado Neftali, el equipo sera destinado exclusivamente para el sistema. De echo el problema es precisamente que no hay cobertura, asi que no creo que le entren llamadas
Otra vez, el problema es que la infraestructura de comunicaciones en mi país aun no esta bien desarollada.
Lo que quiero es poder decir a la oficina "Definitivamente es inviable" pero hasta agotar todos los recursos
Gracias por la explicación Darkerbyte. Bueno así se aclaran un poco más ñas cosas, y algunas cosas que antes parecían no tener sentido, ahora al menos tienen una razón de ser (como el tema de la cobertura).
Ahora conociendo el problema es cuestión de "afinar" la solución.
__________________
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
  #14  
Antiguo 19-03-2014
Avatar de kaiserilich
kaiserilich kaiserilich is offline
Miembro
 
Registrado: mar 2010
Ubicación: planeta tierra
Posts: 42
Poder: 0
kaiserilich Va por buen camino
Exclamation

Cita:
Empezado por darkerbyte Ver Mensaje
Pues por poco y me orillan al suicidio...
emplea o bien un web service ó con datasnap en el que solicites la información y te regrese los datos especificos para el "coche/situación" y asi no tendras que descargar sino la información que requieras al dispositibvo movil en tiempo real y ya.
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
Arrays de millones de datos elcigarra OOP 8 13-10-2008 19:15:53
Puzzle de 2 millones de $$$ gluglu La Taberna 6 24-08-2007 20:36:45
1.600 millones !!! de Spam gluglu Noticias 1 30-01-2007 13:11:44
¿cómo puedo manejar los datos de una consulta si son varios registros? nuri SQL 3 18-07-2005 13:02:43
Insertar 8 millones de registros en interbase... nacho Firebird e Interbase 11 17-02-2005 21:34:01


La franja horaria es GMT +2. Ahora son las 00:02:36.


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