Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Evidentemente, ese proyecto es mucho más complejo de lo que parece, no es algo que se deba dejar en manos de novatos o incluso de personas sin muchísima experiencia, son bastantes factores a tener en cuenta.
Ahora bien, si hablas de escalabilidad, el consejo no me parece demasiado acertado, aconsejar MS sql server, es anclarse a windows, para siempre. Con todos los problemas que ello puede acarrear, y no ya sólo en costes de licencias de MS sql server y windows, que serán enormes.

Yo encuentro mucho más escalable usar lo que JAI_ME ha indicado, mysql, aunque por supuesto seleccionaría firebird o postgresql, totalmente escalable, que pueden pasar desde pequeños servidores windows hasta los más grandes superordenadores existentes, con linux, evidentemente.

El mantenimiento del sistema, para un caso como el descrito, creo que tampoco es demasiado complejo si se hace bien desde el inicio.

Pero, por supuesto, todo esto no son más que divagaciones porque JAI_ME no ha dicho nada de lo que realmente le han pedido.


Escalabilidad:
En telecomunicaciones y en ingeniería informática, la escalabilidad es la propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para extender el margen de operaciones sin perder calidad, o bien manejar el crecimiento continuo de trabajo de manera fluida, o bien para estar preparado para hacerse más grande sin perder calidad en los servicios ofrecidos.

Por ejemplo, un sistema de procesamiento y transacción en línea o un sistema administrador de base de datos escalable pueden ser actualizados para poder procesar más transacciones añadiendo por medio de nuevos procesadores, dispositivos y almacenamiento que se pueden implementar fácil y transparentemente sin apagarlos.

Última edición por Casimiro Noteví fecha: 24-03-2012 a las 22:08:26.
Responder Con Cita
  #2  
Antiguo 25-03-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Mi ERP es multiempresa.
En una tabla se definen las empresas y a cada una se le asigna un ID.
En casi todas las demás tablas, agrego este ID para identificar a qué empresa pertenece el dato. Por ejemplo Clientes tiene una estructura
ID_EMPRESA, ID, NRO_CLIENTE, NOMBRE, ...
Si haces un índice en las tablas que tenga en cuenta primero el ID de la escuela y luego el ID de la tabla no deberías tener ningún problema.
En el caso anterior, el indice es ID_EMPRESA, ID.
Tengo tablas con millones de registros y la búsuqeda indexada no tarda nada (milisegundos)
Trabajo con Firebird y te lo recomiendo!

Pequeño ejemplo de como yo armaría la base de datos:
ESCUELA : ID, NOMBRE, DATOS ...
PROFESOR: ID_ESCUELA, ID, NOMBRE, DATOS ...
CLASE : ID_ESCUELA, ID, HORARIO, ID_PROFESOR, DATOS ...
MATERIA : ID_ESCUELA, ID, NOMBRE, DATOS ...
ALUMNO : ID_ESCUELA, ID, NOMBRE, DATOS ...
//Clases a las que asiste un alumno
ALUMNO_CLASE : ID_ESCUELA, ID_ALUMNO, ID_CLASE
//Control de asistencia a las clases
ALUMNO_ASISTENCIA : ID_ESCUELA, ID_ALUMNO, ID_CLASE, FECHA, ...
Responder Con Cita
  #3  
Antiguo 26-03-2012
JAI_ME JAI_ME is offline
Miembro
 
Registrado: ene 2006
Posts: 188
Poder: 21
JAI_ME Va por buen camino
Gracias a todos por sus comentarios, la verdad me gusta mucho mysql y mucho mas firebird por su ambiente gráfico, en un proyecto configure php con firebird y me funciono perfecto, la cuestión es que no estoy seguro que la empresa donde alojare la pagina brinde el servicio con firebird, pienso comprar el servidor ya que estoy de acuerdo con lo que dice mamcx en cuanto a copias de seguridad, mantenimiento del servidor, etc, etc. eso es un verdadero dolor de cabeza y un gran mundo aveces costoso, soy responsable de esa información y ese trabajo se lo quiero dejar a la empresa con la que contrate.

Lo que agrego nuestro amigo duilioisola me gusto por lo menos ya tengo una referencia que no se cuelga y funciona bien teniendo muchísima información y mas con un motor de base datos gratuito como firebird.

Comparto muchísimas opiniones con Casimiro Notevi me gusta mas lo libre que windows sin demeritarlo.

Cita:
Empezado por duilioisola Ver Mensaje

Pequeño ejemplo de como yo armaría la base de datos:
ESCUELA : ID, NOMBRE, DATOS ...
PROFESOR: ID_ESCUELA, ID, NOMBRE, DATOS ...
CLASE : ID_ESCUELA, ID, HORARIO, ID_PROFESOR, DATOS ...
MATERIA : ID_ESCUELA, ID, NOMBRE, DATOS ...
ALUMNO : ID_ESCUELA, ID, NOMBRE, DATOS ...
//Clases a las que asiste un alumno
ALUMNO_CLASE : ID_ESCUELA, ID_ALUMNO, ID_CLASE
//Control de asistencia a las clases
ALUMNO_ASISTENCIA : ID_ESCUELA, ID_ALUMNO, ID_CLASE, FECHA, ...
En cuanto a las relaciones que nos regalo nuestro amigo duilioisola pienso que no tendría problemas en cuanto a velocidad si quito los id_escuela de la tabla alumno_clase, alumno_asistencia, ustedes me dirán.

ESCUELA : ID, NOMBRE, DATOS ...
PROFESOR: ID_ESCUELA, ID, NOMBRE, DATOS ...
CLASE : ID_ESCUELA, ID, HORARIO, ID_PROFESOR, DATOS ...
MATERIA : ID_ESCUELA, ID, NOMBRE, DATOS ...
ALUMNO : ID_ESCUELA, ID, NOMBRE, DATOS ...
//Clases a las que asiste un alumno
ALUMNO_CLASE : ID_ALUMNO, ID_CLASE
//Control de asistencia a las clases
ALUMNO_ASISTENCIA : ID_ALUMNO, ID_CLASE, FECHA,


Se me olvidaba preguntarles si conocen una buena empresa hosting que tenga un servicio excelente, y donde pueda configurar firebird.

gracias a todos.
__________________
JaiMelendez

Última edición por JAI_ME fecha: 26-03-2012 a las 16:30:17.
Responder Con Cita
  #4  
Antiguo 26-03-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por JAI_ME Ver Mensaje
En cuanto a las relaciones que nos regalo nuestro amigo duilioisola pienso que no tendría problemas en cuanto a velocidad si quito los id_escuela de la tabla alumno_clase, alumno_asistencia, ustedes me dirán.
La velocidad no cambiaría nada, pero es que ¡¡¡no puedes quitarlo!!! si quieres tener controlado qué pertenece a cada escuela, porque todas van a estar en una misma BD.
Responder Con Cita
  #5  
Antiguo 26-03-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Cita:
Empezado por JAI_ME Ver Mensaje
Se me olvidaba preguntarles si conocen una buena empresa hosting que tenga un servicio excelente, y donde pueda configurar firebird.
Creo que ningún PaaS ofrece Firebird por el momento. DotCloud lo tiene en sus planes.

Con respecto a del servicio "excelente", creo que el único excelente en el PaaS es Google AppEngine. Lo único malo y por lo que se quejan algunos (malos) desarrolladores es que tienes que cambiar tu forma de pensar para poder desarrollar una aplicación para este servicio.

Pero apartando cuál PaaS usar, quiero mencionar algo que nadie ha comentado. Si quieres una aplicación escalable, usa memcache lo más que puedas. Aunque contrates el mejor PaaS, sino utilizas memcache tu aplicación nunca será escalable y te saldrá muy pero muy costosa mantenerla.

Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #6  
Antiguo 26-03-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.939
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por JAI_ME Ver Mensaje
En cuanto a las relaciones que nos regalo nuestro amigo duilioisola pienso que no tendría problemas en cuanto a velocidad si quito los id_escuela de la tabla alumno_clase, alumno_asistencia, ustedes me dirán.
Si quitas esos campos entonces pierdes la integridad referencial.

Como te escribi solo hay dos escuelas: O pones todo en una tabla y particionas por un(os) campo(s) como los que te pusieron o particionas por base de datos.

En el primero, si la BD se crece mucho (mucho es mucho: millones y millones) y no tienes RAM para cargar los indices en memoria y el motor no lo aguanta, se quedaria "colgado". En esta escuela, debes saber poner indices y ser muy juicioso en el manejo de los SQL para cargar solo lo necesario, debes por todos lados injectar los campos que particionan la tabla y hay JOINS a lo loco. Los backups son dificiles: Como sacas solo un colegio? Y los restore peor aun. Pero es facil hacer reportes. Y hacer cambios globales, como agregar un campo. Pero replicar es mas simple ya que es solo un BD.

La otra escuela, requiere mayor complejidad de administracion (ej: hacer backups, o sea configurarlos N veces), pero los datos son aislados de forma natural, puedes mover de forma simple los datos de una empresa, puedes meter facilmente varios servidores y escalar facil porque mueves unas empresas al uno y otras al otro, pero hacer reportes es un lio (y con FB no veo como sacar una consulta que agrupe muchas BD) y los cambios en los esquemas hay que repetirlo por N bd, sin un pool de conexiones pierdes velocidad al estar conectando y desconectando a N bd, los planes de ejecucion los pierdes al moverte entre BD, etc.. El codigo es mas simple (no hay que injectar campos ni tanto join) y las consultas salen mas facil y rapido. Gastas mas espacio en disco, y ram. O no. Es difcil adivinarlo.

Eso es pa empezar.

Cita:
Empezado por JAI_ME Ver Mensaje
Se me olvidaba preguntarles si conocen una buena empresa hosting que tenga un servicio excelente, y donde pueda configurar firebird.
Especificamente sobre FB no se, pero www.mediatemple.net, www.rackspace.com son muy buenas. Rackspace tiene soporte tecnico de lujo.

P.D. Quizas sea buena idea que evalues postgres. Su concepto de lo que es una BD encaja muy bien con la escuela de "bd por compañia" y a la vez es viable hacer un query a todas las BD. De hecho, postgres es asi:

Una BD = Un cluster de "esquemas". Un esquema en postgres = Una bd en mysql, firebird.

Por lo tanto, queda una sola instancia de BD que configurar y administrar, y tienes un poco mas simple el manejo de los esquemas. Ademas, tienes opcion de usar https://postgres.heroku.com/, que es la razon #1 por la que estoy con postgres ahora. Ya depende que economicamente te de resultado.
__________________
El malabarista.

Última edición por mamcx fecha: 26-03-2012 a las 18:24:39.
Responder Con Cita
  #7  
Antiguo 28-03-2012
JAI_ME JAI_ME is offline
Miembro
 
Registrado: ene 2006
Posts: 188
Poder: 21
JAI_ME Va por buen camino
Gracias de nuevo, al parecer lo haré todo en una sola base de datos, pero sigo teniendo la duda, mysql o postgresql.

en cuanto a la relaciones anteriores

Cita:
Empezado por mamcx Ver Mensaje
Si quitas esos campos entonces pierdes la integridad referencial.
No se porque se perdería la integridad referencial, si por lo menos la tabla ALUMNO_CLASE tiene el id del alumno y lo puedo relacionar con el ID de la tabla alumno y esta ultima me dice a que escuela pertenece. Lo mismo con la tabla ALUMNO_CLASE

saludos a todos.
__________________
JaiMelendez
Responder Con Cita
  #8  
Antiguo 28-03-2012
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
Tienes razón, esos campos no son necesarios en esas tablas.

Por otro lado, quizá debas considerar el caso en que un profesor de clase en varias escuelas o un alumno tome cursos en varias escuelas.

// Saludos
Responder Con Cita
  #9  
Antiguo 28-03-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.939
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por JAI_ME Ver Mensaje
Gracias de nuevo, al parecer lo haré todo en una sola base de datos, pero sigo teniendo la duda, mysql o postgresql.
Puedes mirar

http://wiki.postgresql.org/wiki/MySQL

http://stackoverflow.com/questions/1...ls-environment

http://stackoverflow.com/questions/1...sql-over-mysql

En lineas generales? MySql esta optimizado para ser rapido en lecturas a costas de integridad de datos, a menos que se use un motor de almacenamiento diferente. Ya que la seleccion del almacenamiento altera el funcionamiento, hay cosas que funcionan de una manera u otra. Basicamente, mysql muy bueno para hacer paginas web, pero no para datos transaccionales.

Postgres es mas orientado a ser robusto a nivel transaccional y le dan mucha prioridad a la estabilidad de datos. Un punto a favor es que postgres es una comunidad unificada - incluso quienes comercialmente trabajan sobre postgres como EnterpriseDB- mientras MySql ahora es una serie de "forks" en especial MySql original que lo mantiene Oracle y MariaDB que es el intento por ser mas opensource.

Como notas por las referencias que te doy, estoy mas inclinado a Postgres. Lo estoy usando ahora, y me ha sorprendido: Tiene un esquema de programacion muy flexible y potente. Me parece que es rapido, facil de configurar y flexible a lo loco. La unica cosa que tiene MySql es su facilidad para hacer un esquema de Maestro de escritura-Esclavos de solo lectura que es ideal para escalar sitios web, pero desde la version 9.1 toda la historia de la escalabilidad horizontal de postgres se ha vuelto mucho mejor.

En general, si estas acostumbrado a Sql Server y/o Firebird, pienso que postgres es mejor alternativa. Casi todo lo que hago con Sql Sever a nivel de BD (Sql server tiene otras cosas que no tienen los motores opensource) lo hago en postgres. Incluso me pregunto: Sera que podria en postgres hacer esto? Y puff! resulta que si.

Un punto muy bueno son sus modulos:

http://www.postgresql.org/docs/9.1/static/contrib.html

Hay modulos para hacer cosas muy potentes. Dale una mirada.
__________________
El malabarista.
Responder Con Cita
  #10  
Antiguo 28-03-2012
JAI_ME JAI_ME is offline
Miembro
 
Registrado: ene 2006
Posts: 188
Poder: 21
JAI_ME Va por buen camino
Gracias Roman, en conclusión definitivamente php-postgresql y una sola base de datos ? en caso que ustedes los fueran a desarrollar
__________________
JaiMelendez

Última edición por JAI_ME fecha: 28-03-2012 a las 19:22:25.
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
Sugerencia ricardo_yah OOP 10 06-11-2010 03:17:59
Una sugerencia... david_uh Varios 6 06-06-2007 20:10:10
Una sugerencia por favor Sugerencia !! yepixxx Firebird e Interbase 6 13-03-2007 19:07:10
Sugerencia turminator Varios 2 30-06-2006 19:42:28


La franja horaria es GMT +2. Ahora son las 08:07:56.


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