Re: Sistema multiempresa

18/10/2004 - 04:29 por MAXI | Informe spam
Hola, el tema es interesante de discutir :-)

A ver, vos me decis que por cada BDD armas los SP necesarios y ademas tenes
uno que consolida que recorre las BDD (como?) y que todo esto es mejor que
poner todo junto?

A ver, no se cual es tu experiencia, pero yo suelo ser una persona que me
gusta ver lo que hacen las grandes empresas y ver que puedo copiar y que
cosa no :-p

Una de las cosas que aprendi en todo estos años, es que los ERP mas grandes
del planeta (conozco una instalacion SAP que superar los 5TB) tienen todo en
una sola BDD (el multiempresa) y nunca dividen en varias BDD.

Esto basicamente por todo lo que comente antes y que vos bien dijistes,
debes cambiar el SP de consolidacion y ademas tenes otros problemas como por
ej:

La integridad Referencial.

Esta ultima la debes armar con Trigger y no vas a poder usar FK.

Ahora bien, esto de dividir las cosas es una idea y practica de muchos
developer (sobre todo Fox) porque hay una cosa que es cierta:

Fox - Access o cualquier bdd de este tipo trabajn muy pero muy distinto a
SQL - Oracle u DB2 por ej.

Entonces se aplican las viejas tecnicas en un motor como SQL, cuando poner
una columna es algo muy simple de verdad y no se complica ninguna consulta
te lo aseguro.

Mira, el ERP que tenemos en la empresa tambien esta armado asi y no es SAP,
y tenemos mas de 10 empresas dentro y te digo que es algo simple y no hay
ningun tipo de confusion :-)


Vuelvo a repetir, no veo ningun beneficio en dividir las empresas en mas de
una BDD!! podrias exponer vos que ventajas le ves a ese modelo? porque yo ya
expuse las desventajas y las ventajas del otro modelo :-)






Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager: Maxi_adrogue@msn.com





Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager: Maxi_adrogue@msn.com

Preguntas similare

Leer las respuestas

#1 Ricardo Passians
18/10/2004 - 06:15 | Informe spam
Mostrar la cita
tenes
Mostrar la cita
Mala interpretacion. No tengo un SP de consolidación. Hago el proceso
desde mi aplicación (el front-end) que es unir los resultados devueltos por
la llamada a los sp's de cada BD. Los SP's trabajan sobre la propia BD en
que residen. El recorrido no lo hago en un SP, lo hago desde mi aplicación,
en ésta también se programa no ? :)

Mostrar la cita
grandes
Mostrar la cita
en
Mostrar la cita
No lo discuto, esos ERPs son super aplicaciones con años de depuración y
gran cantidad de personal de control de calidad. Pero para los que tenemos
pequeñas empresas y no más de 5 programadores, sólo digo que la programación
tiende a ser más compleja y propensa a errores por el simple hecho de tener
que filtrar cada query con la columna "empresa". Y si aparte de empresa,
ya tenemos una variable como "Division" o "Centro de Costo", solo hay que
imaginarse:)

Mostrar la cita
por
Mostrar la cita
Error.. No hay un SP de consolidacion, como digo arriba. Consolido los
resultados en la aplicación.

Mostrar la cita
Claro que sí porque la integridad referencial es dentro de las tablas de
cada BD. Ahora bien, si es que hablas de tablas comunes a varias
empresas, bueno ya eso es otra cosa pero, puedes tenerlas en la base de
datos del sistema que seria otra o en su defecto copiar los datos a medida
que se modifiquen. Normalmente las tablas que se hacen comunes no son tablas
de operaciones, sino tablas maestras como de clientes, articulos, etc..
Pero para tu caso, teniendo todo junto, me imagino que sería más complicado
hacer cada vez una excepción de no filtrar la empresa cuando se trate de una
tabla comun.

Mostrar la cita
Es claro.. Eso no se discute. Hablé de una manipulación local en Visual
Foxpro de datos devueltos desde el servidor SQL. Esta manipulación aunque
afecta el desempeño final para el usuario, no afecta el rendimiento del
servidor que interfiera con los demás usuarios.

Mostrar la cita
Bueno, cuestion de opinion para mi tener que agregar un AND en cada WHERE y
cada JOIN para incluir la empresa me parece complicado y aumenta la
posibilidad de errores, aunque entiendo que pueda ser lo ideal tenerlo así.

Mostrar la cita
SAP,
Mostrar la cita
de
Mostrar la cita
Bueno, amigo, aunque lo digas como si fuera una sentencia, la tuya es
también una opinión subjetiva, igual que la mia. La respeto pero no la
comparto.

Mostrar la cita
La ventaja para mi es que programo la aplicación simplemente ignorando el
parámetro "empresa", desarrollando así consultas, búsquedas, combinaciones,
sp's, más sencillos que permitan mejor RAD y menos posibilidad de cometer
errores. Eso para mi es más que suficiente ventaja. Otra ventaja sería
excluir la necesidad de índices sobre la columna "empresa" sobre todo en
tablas de muchos registros, peor aún si ya existe otra variable como
"division" o "centro de costo".
#2 Berta Gomez
18/10/2004 - 06:26 | Informe spam
Hola Ricardo.

Aunque yo no puedo quizas opinar a profundidad porque no tengo mucha
experiencia me parece logico eso que dices en mi caso las empresas son
totalmente independientes osea no hay tablas compartidas. Por tanto pienso
que se aplica mejor a mi caso tener bases separadas por empresas.


Berta Gomez


"Ricardo Passians" wrote in message
news:
Mostrar la cita
que
Mostrar la cita
por
Mostrar la cita
en
Mostrar la cita
aplicación,
Mostrar la cita
me
Mostrar la cita
todo
Mostrar la cita
tenemos
Mostrar la cita
programación
Mostrar la cita
tener
Mostrar la cita
tablas
Mostrar la cita
complicado
Mostrar la cita
una
Mostrar la cita
a
Mostrar la cita
poner
Mostrar la cita
consulta
Mostrar la cita
y
Mostrar la cita
así.
Mostrar la cita
hay
Mostrar la cita
combinaciones,
Mostrar la cita
#3 Maxi
18/10/2004 - 14:26 | Informe spam
ok Ricardo, no usas SP por lo que veo que estas accediendo a las tablas de
forma directa verdad? bueno aca vamos a seguir discutiendo porque para mi no
es ideal que una sesion acceda a la tabla de forma directa.

Desarrollar las consultas en la aplicacion haran que la misma sea lenta e
insegura, pero si haces eso entonces el logico tu razonamiento de dividir
las BDD por empresa ;-)

Y disculpame una opinion: yo tambien desarrollo sistemas pequeños, pero no
por eso voy a dejar las buenas practicas de programacion de lado, que
pasaria si tu sistema mañana crece mucho? el proceso de consolidacion se
transformaria en un cuello de botella bastante importante no?

Pero bueno, no usas SP y usas cursores del lado del cliente

Creo que nada mas por decir... quizas algun guru de este news se prenda en
la discusion :-)




Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Ricardo Passians" escribió en el mensaje
news:
Mostrar la cita
que
Mostrar la cita
por
Mostrar la cita
en
Mostrar la cita
aplicación,
Mostrar la cita
me
Mostrar la cita
todo
Mostrar la cita
tenemos
Mostrar la cita
programación
Mostrar la cita
tener
Mostrar la cita
tablas
Mostrar la cita
complicado
Mostrar la cita
una
Mostrar la cita
a
Mostrar la cita
poner
Mostrar la cita
consulta
Mostrar la cita
y
Mostrar la cita
así.
Mostrar la cita
hay
Mostrar la cita
combinaciones,
Mostrar la cita
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004
#4 Maxi
18/10/2004 - 14:27 | Informe spam
Berta, entonces lo que vos estas pidiendo en multibase y no multiempresa
:-p, son 2 cosas totalmente distintas y si es multibase (o sea que el
sistema pueda tener mas de una BDD con la que puedas trabajar).


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Berta Gomez" escribió en el mensaje
news:
Mostrar la cita
BD
Mostrar la cita
que
Mostrar la cita
empresa,
Mostrar la cita
que
Mostrar la cita
dijistes,
Mostrar la cita
como
Mostrar la cita
medida
Mostrar la cita
distinto
Mostrar la cita
Visual
Mostrar la cita
aunque
Mostrar la cita
WHERE
Mostrar la cita
mas
Mostrar la cita
el
Mostrar la cita
cometer
Mostrar la cita
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004
#5 Maxi
18/10/2004 - 15:00 | Informe spam
Hola, interlineado ;-)


Mostrar la cita
por
Mostrar la cita
en
Mostrar la cita
aplicación,
Mostrar la cita
Aja, bien o sea accedes a las tablas de tu sistema de forma directa, con el
inicio de sesion verdad. Como haces para que un usuario (sesion) no acceda a
esas mismas tablas desde un Excel? Ademas si no usas un SP y estas pasando
la informacion al cliente estas saturando enormemente la RED con datos
totalmente redundantes.

Mostrar la cita
tenemos
Mostrar la cita
programación
Mostrar la cita
tener
Mostrar la cita
Tu sistemas hoy puede ser pequeño pero mañana enorme, no puedes copiar todo
lo que hacen los grandes, pero si vas a trabajar con SQL-Server te aseguro
que estas tecnicas las tiene un sistemita pequeño tambien!! ahora si
trabajas con Fox o Access la historia es otra.

Mostrar la cita
Vuelvo a repetir, pasas todos los datos de un lado al otro (saturando
enormemente la RED).

Sabes que en ADO.NET 2.0 no existen mas los cursores? te imaginas porque?
justamente para que los developer no hagan tu tecnica que es para nada
recomendada. Porque tener las cosas duplicadas si ya estan en un
repositorio?
Porque saturar la RED?


Mostrar la cita
tablas
Mostrar la cita
complicado
Mostrar la cita
una
Mostrar la cita
Si la de las mismas BDD ok pero las tablas compartidas no, por lo cual o
debes aplicar TR con los problemas de mantenimiento que lleva no. En sql2k
la forma natural de hacer Integridad referencial es por medio de Claves
Externas y no por TR

Mostrar la cita
Seguro que no afecta el servidor? pone un contador de transferencias de RED
y contame ;-). Lo afecta porque estas haciendo pasar los datos completos de
un lado al otro por tu RED y seguramente si estas haciendo muchos SELECT *
FROM el servidor esta haciendo Table Scan y esto afecta enormemente el
rendimiento del servidor.


Mostrar la cita
y
Mostrar la cita
así.

El tema aca no se trata de si es complicado para el developer o no, si estas
montando tu sistema en un SQL-Server (motor de Base de Datos Relacional) lo
que debes hacer es que este recurso sumamente critico y un gran cuello de
botella funcione de la mejor forma posible. Ademas pensa que en una empresa
no solo puede estar tu sistema, quizas en ese servidor tengan BDD de otros
sistemas y si el tuyo afecta al rendimiento global del servidor, vos que
pensas que puede pasar?

Tu punto de vista es valido para Fox que no es una BDD corporativa, ahora en
ambientes corporativos no se debe trabajar asi.

Mostrar la cita
Subjetiva? te parece? yo te di miles de razones por las que no es
aconsejable hacer todas las tecnicas que vos estas exponiendo :-)


Mostrar la cita
combinaciones,
Mostrar la cita
Bien , es una ventaja para el developer verdad? ahora si usaras SP que es lo
que se deberia utilizar para consolidar por ej, ya las "ventajas" no son
tantas, porque como te dije antes, deberias ir cambiando el SP mientras
agregas empresas o borras.

Digamos que en tu forma de trabajar es logico tu razonamiento, pero como no
estas aplicando muchas de las buenas practicas recomendadas de BDD (en
Sql-Server) es como que el unico sustento que tienen es la comodidad a costa
de Seguridad y Performance.

Un fuerte abrazo



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004
Ads by Google
Search Busqueda sugerida