Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Otro";
Archivo actual: 2006.11.12;
Descargar: [xml.tar.bz2];

abajo

¿Qué tareas deben resolverse con la ayuda de HP? Encontrar ramas similares


Курдль ©   (2006-10-25 10:57) [0]

Como continuación del tema del diseño web, se destacó la cuestión de la idoneidad de la aplicación de HP. Además, es una alternativa con la ejecución de la lógica empresarial en el servidor de aplicaciones.
Mi posición es a favor del servidor de aplicaciones.
Mi objetivo no es desafiar las declaraciones de nadie, sino en una disputa aclararme las perspectivas de la lógica del servidor de programación y las opciones para aplicar ciertos métodos.



Курдль ©   (2006-10-25 10:58) [1]


> Igor Shevchenko © (25.10.06 10: 41) [53]
> Por ejemplo, minimizando el intercambio de datos entre un cliente y un servidor,
> Reducir la carga en la red es una tarea obvia.
> El control de acceso es otro.

Todo esto puede ser perfectamente administrado por el servidor de aplicaciones, no por el servidor DBMS. Quizás al mismo tiempo, habrá más "caminar" entre el servidor de aplicaciones y el servidor de la base de datos (varios por ciento, pero no del todo).



Jeer ©   (2006-10-25 12:03) [2]

En realidad, las ventajas de los tres enlaces son más o menos conocidas y comprensibles.
Muchos monstruos domésticos lo cambiaron.

La idea principal es "adelgazar" al cliente y permitir el uso de canales "muertos", toda la lógica de negocios en appsrv, que permite incluso la actualización sobre la marcha, el DBMS realiza su trabajo de rutina.



Курдль ©   (2006-10-25 12:15) [3]


> Jeer © (25.10.06 12: 03) [2]
> La idea principal es "adelgazar" al cliente y permitir el uso
> canales "muertos", toda la lógica de negocios en appsrv, que permite
> realizar incluso actualizaciones sobre la marcha; DBMS realiza su rutina
> trabajo.

A pesar de que el servidor de aplicaciones necesita ser recompilado para realizar cambios, y la lógica del servidor de la base de datos se puede cambiar usando el DBMS, creo que el soporte de la lógica de negocios en el servidor de aplicaciones es más simple y confiable, porque se ajusta al concepto arquitectónico general de toda la aplicación.



saxon   (2006-10-25 12:34) [4]


> En la continuación del tema del diseño web, se destacó una pregunta
> sobre la conveniencia de usar CP. Y está en la alternativa
> con la ejecución de la lógica de negocios en el servidor de aplicaciones.

¿Y todo esto en la web? Apenas razonable.



Игорь Шевченко ©   (2006-10-25 12:38) [5]

© Kurdl (25.10.06 10: 58) [1]


> Todo esto puede ser perfectamente gestionado por el servidor de aplicaciones,
> no es un servidor DBMS. Quizás en este caso entre el servidor de aplicaciones
> y el servidor de bases de datos "caminará" más (varios
> por ciento, pero no en absoluto).


El cliente puede gestionar todo esto, ¿verdad?

Es solo que los desarrolladores del servidor de la base de datos probablemente coman su pan por una buena razón, y no entiendo cuál es el punto de cambiar a una tarea de aplicación independiente que el servidor manejará más rápido.
El tío Kite en el libro "Diseño efectivo de aplicaciones de Oracle" sobre este tema habla de manera bastante inequívoca y razonable, con imágenes y ejemplos.



Игорь Шевченко ©   (2006-10-25 12:39) [6]


> Considero más la compatibilidad con la lógica empresarial en el servidor de aplicaciones
> simple y confiable, como encaja en la arquitectura general
> la idea de toda la aplicación.


Explica los términos "ajuste" e "idea arquitectónica", por favor.



Курдль ©   (2006-10-25 12:53) [7]


> Igor Shevchenko © (25.10.06 12: 39) [6]
> Los términos "ajuste" y "idea arquitectónica" explican, por favor.


No consideraré otras formas de crear aplicaciones que no sean las orientadas a OOP que conozco.

Entonces, en él, se desarrolla un modelo de sistema mediante métodos complejos de separación en módulos, separación en niveles y creación de clases de objetos.
Además, hay una selección y agrupación de módulos, clases, métodos adecuados para su reutilización en otros proyectos. También
Se utilizan patrones de diseño.
Por lo tanto, la mayoría de las veces el trabajo con datos está limitado por el nivel de servicios técnicos e involucra el modelo más simplificado de grabación / almacenamiento / selección.



kaif ©   (2006-10-25 12:58) [8]

No entendí la pregunta.
¿Son los "procedimientos almacenados" de HP?
Si es así, HP forma parte del arsenal del servidor de la base de datos, independientemente de si se utiliza un enlace de tres o dos enlaces.

Supongamos que tengo un acumulador de visitas a los pacientes del médico con categorías y tales visitas y fechas. Y me gustaría construir un rango de brechas (en días) entre visitas. Que debo hacer Por supuesto, puedo refinar toda esta enorme tabla en alguna aplicación de servidor y ocuparme del espectro allí. Puedo intentar llegar a mis oídos y obtener una variedad de consultas SQL. Más precisamente, puedo hacerle una pregunta a Johnmen y, tal vez, se le ocurrirá cómo hacerlo, probablemente no lo haré.
Pero puedo hacerlo más fácil.
Escriba, por ejemplo, en IB el siguiente procedimiento:

CREAR PROCEDIMIENTO VISIT_INTERVAL_SPECTRUM (CATEGORY INTEGER)
DEVOLUCIONES (VISIT_INTEVAL INTEGER)
AS
DECLARAR VARIABLE FECHA ANTERIOR FECHA;
DECLARAR VARIABLE FECHA DE VISITA FECHA;
EMPEZAR
FECHA ANTERIOR = NULO;

PARA SELECCIONAR
FECHA DE VISITA
DE
VISITA DEL PACIENTE
Donde
CATEGORÍA =: CATEGORÍA
ORDENAR POR
FECHA DE VISITA
EN: FECHA DE VISITA
Hacer
COMIENZA
VISIT_INTEVAL = VISIT_DATE - PREVIOUS_DATE;
SI (FECHA ANTERIOR NO ES NULO) ENTONCES
Suspender
PREVIOUS_DATE = VISIT_DATE;
Fin
FIN

Después de lo cual recibiré un espectro para la categoría 13 con una consulta SQL a este XP:

SELECCIONAR
VISIT_INTEVAL, COUNT (*)
DE
VISIT_INTERVAL_SPECTRUM (13)
GRUPO POR VISITA_INTEVAL

Me parece que esta es una tarea obvia para el servidor de bases de datos, y no para el servidor de aplicaciones o el cliente de dos niveles.
Por lo tanto, existe una aplicación para CP, independientemente de si se utilizan dos o tres enlaces.



Игорь Шевченко ©   (2006-10-25 13:02) [9]

© Kurdl (25.10.06 12: 53) [7]


> Por lo tanto, la mayoría de las veces el trabajo con datos está limitado por nivel
> servicios técnicos y sugiere el más simplificado
> escribir / almacenar / seleccionar modelo.


Es fácil de desarrollar, pero improductivo y no escalable.



Курдль ©   (2006-10-25 13:04) [10]


> kaif © (25.10.06 12: 58) [8]
> Puedo intentar llegar a mis oídos y obtener un rango de consultas SQL.


Esto es exactamente lo que hay que hacer. En la mayoría de los casos, la creación de HP está dictada por la renuencia a molestarse con la solicitud.



Игорь Шевченко ©   (2006-10-25 13:06) [11]

© Kurdl (25.10.06 13: 04) [10]


> Esto es exactamente lo que hay que hacer. En la mayoría de los casos, la creación de
> HP está dictado por la renuencia a molestarse con la solicitud.


¿Es así como te deshaces de los competidores potenciales? :)



Курдль ©   (2006-10-25 13:06) [12]


> Igor Shevchenko © (25.10.06 13: 02) [9]
> Es fácil de desarrollar, pero improductivo y no escalable.


Me cansé de un malentendido. ¿Qué es "improductivo"?
¿Qué acciones se realizan y con cuántos datos comienzan los problemas de rendimiento?



saxon   (2006-10-25 13:06) [13]


> En la mayoría de los casos, la creación de HP está dictada por la renuencia
> Meterse con la solicitud.

Extraño, siempre pensé exactamente lo contrario. :)



kaif ©   (2006-10-25 13:08) [14]

Más que eso.
Puedo desarrollar este HP un poco más al hacer que devuelva los campos CATEGORY, VISIT_INTERVAL para todas las categoriassi se le pasa un parámetro NULL.
Y escriba otro CP para consultar todos los espectros a la vez, lo que causará ese CP.
Y luego escriba otro CP, que llamará CP, solicitando espectros listos y devolviendo un valor
MAX (VISIT_INTERVAL), MIN (VISIT_INTERVAL), AVG (VISIT_INTERVAL)
con agrupación por categorías.

Resolveré todos estos problemas en unos minutos simplemente creando todos los nuevos HP.
Obtendré mucho más tiempo y un código mucho menos eficiente si trato de resolver estos problemas usando una aplicación de servidor.

Aunque, por cierto, todo esto es tan fácil precisamente en IB, gracias a algo como SUSPENDER y la capacidad de manejar conjuntos resentidos por HP como tablas simples.

No sé cómo con otros servidores. Quizás en MS SQL tendrá que implementarse en cursores ... Pero incluso allí tiene sentido limitarse al menos al primer XP. que describí Dado que el modelo relacional no permite que la frente obtenga un rango de intervalos de valores de un conjunto ordenado. Y tales tareas a menudo surgen.



Игорь Шевченко ©   (2006-10-25 13:08) [15]

© Kurdl (25.10.06 13: 06) [12]


> Me cansé de un malentendido. ¿Qué es "improductivo"?
>
> Qué acciones se están tomando y cuántos datos
> ¿Cuándo comienzan los problemas de rendimiento?


Y Ashot en [8] te dio un ejemplo ...



kaif ©   (2006-10-25 13:10) [16]

© Kurdl (25.10.06 13: 04) [10]
Esto es exactamente lo que hay que hacer. En la mayoría de los casos, la creación de HP está dictada por la renuencia a molestarse con la solicitud.


En la mayoría, pero no en este.
Si piensa lo contrario, le pediré el texto de la solicitud para un intervalo de fechas, o al menos su idea para el estudio.
De lo contrario, estas son palabras vacías.



Desdechado ©   (2006-10-25 13:10) [17]

En mi humilde opinión, cada parte del enlace múltiple debe hacer lo suyo.
1 DBMS: datos de dirección, derechos, integridad, almacenamiento, acceso.
2 Servidor de aplicaciones: selección de lógica empresarial.
3 Cliente: tome decisiones e ingrese / reciba resultados.

Hay opciones cuando la lógica de negocios significa moler todos los datos en la base de datos para obtener una docena de números. Esto no lo considero lógica de negocios. Esta es una tarea OLAP típica, sin embargo, orientada a un DBMS.
El servidor de aplicaciones se caracteriza por una lógica empresarial diferente: soporte corriente operaciones tecnológicas y comerciales y la provisión de interfaces de acceso a datos. Y la implementación interna de las interfaces ya puede ser (dependiendo de la comprensión de los desarrolladores) gruesa (mala, en mi humilde opinión, porque todo está en el servidor de aplicaciones), delgada (es la mayor parte, en mi humilde opinión, porque se puede hacer algo en el DBMS, que algo - en el servidor de aplicaciones) y flaco (malo, en mi humilde opinión, porque todo tira del DBMS).

Pero dicen que escalar un servidor de aplicaciones es más fácil que un DBMS. Y más barato No lo sé aquí, no lo he encontrado.



Курдль ©   (2006-10-25 13:15) [18]


> Desdechado © (25.10.06 13: 10) [17]

Listo para suscribirse a cada palabra!



kaif ©   (2006-10-25 13:26) [19]

2 Kurdle ©

Bueno, ¿qué pasa con la consulta SQL para el rango de brechas de fechas de visita?
¿Débil?
Entonces no hay necesidad de hacer declaraciones generales sobre las capacidades de SQL. Los CP le permiten hacer algo de trabajo para un servidor DBMS fuera de las restricciones relacionales. En IB, SUSPEND se usa para esto, y en MSSQL, se usan cursores o tablas temporales. Y estas son todas las tareas que imposible o extremadamente dificil (lentamente) resuelva usando consultas QL.



kaif ©   (2006-10-25 13:28) [20]

Otro ejemplo típico de tal tarea es eliminar los "agujeros en la numeración".
¿Quién me escribirá una consulta SQL que implemente una tarea tan lógicamente cuestionable?



stone ©   (2006-10-25 13:37) [21]


> kaif © (25.10.06 13: 28) [20]
> Otro ejemplo típico de tal tarea es eliminar los "agujeros".
> en numeración ".
> ¿Quién me escribirá una consulta SQL que implemente una duda tan dudosa?
> lógicamente una tarea?

en TSQL

hay una tabla (ID int, Value varchar (50)) ID respectivamente con "agujeros"

seleccione identidad (int, 1,1) como ID, valor en #tmp de la tabla eliminar de la tabla insertar en la tabla seleccione * de #tmp soltar tabla #tmp



Bless ©   (2006-10-25 13:45) [22]


> kaif © (25.10.06 13: 28) [20]
>
> Otro ejemplo típico de tal tarea es eliminar los "agujeros".
> en numeración ".
> ¿Quién me escribirá una consulta SQL que implemente una duda tan dudosa?
> lógicamente una tarea?


En MS SQL.
Campo con fugas - t1.kod (no identidad)
declarar @x int
establecer @ x = 0
actualizar t1 set @ x = kod = @ x + 1



Bless ©   (2006-10-25 13:48) [23]

Aunque, tal vez esto no funcione, porque los registros están numerados en orden aleatorio, posiblemente diferente del anterior. Si esto es importante, entonces no servirá.



Курдль ©   (2006-10-25 14:00) [24]


> kaif © (25.10.06 13: 26) [19]
> Bueno, ¿qué pasa con la consulta SQL para el rango de intervalos para las fechas de visitas?
> Débil?


No es tan fácil atraparme "débilmente" :)
Proporcione un submodelo de datos y una descripción detallada de qué tipo de "espectro" necesita obtener. Echaré un vistazo al ocio.



Ученик чародея ©   (2006-10-25 14:29) [25]


>
> Kurdle © (25.10.06 10: 57)
>
> En la continuación del tema del diseño web, se destacó una pregunta
> sobre la conveniencia de usar CP. Y está en la alternativa
> con la ejecución de la lógica de negocios en el servidor de aplicaciones.
> Mi posición es a favor del servidor de aplicaciones.
> Mi objetivo no es desafiar las acusaciones de nadie, sino aclarar en una disputa
> para usted las perspectivas de la lógica del servidor de programación y
> opciones para la aplicación de ciertos métodos.


El rendimiento y la flexibilidad no son un criterio para un cliente. El criterio principal para el cliente es la facilidad de instalación, soporte y trabajo con la aplicación del mismo cliente de base de datos.

Tal vez no encontré clientes de la red, pero la solicitud principal fue ponerla allí (aplicación) en la esquina de la computadora y no tocó a nadie ...



euru ©   (2006-10-25 14:29) [26]


> Desdechado © (25.10.06 13: 10) [17]
> En mi humilde opinión, cada parte del enlace múltiple debe hacer lo suyo.
> 1. DBMS: datos de dirección, derechos, integridad, almacenamiento, acceso.
> 2. Servidor de aplicaciones: selección de lógica empresarial.
> 3. Cliente: tome decisiones e ingrese / reciba resultados.
>
> Pero dicen que escalar un servidor de aplicaciones es más fácil que un DBMS. > Y más barato. No lo sé aquí, no lo he encontrado.

Los derechos y los taxis de acceso también deben transferirse a la lógica empresarial, porque las reglas para su aplicación pueden vincularse no solo a los objetos de la base de datos, sino también a los objetos comerciales.

En un DBMS no se debe aplicar KP. Su funcionalidad debe implementarse a nivel del servidor de aplicaciones.

El servidor de bases de datos es un cuello de botella. Por lo tanto, cuanto más lo descargue, más eficiente funcionará. Y puede descargarlo transfiriendo el trabajo de procesamiento de datos al servidor de aplicaciones. Si en algún momento resulta que la potencia del servidor de aplicaciones ya es insuficiente, puede ingresar a otro servidor de aplicaciones, distribuyendo el procesamiento de datos entre los dos servidores. Además, el servidor de aplicaciones, además de su propósito principal (implementar la lógica empresarial), realiza una serie de tareas auxiliares, por ejemplo, almacenando los datos solicitados con frecuencia en un búfer, liberando así al servidor de la base de datos de la necesidad de procesarlo.



Игорь Шевченко ©   (2006-10-25 14:31) [27]

euru © (25.10.06 14: 29) [26]


> El servidor de bases de datos es un cuello de botella. Así que cuanto más lo descargues,
> cuanto más eficiente funcione. Y puedes descargarlo
> transferir el trabajo de procesamiento de datos al servidor de aplicaciones.
>


Espero que tengas algo para confirmar una declaración tan audaz?



kaif ©   (2006-10-25 14:33) [28]

© Kurdl (25.10.06 14: 00) [24]
Proporcione un submodelo de datos y una descripción detallada de qué tipo de "espectro" necesita obtener. Echaré un vistazo al ocio.


No entiendo palabras tan difíciles. Soy un humilde escritor de procedimientos almacenados.

Hay una tabla en la que se encuentran las fechas de las visitas de los pacientes.

FECHA DE VISITA DEL PACIENTE
===================
1 01.01.2006
1 05.01.2006
1 09.01.2006
1 19.01.2006
....
2 06.03.2006
2 08.03.2006
2 11.03.2006
2 14.03.2006
....
....

Supongamos incluso que hay otra tabla en la que cada paciente tiene una categoría:

PACIENTE_ID CATEGORÍA_ID
====================
1 1
2 1
3 2
4 3
.....


Es necesario escribir una consulta SQL sin ninguna tabla temporal, HP, etc., que devolverá dicho espectro (el intervalo en días entre dos visitas seguidas y el número de tales intervalos):

VISIT_INTERVAL COUNT
=====================
2 1 (hay un intervalo 1 de días 2 entre visitas)
3 2 (hay un intervalo 2 de días 3 entre visitas)
4 2 (hay un intervalo 2 de días 4 entre visitas)
10 1 (una vez que los médicos estuvieron inactivos durante 10 días)
...

Esta es una opción simple, hasta que descubra si se trata de visitas de la misma persona o no.

La complicación es agruparlo todo en categorías y responder con una pregunta SQL la siguiente pregunta:
¿Cuál es el intervalo mínimo entre visitas de cada categoría, el intervalo máximo y promedio. O algo asombroso.

Mostré que tales tareas se resuelven fácilmente con la ayuda de HP en interbase. Un HP y una consulta con una agrupación son suficientes para obtener un rango simple de brechas. El segundo HP puede consultar el primero y obtener todos los espectros por categoría. El tercer HP puede dar un mínimo, máximo y promedio para cada categoría a la montaña. Todo esto es muy fácil de escribir e incluso más fácil de depurar. Y este trabajo no tomará más de 15 minutos, incluso si comete un error en cada declaración una vez. Como resultado, obtenemos resultados correctos garantizados y un código de ejecución rápida que devuelve todo lo que se necesita con una sola consulta SQL.

Puedo sentarme un mes, hablar con Johnmen, Zacho, cargarte a ti y a Desdechado, Petr.V. Abramov con su ORACLE, etc.
Y si me pagaran un salario de tiempo, entonces probablemente lo habría tomado para aumentar mi inclinación ante mis propios ojos.

Pero me pagan por el resultado final, en la forma en que tengo que resolver docenas de tales tareas al día, por lo que recurro modestamente a HP. Si la base bien normalizado, No creo que alguien aplique HP extra. Y dado que soy fanático de las normalizaciones, confío en mí mismo en todo lo que concierne al deseo de usar HP en algunas situaciones.



ANB ©   (2006-10-25 14:41) [29]


> El servidor de bases de datos es un cuello de botella. Así que cuanto más lo descargues,
> cuanto más eficiente funcione. Y puedes descargarlo
> transferir el trabajo de procesamiento de datos al servidor de aplicaciones.
>

Desnudo desnudo Y también arrojar algunos gigabytes de canales entre el servidor de aplicaciones y el servidor de bases de datos. Aunque esto puede no ayudar si el servidor de aplicaciones funcionará como 1-sky.



kaif ©   (2006-10-25 14:42) [30]

Parece que entiendo de qué se trata.
Supongamos que una persona ya ha elegido un enlace triple.
Pregunta: ¿es posible evitar HP y así aumentar la portabilidad de la base de datos a otro tipo de servidor?

Mi respuesta es si. Yo lo haría así.
Si escribiera un enlace de tres.

Pero NO HE DECIDIDO DE MENTE:
1 Escriba tres enlaces cuando, por alguna razón, el enlace dos sea siempre suficiente.
2 Para descuidar las oportunidades más ricas servidor específico y en su lugar, implemente con sus manos en la aplicación (¡deje que el servidor!) lo que el servidor ya sabe cómo hacer.
3. Pagar por la funcionalidad del servidor, que ciertamente no quiero usar.



Danilka ©   (2006-10-25 14:45) [31]

[30] kaif © (25.10.06 14: 42)
> 1. Escriba tres enlaces cuando, por alguna razón, el enlace dos sea
> siempre suficiente.
> 2. Descuidar las posibilidades más ricas de un cierto
> servidor y en su lugar implementar manos en la aplicación
> (¡deja que el servidor!) lo que el servidor ya sabe cómo hacer.
> 3. Pague por la funcionalidad del servidor, que obviamente no quiero
> uso.

Bien dicho, ¡apoyo todo 100%!



Игорь Шевченко ©   (2006-10-25 14:54) [32]

Y por qué, de hecho, sorprenderse en los libros que explican "cómo programar correctamente", en blanco y negro dice, por ejemplo, así:

Objeto protegido getObjectFromStorage (OID oid)
{
Clave de cadena = oid.ToString ();
dbRec = Resultado de ejecución SQL de:
"Seleccione * de PROD_SPEC donde key =" + key;

ProductSpecification ps = new ProductSpecification ();
ps.setOID (oid);
ps.setPrice (dbRec.getColumn ("PRECIO"));
ps.setItemID (dbRec.getColumn ("ITEM_ID");
ps.setDescrip (dbRec.getColumn ("DESC"));

volver ps;
}

Craig Larman, "Aplicación de UML y patrones de diseño", p. 535



DiamondShark ©   (2006-10-25 15:04) [33]


> Y puede descargarlo transfiriendo el trabajo de procesamiento de datos a

otro cuello de botella :)



ANB ©   (2006-10-25 15:07) [34]


> kaif © (25.10.06 14: 42) [30]

+1



Игорь Шевченко ©   (2006-10-25 15:13) [35]

ANB © (25.10.06 15: 07) [34]

¡BIEN NO EN ESTE SITIO WEB DEL SISTEMA DE CALIFICACIÓN DE SITIO!



euru ©   (2006-10-25 15:17) [36]


> Igor Shevchenko © (25.10.06 14: 31) [27]
> ¿Espero que tengas algo para confirmar una declaración tan audaz?
En realidad, hay tres declaraciones en el texto que resaltó. :)

1 El servidor de bases de datos es un cuello de botella.
¿Es esta una declaración falsa? El aumento en el número de clientes activos, la introducción de sistemas comerciales adicionales aumentará la carga en el servidor. Lo que, a su vez, conducirá a una disminución en su rendimiento y, por lo tanto, a una disminución en la productividad del software de la aplicación.

2 Por lo tanto, cuanto más lo descargue, más eficiente funcionará. Y puede descargarlo transfiriendo el trabajo de procesamiento de datos al servidor de aplicaciones.
Alternativamente, por supuesto, puede aumentar la potencia del servidor de bases de datos. Pero esta opción es algo así como "temperatura promedio en la habitación". Pero la capacidad de distribuir la carga a otros servidores, teniendo en cuenta los detalles específicos de la distribución, será más eficiente. Con esta distribución, el servidor de aplicaciones se puede configurar de manera óptima para resolver el problema de rendimiento del sistema.



Игорь Шевченко ©   (2006-10-25 15:20) [37]

euru © (25.10.06 15: 17) [36]


> 2. Por lo tanto, cuanto más se descarga, más eficiente es.
> funcionará. Y puede descargarlo transfiriendo trabajo en
> procesamiento de datos en el servidor de aplicaciones.


Y para hacer otro cuello de botella, que se menciona repetidamente en este hilo.

Descarga descargando discordia, como sabes. Si un servidor de aplicaciones requiere un intercambio con un servidor de base de datos, y el procedimiento almacenado en el servidor reduce el volumen de este intercambio, entonces su opción de descarga no generará una ganancia, sino solo un cuello de botella.



Курдль ©   (2006-10-25 15:21) [38]


> kaif © (25.10.06 14: 42) [30]
> 1. Escriba tres enlaces cuando, por alguna razón, el enlace dos sea
> siempre suficiente.

¿Dónde y para quién es "siempre suficiente"?
¿Tuviste que escribir sistemas distribuidos?


> 2. Descuidar las posibilidades más ricas de un cierto
> servidor y en su lugar implementar manos en la aplicación
> (¡deja que el servidor!) lo que el servidor ya sabe cómo hacer.

¿Qué es exactamente lo que el servidor ya puede hacer?
Él sabe cómo manejar objetos del área temática, cómo sabe cómo hacerlo.
cualquier OOP - Java?


> 3. Pague por la funcionalidad del servidor, que obviamente no quiero
> uso.

Oracle es un hermoso DBMS. Pero no del todo porque tiene un PL / SQL tan maravilloso. Y debido a que es un DBMS extremadamente productivo y confiable, capaz de procesar solicitudes de una gran cantidad de usuarios a tablas muy voluminosas.



DiamondShark ©   (2006-10-25 15:21) [39]


> Por lo tanto, cuanto más se descargue, más eficiente será
> trabajo. Y puede descargarlo transfiriendo el trabajo de procesamiento
> datos al servidor de aplicaciones.

Al mismo tiempo, se cree que el servidor de aplicaciones es una cosa tan mágica que no experimenta ninguna carga por sí sola.



Игорь Шевченко ©   (2006-10-25 15:25) [40]

© Kurdl (25.10.06 15: 21) [38]


> Puede manejar objetos del área temática, como puede
> hazlo
> cualquier OOP-Java?


Esto ... lo siento mucho, pero OOP-Java no sabe cómo manipular objetos del área temática, incluso en comparación con el servidor DBMS.


> Oracle: un buen DBMS. Pero no porque ella tenga tal
> maravilloso PL / SQL.


Sí, ella también tiene Java. Y capacidades relacionales de objetos.


> Pero porque es extremadamente productivo y confiable
> DBMS capaz de procesar solicitudes de un gran número
> usuarios a mesas muy voluminosas.


Y si todavía usa procedimientos almacenados en PL / SQL maravilloso, entonces en algunos casos se puede aumentar una gran cantidad de usuarios :)



euru ©   (2006-10-25 15:31) [41]


> Igor Shevchenko © (25.10.06 15: 20) [37]
> DiamondShark © (25.10.06 15: 21) [39]

Si los problemas comienzan con el rendimiento del servidor de aplicaciones, siempre puede agregar otro servidor de aplicaciones, distribuyendo la carga entre ellos.


> Si un servidor de aplicaciones requiere un intercambio con el servidor
> bases de datos, y el procedimiento almacenado en el servidor reduce el volumen
> de este intercambio, entonces su opción de descarga no dará lugar a una victoria,
> pero solo para mover el cuello de botella
La introducción del servidor de aplicaciones puede reducir nuevamente la cantidad de datos transferidos, ya que los datos de uso frecuente se almacenan en el servidor de aplicaciones, y para acceder a ellos no es necesario cargar el canal entre el servidor de bases de datos y el servidor de aplicaciones o cargar el DBMS para procesarlos.



Игорь Шевченко ©   (2006-10-25 15:39) [42]

euru © (25.10.06 15: 31) [41]


> La introducción del servidor de aplicaciones puede reducir nuevamente la cantidad de
> datos transmitidos porque datos utilizados con frecuencia
> almacenado en el servidor de aplicaciones, y acceder a ellos no es
> no necesita cargar el canal entre el servidor de bases de datos y el servidor de aplicaciones,
> ni cargue el DBMS para su procesamiento.


Probablemente revelaré un terrible secreto si digo que el servidor de la base de datos también almacena datos en el caché.



Desdechado ©   (2006-10-25 15:40) [43]

euru © (25.10.06 14: 29) [26]
> El rodaje con derechos y acceso también debe transferirse a la lógica empresarial,
> porque las reglas para su aplicación pueden estar vinculadas no solo a
> objetos de base de datos, pero también a objetos comerciales.
Si un objeto comercial es un reflejo directo de una entidad desde una base de datos, entonces es más fácil otorgar derechos a un DBMS, sobre todo porque ya existen todos los medios para ello.
Si un objeto de negocio es algo que acumula algunas entidades relacionadas de la base de datos, entonces los derechos sobre él deben distribuirse en el servidor de aplicaciones. (aunque puede haber un error de diseño cuando las entidades y los objetos comerciales resultaron ser diferentes, siendo esencialmente sinónimos).
Pero también debe recordar que el DBMS es la última instancia de verificación de derechos, cuando nada más ayudó. Por ejemplo, cuando se conecta a la base de datos directamente omitiendo el astuto servidor de aplicaciones con su sofisticada lógica de protección.

> kaif © (25.10.06 14: 42) [30]
> 1. Para escribir tres enlaces, cuando por alguna razón un enlace doble siempre es suficiente.
> 2. Descuidar las características más ricas de un servidor particular y
> en lugar de implementar manos en la aplicación (¡deja que el servidor!)
> lo que el servidor ya sabe hacer.
> 3. Pague por la funcionalidad del servidor, que obviamente no quiero usar.
Estas emociones tienen sentido cuando decides en qué arquitectura trabajarás. Si tiene el TK del cliente en sus manos, que dice "enlace múltiple para DBMS xxxx", los elementos 1 y 3 desaparecen inmediatamente.



Игорь Шевченко ©   (2006-10-25 15:43) [44]

euru © (25.10.06 15: 31) [41]


> La introducción del servidor de aplicaciones puede reducir nuevamente la cantidad de
> datos transmitidos porque datos utilizados con frecuencia
> almacenado en el servidor de aplicaciones, y acceder a ellos no es
> no necesita cargar el canal entre el servidor de bases de datos y el servidor de aplicaciones,
> ni cargue el DBMS para su procesamiento.


Y, sin embargo, ¿cómo se resolverá el problema de la consistencia de los datos si los “datos de uso frecuente” se almacenan en el servidor de aplicaciones y al mismo tiempo se cambian (por ejemplo, por una herramienta de terceros o al iniciar un trabajo por lotes regular) en el servidor de bases de datos?



kaif ©   (2006-10-25 15:46) [45]

2 Kurdle ©

Dije que si hablamos de tres enlaces, me adheriría a esa campaña: menos HP.

Recientemente escribí una aplicación de servlet en JAVA bajo Tomcat + ORACLE para una intranet.

Y resolví todo el problema.
No necesitaba tanto HP que ni siquiera aprendí cómo hacerlos en ORACLE.

Pero afirmar que el uso de CP en dos enlaces significaría falta de voluntad para pensar sobre consultas SQL, no lo haría, incluso si me volviera loco.



Курдль ©   (2006-10-25 15:47) [46]


> Igor Shevchenko © (25.10.06 15: 25) [40]
> Esto ... lo siento mucho, pero OOP-Java no sabe cómo manipular
> objetos de dominio incluso en comparación con el servidor
> DBMS.


Si! ¿Estás empezando a encontrar fallas en la torpe tesis? :)
¡Esto no es constructivo!



kaif ©   (2006-10-25 15:48) [47]

Todas las aplicaciones web e intranet entidades - tres enlaces si hay al menos algunos html dinámico.



kaif ©   (2006-10-25 15:49) [48]

Es por eso que MySQL derrotó a todos en Internet.
Este tovarisch no puede llevar a cabo ningún HP.
Y la pregunta se elimina por sí sola.



Курдль ©   (2006-10-25 15:51) [49]


> kaif © (25.10.06 15: 48) [47]
> Todas las aplicaciones WEB e intranet son intrínsecamente
> - tres enlaces, si hay al menos algo de dinámica
> HTML.


Yo diría "si hay algún servidor web" :)



euru ©   (2006-10-25 15:55) [50]


> Igor Shevchenko © (25.10.06 15: 39) [42]
> Probablemente revelaré un terrible secreto,
> si digo que el servidor de bases de datos también almacena datos en
> caché.

Tiendas Pero este caché es común a todas las aplicaciones que usan el DBMS. Y si alguna aplicación será más activa en la creación de nuevas consultas, simplemente eliminará los resultados de la consulta de otra aplicación del caché, que funciona no menos activamente, sino principalmente con los mismos datos.



iZEN ©   (2006-10-25 15:56) [51]

> ¿Qué tareas deben resolverse con la ayuda de HP?

Sin complicaciones. Sin mapeo OR. Donde no se requiere el uso de objetos.
Los XP están bien optimizados por los programadores de SQL Server y se ejecutan obviamente más rápido que otras consultas SQL (complejas).

Con el advenimiento de OR-Mapping, los servidores SQL se convirtieron en simples depósitos de datos "planos", ya que el servidor de aplicaciones asumió las funciones de serialización y deserialización de objetos. Los desarrolladores comunes pueden comprender fácilmente los objetos, a diferencia de las complejas preguntas de optimización de consultas y lenguaje de base de datos. Por lo tanto, tiene sentido centrarse en la lógica del servidor que en la invención de HP óptima.

Además, la memoria, el tiempo del procesador, el espacio en disco se han vuelto mucho más baratos que el trabajo de un programador. Entonces, ¿por qué ahorrar en ellos y no usar servidores superiores? Los servidores SQL ahora se han convertido en simples bancos de datos.



Игорь Шевченко ©   (2006-10-25 16:00) [52]

euru © (25.10.06 15: 55) [50]


> Y si alguna aplicación será más activa en
> creando nuevas solicitudes, simplemente lo sacará del caché
> resultados de consultas de otra aplicación que funciona
> no menos activo, pero principalmente con los mismos datos.
>


Además, no se desplazará. Los datos utilizados con frecuencia no se desplazan. Sin embargo, todo es conocido por las estadísticas.

kaif © (25.10.06 15: 49) [48]


> Porque MySQL derrotó a todos en Internet.
> Este tovarisch no sabe cómo realizar ningún HP.


"Históricamente, MySQL está en primer lugar en términos de la frecuencia de uso en proyectos de Internet. Es ideal para aplicaciones" hasta la rodilla ".

http://www.babr.ru/news/print.php?IDE=6283



ANB ©   (2006-10-25 16:02) [53]


> Además, memoria, tiempo de procesador, espacio en disco
> se han vuelto mucho más baratos que el trabajo de un programador. Entonces, ¿por qué en ellos
> guardar y no usar servidores SQL Server ahora
> convertirse en simples "bancos" con datos.

Entonces, ¿por qué ahorrar en ellos y no aplicar HP? Después de todo, al usarlos, el tiempo de depuración se reduce significativamente.
El enlace de 3 fue inventado por personas perezosas de MS para cerrar fallas obvias en la lógica del servidor de su servidor.



Игорь Шевченко ©   (2006-10-25 16:05) [54]

iZEN © (25.10.06 15: 56) [51]


> Además, memoria, tiempo de procesador, espacio en disco
> se han vuelto mucho más baratos que el trabajo de un programador. Entonces, ¿por qué en ellos
> guardar y no usar servidores SQL Server ahora
> convertirse en simples "bancos" con datos.


Por supuesto, me disculpo, pero es mejor usar la memoria y el tiempo de procesador para la escalabilidad de la aplicación.



euru ©   (2006-10-25 16:11) [55]


> Igor Shevchenko © (25.10.06 15: 43) [44]
> Y, sin embargo, ¿cómo se resolverá el problema de la consistencia de los datos?

Puedo dar una descripción de cómo se hace esto en SAP R / 3.

Buffer de tabla de base de datos
El almacenamiento en búfer de una tabla mejora el rendimiento al acceder a los registros de una tabla.
Los almacenamientos intermedios de tablas se almacenan localmente en cada servidor de aplicaciones del sistema. Por lo tanto, se puede acceder directamente a los datos de las tablas almacenadas desde el búfer del servidor de aplicaciones. Esto evita el proceso lento de acceder a la base de datos.
El almacenamiento en búfer es especialmente importante en entornos cliente / servidor, ya que acceder a una tabla a través de una red en ellos es mucho más largo que acceder a una tabla almacenada localmente. Dependiendo de la carga de la red, esta relación puede variar de 10 a 100.
En los sistemas centrales (sistemas con un servidor de aplicaciones) las diferencias en rendimiento son ligeramente menores que las locales (sistemas con varios servidores de aplicaciones). Sin embargo, incluso en los sistemas centrales, la reducción de los procesos de cambio y el mecanismo de amortiguación mejorado en comparación con el sistema de base de datos proporcionado afecta significativamente el rendimiento.

¿Cómo se llenan los tampones?
Si el programa accede a los datos de la tabla almacenada, la interfaz de la base de datos determina si estos datos están disponibles en el servidor de aplicaciones. Si está disponible, los datos se leen directamente desde el búfer. Si no hay datos en el búfer del servidor de aplicaciones, se leen de la base de datos y se cargan en el búfer. El acceso adicional a estos datos puede usar un búfer.
Los registros que se cargan en el búfer cuando se accede a ellos determina el tipo de búfer.

¿Cómo se sincronizan los búferes locales?
Una tabla almacenada generalmente se lee en todos los servidores de aplicaciones y se almacena en sus almacenamientos intermedios. Si el programa cambia los datos contenidos en la tabla en el servidor de aplicaciones, la interfaz de la base de datos lo registra en el registro. En todos los demás servidores de aplicaciones, los búferes permanecen en el estado anterior, por lo que los programas pueden leer datos obsoletos.
A intervalos de tiempo fijos, generalmente 1-2 minutos, comienza el mecanismo de sincronización. La lectura del registro se produce, después de lo cual el contenido del búfer que se ha cambiado deja de ser válido en otros servidores. En la próxima llamada, los datos de las tablas inválidas se leen directamente de la base de datos y se actualizan en el búfer.



Polevi ©   (2006-10-25 16:11) [56]

> Igor Shevchenko © (25.10.06 16: 05) [54]
También aplicamos escalabilidad lineal.
número de servidores ascendentes = número de usuarios del sistema
belleza



Polevi ©   (2006-10-25 16:14) [57]

> euru © (25.10.06 16: 11) [55]
bla, bla, bla
también lee libros inteligentes
todo esto, por supuesto, es muy hermoso en papel, puedes escribir un sincero
¿Está justificada esta complicación del sistema?



Курдль ©   (2006-10-25 16:16) [58]


> iZEN © (25.10.06 15: 56) [51]


¡Este no es un discurso de niño, sino un esposo! (c)

Todavía puedo agregar aquí algunas gotas de mi experiencia apenas perceptible.
Donde el uso de CP era obvio hasta hace poco, también fueron trasladados. Por ejemplo, al procesar grandes cantidades de datos para crear informes, saldos, compensación, facturación, etc. Ahora, esas tareas se transfieren cada vez más de la base de datos a la HD. Y todas las operaciones de datos son realizadas por herramientas OLAP especializadas del tipo MSTR.
Parece que la integración de datos de la base de datos (o fuentes operativas) también es una posible aplicación de CP. Pero tampoco creció juntos ...
Y aquí llegaron los productos de software especializados de ETL como Informatica.



saxon   (2006-10-25 16:18) [59]


> ANB © (25.10.06 16: 02) [53]

En el mapeo OR mencionado, el desarrollador puede no tener que lidiar con SQL.
Como un ejemplo:
http://www.devexpress.com - тут они и базу могут создать :)



Вольный Стрелок ©   (2006-10-25 16:19) [60]

euru © (25.10.06 16: 11) [55]

> Puedo dar una descripción de cómo se hace esto en SAP R / 3

También encontré un sistema a seguir ...
Ni siquiera tienen control de integridad a nivel de base de datos, no hay claves externas y únicas. Ni siquiera hablo de desencadenantes.
Y de acuerdo con "En intervalos de tiempo fijos, generalmente 1-2 minutos, comienza el mecanismo de sincronización".



euru ©   (2006-10-25 16:19) [61]


> Polevi © (25.10.06 16: 14) [57]
> ¿solo se justifica tal complicación del sistema?

¿Y cuál es la complicación? ¿Y para quién es la complicación?



Игорь Шевченко ©   (2006-10-25 16:23) [62]

saxon (25.10.06 16: 18) [59]


> En el mencionado O-Mapping, el desarrollador puede no tener que lidiar
> con SQL.
> Como ejemplo:
> http://www.devexpress.com - aquí pueden crear una base
> :)


¿Esto significa XPO? ¿Realmente se usa en alguna parte? ¿Cuántos datos se procesan? ¿Cuál es el tiempo de respuesta?



Игорь Шевченко ©   (2006-10-25 16:25) [63]

euru © (25.10.06 16: 19) [61]

Aquí se dijo que el procesador y la memoria se volvieron baratos ... Entonces, es mejor gastar dinero en una pieza de hierro, donde el servidor DBMS está girando. El servidor de aplicaciones tampoco es gratuito, ¿verdad? O el terminado se toma y finaliza con un archivo, o se escribe manualmente. Ambos cuestan dinero, mientras que un procesador con memoria y discos duros se vuelve más barato ...



iZEN ©   (2006-10-25 16:25) [64]


> Igor Shevchenko © (25.10.06 16: 05) [54]
>
> Ciertamente me disculpo, pero lo barato de la memoria y el procesador
> el tiempo se usa mejor para la escalabilidad de la aplicación.

Los sistemas de objetos y los servidores de aplicaciones escalan bien y se agrupan, a diferencia de los enfoques puramente "funcionales".



saxon   (2006-10-25 16:26) [65]


> Igor Shevchenko © (25.10.06 16: 23) [62]

En nuestra oficina, un chico escribe un programa para necesidades internas con la ayuda de entogo. Hasta ahora no puedo decir nada especial: él acaba de comenzar, así que estaba mirando algunas cosas. (basura)



Игорь Шевченко ©   (2006-10-25 16:27) [66]

iZEN © (25.10.06 16: 25) [64]


> Los sistemas de objetos y los servidores de aplicaciones escalan bien y se agrupan,
> a diferencia de los enfoques puramente "funcionales".


Desde este lugar más.



Polevi ©   (2006-10-25 16:28) [67]

> euru © (25.10.06 16: 19) [61]
Bueno, si crees que no es difícil implementar el algoritmo descrito por ti en un sistema distribuido, entonces conoce los problemas



euru ©   (2006-10-25 16:28) [68]


> Free Shooter © (25.10.06 16: 19) [60]
> .. Incluso no tienen control de integridad a nivel de base de datos, externo
> y llaves únicas. Ni siquiera hablo de desencadenantes.

Todavía hay claves primarias y externas, así como índices. El control de integridad también está disponible. ¿Por qué necesitamos disparadores si el control se lleva a cabo a nivel de lógica empresarial?



Игорь Шевченко ©   (2006-10-25 16:29) [69]

saxon (25.10.06 16: 26) [65]

Para necesidades internas, ya escribí mi propio sistema. Y esto ... como ella ... tiopf parecía. No me impresionó



Polevi ©   (2006-10-25 16:30) [70]

> Igor Shevchenko © (25.10.06 16: 27) [66]
Bueno, entiendo que significa la sala en la que se encuentran el servidor DBMS y el servidor de aplicaciones
cuando comienza a ralentizarse, agregan otro servidor de aplicaciones y cierto coordinador distribuye las solicitudes entre ellos
y así sucesivamente a [56]



saxon   (2006-10-25 16:31) [71]


> Igor Shevchenko © (25.10.06 16: 23) [62]

+
¿Existe tal cosa? Http://www.devexpress.com/Home/Customers.xml
Pero, ¿qué usan exactamente todos?

> Igor Shevchenko © (25.10.06 16: 29) [69]

No discutiré, no hay experiencia, pero el tipo escribe en agua hirviendo :)



Игорь Шевченко ©   (2006-10-25 16:37) [72]

saxon (25.10.06 16: 31) [71]

Lo que sé sobre DevExpress desde hace mucho tiempo, pero también tienen componentes visuales. XPO han aparecido recientemente, y es poco probable que esos clientes lo usen, más bien, componentes para la apariencia, el beneficio es realmente bueno.



euru ©   (2006-10-25 16:58) [73]


> Polevi © (25.10.06 16: 28) [67]
> bueno, si crees que
> no es difícil implementar el algoritmo descrito por usted en un sistema distribuido
> el sistema conoce los problemas

Este algoritmo no es descrito por mí, sino tomado de la ayuda de SAP. Lo han implementado y han estado operando durante más de un año y en una cantidad bastante grande de instalaciones. Entonces el algoritmo descrito no es del reino de la fantasía.



Курдль ©   (2006-10-25 17:01) [74]

Esto es lo que quiero resumir.
Personalmente, puedo y amo escribir la lógica del servidor. Sé cuán hermosos a veces se obtienen los resultados, en comparación con la ejecución de la misma tarea en el cliente.
Pero para acelerar el proceso de producción de software, es más útil reducir todo a un entorno, un idioma y un modelo común.



Polevi ©   (2006-10-25 17:01) [75]

> euru © (25.10.06 16: 58) [73]
No digo que sea fantástico.
Yo digo que no es fácil de implementar
y vale la pena considerar si vale la pena en el sistema desarrollado
SAP ERP ha estado en desarrollo durante varias décadas, tenían el tiempo y los recursos



ANB ©   (2006-10-25 17:03) [76]


> bueno, entiendo que significa la sala en la que se encuentra el servidor DBMS
> y servidor de aplicaciones
> cuando comience a ralentizar agregue otro servidor de aplicaciones y
> cierto coordinador distribuye solicitudes entre ellos
> y así sucesivamente a [56]

¿No es más fácil agregar otro servidor DBMS? 10G fue lanzado para esto. Y el servidor de aplicaciones no es necesario.



Игорь Шевченко ©   (2006-10-25 17:05) [77]

© Kurdl (25.10.06 17: 01) [74]


> Pero para acelerar el proceso de producción de software, es más útil reducir todo
> a un entorno, un idioma y un modelo común


¿Quizás es mejor separar los esfuerzos de los desarrolladores de las partes cliente y servidor? Por ejemplo, para tener dos grupos, cada uno fuerte en su campo, como resultado, el software debería ser más productivo (bueno o escalable) ...



Polevi ©   (2006-10-25 17:10) [78]

> ANB © (25.10.06 17: 03) [76]
bueno por si acaso
sub son diferentes



vuk ©   (2006-10-25 17:27) [79]

a kaif © (25.10.06 15: 49) [48]:
> Porque MySQL derrotó a todos en Internet.
> Este tovarisch no sabe cómo realizar ningún HP.
Escribes esto a los desarrolladores de MySQL para que descarten los procedimientos que recientemente atornillaron allí. Dinos que lo intentaste en vano. Y luego no lo saben. :)



ANB ©   (2006-10-25 17:35) [80]


> sub son diferentes

Si Adabas todavía sucede, él también sabe cómo distribuir. DB2: no lo sabe, pero ya sabe cómo o aprenderá pronto. Grid ahora está más de moda que los enlaces de 3.
No veo ninguna razón para usar un DBMS simple para agregarle características. Saldrá más caro.



Курдль ©   (2006-10-25 21:52) [81]


> kaif © (25.10.06 14: 33) [28]


O no he estudiado cuidadosamente la esencia del problema, o:
con ALIAS_1 como (seleccione V1.VISIT_DATE - (seleccione max (V2.VISIT_DATE) de VISITES V2 donde V2.VISIT_DATE <V1.VISIT_DATE) como VISIT_INTERVAL de VISITES V1 seleccione un recuento distinto (*) del grupo ALIAS_1 por VISIT_INTERVAL

Estoy de acuerdo en que esta solicitud funcionará más tiempo que HP, pero si esta muestra resultados aceptables en la cantidad de datos prevista ...



Игорь Шевченко ©   (2006-10-25 23:00) [82]

Llegué a Kite:

"La dependencia de la base de datos debe ser el objetivo por el que debe esforzarse y no evitarlo. Si la gerencia de la compañía considera que es posible invertir dinero en la base de datos y desea que el software se desarrolle en el menor tiempo posible, entonces la única forma es usar todas las funciones Bases de datos
El hecho es que, aparte de las aplicaciones más simples, la independencia de la base de datos es extremadamente costosa y consume una gran cantidad de recursos.
...
De hecho, la mayoría del software fue creado específicamente para trabajar con una base de datos corporativa estándar. Parece dudoso en tales circunstancias la necesidad de independencia de la base de datos. Lo que debe esforzarse es crear una aplicación rápidamente y con solo unas pocas líneas de código. Y trabajar con la condición de independencia de la base de datos o, peor aún, descuidar (intencionalmente o como resultado de un conocimiento insuficiente) las capacidades de la base de datos no deberían ser el objetivo "
La mejor manera de lograr un cierto nivel de movilidad de la aplicación para múltiples bases de datos es codificar todos los componentes de la base de datos utilizados por la aplicación en procedimientos almacenados. A este respecto, surge la pregunta: si la codificación se realiza en procedimientos almacenados y cada fabricante tiene su propio idioma, ¿habrá una dependencia del fabricante?
Si y no Los componentes visibles de la aplicación son seguros. La lógica de aplicación (existente con lógica de datos) también es segura. La lógica de los datos está codificada en el proceso de trabajar con la base de datos. Dado que todo esto está oculto en el procedimiento almacenado, usando (de hecho, esto siempre debe usarse) las herramientas avanzadas de cada fabricante, puede obtener datos de nivel superior.
Si la aplicación se desarrolla e implementa, siempre estará incrustada en la base de datos. Si la aplicación se mueve a otra base de datos, debe adaptarse actualizándose con la ayuda de nuevas características y funciones. Simplemente no podrás transferirlo ".

(c) Tom Kite



Petr V.Abramov   (2006-10-25 23:34) [83]

1 con rendimiento tz
no es necesario conducir grandes cantidades de datos desde el servidor DB al servidor de aplicaciones. Es cierto que esto es decidido por gigagars y gigabytes.
2 S t.z. filosofía Mejor nivel de 2 (DB, cliente) que 3. pero esto se decide por un cambio de filosofía
3 Todos los argumentos del tut sonaban como "en los tres enlaces puedes hacer lo mismo, y no más complicado". Y no hubo ninguno en el que diga "es más fácil" (déjame, tonto, correcto). hammers.ru no considere



Ketmar ©   (2006-10-26 01:02) [84]

> [82] Igor Shevchenko (c) 25-Oct-2006, 23: 00
> De hecho, la mayoría del software
> creado específicamente para trabajar con corporativos estándar
> base de datos.
¿Es esta una cita incompleta, o estoy entendiendo algo mal?



euru ©   (2006-10-26 01:50) [85]


> Igor Shevchenko © (25.10.06 23: 00) [82]

> Llegué a Kite:
El razonamiento de Kite es característico del equipo de desarrollo de dicha empresa. Todos los argumentos son en realidad excusas veladas por la necesidad de su presencia en la empresa.
Las empresas que desarrollan software de aplicación, en la mayoría de los casos, luchan exactamente por lo contrario: cubrir tantas plataformas y DBMS como sea posible con su desarrollo. Al mismo tiempo, intentan minimizar el código dependiendo del DBMS para reducir la probabilidad de errores durante la adaptación.

> "La dependencia de la base de datos debería
> para ser el objetivo por el que debes luchar y no para evitarlo.
Y por alguna razón me pareció que el objetivo debería ser desarrollar la solución más efectiva para las tareas. Y esto no siempre es el desarrollo de su propio software con referencia a un DBMS específico.

> Si la gerencia de la compañía considera que es posible invertir
> efectivo en la base de datos y quiere software
> el software se desarrolló en el menor tiempo posible,
> entonces la única forma es usar todas las funciones
> bases de datos.
De hecho, hay una forma aún más corta: usar soluciones preparadas. El software de terceros que ya se ha desarrollado para resolver problemas similares a las tareas de la empresa es generalmente más eficiente y más barato que los diseños realizados por artesanos en la empresa.

> El hecho es que, aparte de los más simples
> aplicaciones, la independencia de la base de datos es un placer
> extremadamente costoso y absorbe una gran cantidad de recursos.
Y esto es un dolor de cabeza para una compañía de software. La empresa no tiene frío ni calor, qué costos y qué recursos invirtió el desarrollador para garantizar su independencia del DBMS.

> Crear aplicación
> rápidamente y con solo unas pocas líneas de código -
> esto es por lo que debes esforzarte. Y trabajar con la condición
> independencia de la base de datos o, peor aún, negligencia
> (intencional o como resultado de conocimiento insuficiente)
> Las capacidades de la base de datos no deberían ser el objetivo.
Y los procedimientos almacenados son, según tengo entendido, una panacea para lograr este objetivo. ¿Es posible, por ejemplo, usar HP para obtener datos de fuentes de datos externas y, por el contrario, cargar datos procesados ​​en fuentes de datos externas?

> La mejor manera
> permitiéndole alcanzar un cierto nivel de movilidad de aplicaciones
> para muchas bases de datos, es la codificación de todos los componentes
> Bases de datos utilizadas por la aplicación en procedimientos almacenados.
Bueno, ¿y cómo usar HP para crear una ventana para la entrada de datos, así como organizar su salida?

> Si la aplicación se mueve a otra base de datos, entonces
> debe adaptarse actualizando con nuevas características
> y funciones. Simplemente no es posible transferirlo.
Bueno por supuesto. Los especialistas del departamento de TI de la empresa proporcionaron posibles movimientos de retirada. Por ejemplo, si por alguna razón el DBMS actual no le conviene por algún motivo, podemos cambiar a otro DBMS sin ningún problema, simplemente adaptando el DBMS antiguo al nuevo. Pero por alguna razón guardaron silencio de que tal adaptación está cargada de la ocurrencia de errores que aún necesitan ser encontrados y corregidos. Y esto puede llevar algo de tiempo y, posiblemente, considerable.



euru ©   (2006-10-26 02:46) [86]


> Petr V.Abramov (25.10.06 23: 34) [83]

> 1. con tz de productividad no es necesario manejar grandes volúmenes
> datos del servidor DB al servidor de aplicaciones. Esto, sin embargo, se está resolviendo
> gigagars y gigabytes.
Ahora puedo ser como Etush de "Ivan Vasilievich ...", pero aún así ...
Nuestra empresa tiene un DBMS. 3 de los sistemas principales trabaja simultáneamente en él: un sistema de desarrollo, un sistema de prueba y un sistema productivo. Además, las cajas de arena 1-2 se crean periódicamente para resolver y probar algunas soluciones globales. A su vez, las plantas 5 trabajan simultáneamente con un sistema productivo. Cada planta trabaja con componentes tales como finanzas, logística, control, contabilidad de personal. ¿Realmente cree que la implementación de toda la lógica empresarial en el nivel DBMS será más productiva que ponerla en el servidor de aplicaciones? Tampoco entiendo el problema de la "destilación de grandes datos". De hecho, los canales gigabit se utilizan entre el servidor de la base de datos y los servidores de aplicaciones.


> 2. S t.z. filosofía mejor nivel xnumx
> (DB, cliente) que 3. pero esto se decide por un cambio de filosofía
Si el nivel es 2, entonces la lógica de negocios tendrá que extenderse tanto en el lado del servidor como en el lado del cliente, lo que en el futuro puede generar problemas. Si el nivel 3, toda la lógica de negocios se concentra en el nivel del servidor de aplicaciones, dejando así un grado de libertad tanto en la elección de un sistema de almacenamiento como en la elección de un sistema de interacción con el usuario.


> 3. Todos los argumentos del tut sonaron como "en un enlace de tres puede hacer
> lo mismo, y no más difícil ". Y no había uno donde dice
> "es más fácil" (déjame, tonto, correcto). martillos
> no consideres ru
¿Y si se reduce el número de enlaces? Obtenemos "en el enlace doble, puede hacer lo mismo que en el enlace único, y no más difícil", pero tampoco nadie escribirá que "será más fácil". Naturalmente, la implementación de los tres enlaces es más complicada. Pero al mismo tiempo aparecen oportunidades adicionales. Por ejemplo, en un control de dos enlaces de entrada de información se lleva a cabo por el lado del cliente. Y si de repente necesita rehacer la interfaz de usuario (por ejemplo, a través de un navegador web), deberá reescribir este control. En los tres enlaces, el servidor de aplicaciones realiza tanto el procesamiento de datos como el control de la información ingresada. La pantalla del usuario muestra solo la pantalla para la entrada de datos generada por el servidor de aplicaciones. Por lo tanto, portar la interfaz a un navegador web de ninguna manera afecta el control de los valores ingresados ​​por el usuario.



Sergey Masloff   (2006-10-26 06:22) [87]

euru © (26.10.06 01: 50) [85]
> ¿Es posible, por ejemplo, usar HP para obtener datos de fuentes de datos externas y, a la inversa, cargar datos procesados ​​en fuentes de datos externas?
Si es posible. Además, está hecho y no es difícil ;-)

> Después de todo, se utilizan canales gigabit entre el servidor de la base de datos y los servidores de aplicaciones.
¿Y qué? ¿Su servidor de aplicaciones se une más rápido que DBMS? ¿El sistema de E / S del servidor logra llenar estos canales gigabit? ¿Y si hay más de ellos?

> Si el nivel es 2, entonces la lógica de negocios tendrá que extenderse tanto en el lado del servidor> como en el lado del cliente, lo que en el futuro puede conducir a problemas>
Como dijo mi abuela, puedes tontamente. para romper Puede enfocarlo en el servidor; estamos hablando de HP. Higos en el cliente tiene su propia lógica?

> Y si de repente necesita rehacer la interfaz de usuario (por ejemplo,> a través de un navegador web), deberá reescribir este control
Simplemente no tiene que hacerlo. ¿Está en el servidor? No digo teóricamente: tenemos tanto una interfaz web como a través de servicios web y algunas opciones más.



Sergey13 ©   (2006-10-26 08:37) [88]

> [85] euru © (26.10.06 01: 50)
> El razonamiento de Kite es típico del equipo de desarrollo en
> tal empresa. Todos los argumentos están realmente velados.
> justificación de la necesidad de su presencia en la empresa.
> Empresas que desarrollan software de aplicación, en la mayoría de los casos
> luchar por todo lo contrario: abrazar con sus desarrollos
> tantas plataformas y DBMS como sea posible. Al mismo tiempo intentan
> minimizar el código dependiente de DBMS para reducir la probabilidad
> ocurrencia de errores durante la adaptación.

Es extraño que ESTO haya sido escrito por la persona que escribió las publicaciones de 10 anteriores sobre SAP R / 3. 8-))))))))))))))



Danilka ©   (2006-10-26 09:15) [89]

[81] Kurdle © (25.10.06 21: 52)
¿Y luego MSSQL2005? Dé un ejemplo a Annecy, ya que tal bebida fue sobre la unificación e independencia del DBMS.
:))

[85] euru © (26.10.06 01: 50)
> Bueno, y cómo usar HP para crear una ventana para la entrada de datos

¿Por qué arrancar las amígdalas a través del ano?
Sin embargo, si lo desea, incluso esto es posible. :) (No estoy hablando de amígdalas, sino de una pregunta) :)

> Escriba si de repente por alguna razón el DBMS actual no
> organizar, podemos cambiar fácilmente a otro DBMS, solo
> Adaptar el antiguo DBMS al nuevo.

Te diré un terrible secreto: Kite solo publica libros sobre Orokol y no sobre ningún otro DBMS.
:)

[86] euru © (26.10.06 02: 46)
> Si el nivel 2, entonces la lógica de negocios tendrá que ser manchada como
> en el lado del servidor y en el lado del cliente

¿Por qué?

> Por ejemplo, en una información de dos enlaces se lleva a cabo el control de entrada
> lado del cliente

¿Quién y por qué?



Petr V.Abramov   (2006-10-26 09:52) [90]

> Después de todo, entre el servidor de bases de datos y los servidores de aplicaciones se utilizan
> canales gigabit.
y en un higo generalmente estos canales algo ???
beneficio m. solo en un caso: Pidarox como DBMS, con los medios para desarrollar la lógica de "servidor" resultante de esto
> ¿Realmente cree que la implementación de toda la lógica empresarial a nivel DBMS
> será más productivo que ponerlo en el servidor
> aplicaciones
Yo creo que si.
seleccionar ...
de a, b
donde a.id = b.id
un servidor funcionará más rápido que los codificadores en un servidor de aplicaciones



Игорь Шевченко ©   (2006-10-26 10:09) [91]

euru © (26.10.06 01: 50) [85]


> Empresas que desarrollan software de aplicación, en la mayoría de los casos
> luchar por todo lo contrario: abrazar con sus desarrollos
> tantas plataformas y DBMS como sea posible. Al mismo tiempo intentan
> minimizar el código dependiente de DBMS para reducir la probabilidad
> ocurrencia de errores durante la adaptación.


He estado viviendo en el mundo durante muchos años, una buena mitad de ellos se dedican a la programación relacionada con la base de datos. Créame, en mi vida no encontré la tarea típica de adaptar una aplicación a diferentes DBMS. No diría que mi mundo es tan limitado que solo su estrechez determina la ausencia de precedentes masivos para la adaptación de aplicaciones.


> Pero por alguna razón me pareció que el objetivo debería ser desarrollar
> la solución más efectiva para las tareas. Y esto
> no siempre desarrolla su propio software con referencia a un programa específico
> DBMS.


¿Y cuáles son las alternativas?


> De hecho, hay una forma aún más corta: usar productos prefabricados
> decisiones. Software de terceros ya desarrollado para resolver problemas,
> similar a las tareas de la empresa, en general, más eficiente
> y más barato que los desarrollos realizados por artesanos en la empresa.
>


Más efectivo, tal vez. Más barato, muy cuestionable.
Te diré una cosa: el software orientado a un DBMS específico puede ser desarrollado no solo por "artesanos en la empresa", sino también por un desarrollador independiente externo.


> Y esto es un dolor de cabeza para una empresa de software. Empresa
> ni frío ni calor, qué costos y recursos invertidos
> desarrollador para garantizar la independencia del DBMS.


Como saben, una compañía de software no va a trabajar con pérdidas. Y si ella va a hacerlo, entonces no estará involucrada en esto por mucho tiempo.


> Bueno, y cómo usar el HP para crear una ventana para la entrada de datos, y
> también organizar su retirada?


Si hace tales preguntas, entonces no está en el tema o simplemente quiere inundar. En ambos casos, creo que no es necesario responder la pregunta.


> Escriba si de repente por alguna razón el DBMS actual no
> organizar, podemos cambiar fácilmente a otro DBMS, solo
> Adaptar el antiguo DBMS al nuevo.


Por lo general, piensan con la cabeza antes de tomar decisiones.



saxon   (2006-10-26 10:52) [92]


> euru © (26.10.06 01: 50) [85]
> Empresas que desarrollan software de aplicación, en la mayoría de los casos
> luchar por todo lo contrario: abrazar con sus desarrollos
> tantas plataformas y DBMS como sea posible. Al mismo tiempo intentan
> minimizar el código dependiente de DBMS para reducir la probabilidad
> ocurrencia de errores durante la adaptación.

También tuve que hacer esto, pero no está claro: ¿qué no le gustó a HP aquí?



euru ©   (2006-10-26 11:49) [93]


> Sergey Masloff (26.10.06 06: 22) [87]



> Sí, es posible. Además, está hecho y no es difícil ;-)
Es decir ¿Se propone en un DBMS, que ya está cargado para su propósito previsto, colgar tareas que son inusuales para él (por ejemplo, interacción con otros sistemas, cálculo de un modelo dimensional 3, etc.)? ¿Y será esta la solución más efectiva?


> Y que? Su servidor de aplicaciones se une
> DBMS más rápido? Y el sistema de E / S del servidor gestiona estos
> llenar canales gigabit? ¿Y si hay más de ellos?
Aún así, la lógica empresarial es algo más que una secuencia de sentencias SQL dispersas con instrucciones aritméticas. Por lo tanto, las tablas JOIN en relación con la lógica de negocios son la misma tarea elemental que el comando del procesador ADD en relación con el operador "+" de un lenguaje de alto nivel. No es necesario emular la unión de tablas en el servidor de aplicaciones si el DBMS lo hace efectivo.


> Como dijo mi abuela, puedes tontamente. para romper
> Puede centrarse en el servidor: estamos hablando de HP. En la fig.
> ¿el cliente tiene su propia lógica?
La lógica empresarial no es solo procesar información y controlar su integridad. También es la entrada de datos en el sistema y la salida de los resultados. ¿Cómo, sin escribir una sola línea en el lado del cliente, HP interactuará con el cliente para garantizar la exactitud de los datos ingresados? Nuevamente, ¿cómo controlarán los procedimientos de HP la visualización de resultados en el cliente?


> Simplemente no es necesario. ¿Está en el servidor? Teóricamente no digo: tenemos
> y una interfaz web y a través de servicios web y varias opciones más.
Es decir, al escribir la interfaz de usuario en WinAPI, sin volver a escribir una sola línea del lado del cliente, ¿puede acceder al sistema a través de un navegador web y obtener exactamente la misma interfaz?


> Sergey13 © (26.10.06 08: 37) [88]
> Es extraño que ESTO haya sido escrito por una persona que escribió las publicaciones de 10 anteriores sobre SAP R / 3. 8-))))))))))))))
¿Y cuáles son las contradicciones entre las publicaciones escritas aquí y el 10 th anterior?


> Igor Shevchenko © (26.10.06 10: 09) [91]



> Vivo durante muchos años en el mundo, una buena mitad de ellos están comprometidos
> programación relacionada con la base de datos. Cree en
> Nunca me he encontrado con la típica tarea de adaptación en mi vida
> aplicaciones para diferentes DBMS. No diría que mi mundo
> tan limitado que solo se determina su estrechez
> falta de precedentes de casos de uso de aplicaciones masivas.
Pero, ¿qué pasa con 1С, SAP R / 3, Axapta?


> Si hace tales preguntas, entonces no está en el tema, o
> Solo quiero inundar.
¿No en el tema de qué? ¿Puede HP organizar una interfaz de E / S visual? Aquí realmente no estoy en el tema. Solo sé que las posibilidades de HP en el año 98 no permitieron esto.
¿Es posible controlar la interfaz de usuario en el lado del servidor? Usted puede Esto es exactamente lo que se está haciendo en SAP R / 3. El servidor de aplicaciones forma una pantalla y la envía a la computadora del usuario. La tarea del cliente es mostrar la pantalla resultante en el monitor y enviar la información ingresada al servidor de aplicaciones.



euru ©   (2006-10-26 11:59) [94]


> Igor Shevchenko © (26.10.06 10: 09) [91]



> Generalmente piensa con la cabeza antes de tomar decisiones.
Sobre la adaptación, no mis palabras, sino Kite. Acabo de comentar sobre ellos. Debe haberlo pensado antes de hablar. Y si no lo pensaste, ¿vale la pena tomarse en serio sus otras declaraciones?


> sajón (26.10.06 10: 52) [92]



> Tuve que hacer esto, pero no está claro, ¿qué es?
> HP no por favor?
1 Diferentes fabricantes de DBMS tienen diferentes sintaxis para XP, y algunos DBMS pueden no tener ninguno.
2 La lógica integrada en el HP puede ser tan compleja que, en lugar de procesar solicitudes, el servidor de la base de datos gastará sus recursos en el procesamiento de estos HP.



Игорь Шевченко ©   (2006-10-26 12:15) [95]

euru © (26.10.06 11: 49) [93]


> Pero, ¿qué pasa con 1С, SAP R / 3, Axapta?


SAP R / 3 esencialmente escribió su base de datos. Tienen mucho tiempo y dinero, no creo que ninguno de los presentes en este hilo tenga una situación similar.
1С, por cierto, también tiene mucho tiempo y dinero.


> La lógica empresarial no es solo el procesamiento y control de la información
> su integridad. También es entrada de datos en el sistema y salida
> resultados.


Introducir datos en el sistema no es una lógica empresarial.


> Cómo, sin escribir una sola línea en el cliente
> lado, HP interactuará con el cliente para garantizar
> corrección de los datos ingresados? De nuevo, como los procedimientos de HP
> controlará la visualización de resultados en el cliente?


De ninguna manera Al igual que una tabla en una base de datos no controla la entrada y salida de datos.


> ¿Es posible controlar la interfaz de usuario en el lado del servidor?
> Puedes. Esto es exactamente lo que se está haciendo en SAP R / 3. Servidor de aplicaciones
> forma una pantalla y la envía a la computadora del usuario.
> La tarea del cliente es mostrar la pantalla resultante
> al monitor y enviando la información ingresada al servidor
> aplicaciones.


Y además de SAP R / 3, ¿alguien hace esto?



stone ©   (2006-10-26 12:22) [96]


> Introducir datos en un sistema no es una lógica empresarial.

¿No confundes la lógica empresarial con un proceso empresarial?

> Cómo, sin escribir una sola línea en el cliente
> lado, HP interactuará con el cliente para
> garantía
> corrección de los datos ingresados? De nuevo, como los procedimientos de HP
> controlará la visualización de resultados en el cliente?
>
> De ninguna manera. Como una tabla en una base de datos
> no controla la entrada y salida de datos.

HP puede garantizar la exactitud de los datos ingresados, informar errores de entrada, realizar operaciones grupales, etc. mucho más efectivo que la aplicación del cliente. Del mismo modo, el resultado de CP es un conjunto de campos y sus nombres, independientemente del esquema de datos real, es decir, esencialmente controla la visualización de resultados.



saxon   (2006-10-26 12:47) [97]


> euru © (26.10.06 11: 59) [94]
> 1. Los diferentes fabricantes de DBMS tienen una sintaxis diferente.

La sintaxis no tiene absolutamente nada que ver con eso, lo principal es que la interfaz es la misma.

Y en cuanto a > y algunos DBMS pueden no tener HP en absoluto.
No vale la pena considerar tales opciones por su impracticabilidad original (opciones). Bueno, en realidad, ¿es necesario crear un sistema que pueda funcionar con Oracle o una paradoja?


> euru © (26.10.06 11: 59) [94]
> 2. La lógica detrás de HP puede ser tan compleja
> qué, en lugar de procesar solicitudes,
> el servidor de la base de datos gastará sus recursos en el procesamiento de estos HP.

Bueno, sobre dónde y qué tipo de cuello de botella ya se ha hablado mucho.



Игорь Шевченко ©   (2006-10-26 12:53) [98]

euru © (26.10.06 11: 59) [94]


> Sobre la adaptación, no mis palabras, sino Kite. Acabo de comentar sobre ellos.
> Supongo que pensó antes de dirigirse. Y si
> No pensé, ¿vale la pena tomarse en serio sus otras declaraciones?
>



> Bueno, por supuesto. Los especialistas del departamento de TI de la empresa han proporcionado
> posibles movimientos de retirada. Como si de repente
> las razones por las que el DBMS actual no se adaptará, no somos un problema
> cambiemos a otro DBMS simplemente adaptando el viejo DBMS
> bajo lo nuevo. Pero por alguna razón guardaron silencio que tal adaptación está cargada de
> la ocurrencia de errores que aún necesitan ser encontrados y corregidos.
> Y esto puede llevar algo de tiempo y, posiblemente, considerable.
>


La cometa no escribió esto. Por lo tanto, mis palabras sobre pensar con tu cabeza se relacionan específicamente con tu comentario.


> La lógica inherente a HP puede ser tan compleja que,
> en lugar de procesar solicitudes, el servidor
> La base de datos gastará sus recursos en el procesamiento de estos HP.


Algún tipo de tontería. Si se necesitan algunas acciones para el proceso de negocio, deben realizarse de una forma u otra. Por lo tanto, la frase "en lugar de procesar solicitudes" - inicialmente delirante.



Evgeny V ©   (2006-10-26 14:23) [99]


> euru © (26.10.06 11: 59) [94]
> 2. La lógica detrás de HP puede ser tan compleja
> qué, en lugar de procesar solicitudes,
> el servidor de la base de datos gastará sus recursos en el procesamiento de estos HP.
>


por ejemplo, supongamos una consulta compleja de una tabla con un montón de UNIONES en el DBMS IB6

SELECCIONAR * DESDE TABLE1 DONDE ..... la consulta se ejecuta durante 20 segundos

SELECT * FROM MYXP (PARAM1, PARAM2 ...) ejecuta 2 sec

Y luego otra consulta, los resultados se devuelven igual. Solo la segunda solicitud del procedimiento almacenado. ¿Por qué debería renunciar a HP en este caso, donde la aplicación. ¿El servidor dará una victoria en este caso si no utiliza HP?



Danilka ©   (2006-10-26 14:30) [100]

[93] euru © (26.10.06 11: 49)
> Cómo, sin escribir una sola línea en el cliente
> lado, HP interactuará con el cliente para garantizar
> corrección de los datos ingresados? De nuevo, como los procedimientos de HP
> controlará la visualización de resultados en el cliente?

Si los datos transmitidos por el HP no son correctos, entonces se levanta el error con el mensaje correspondiente, que el cliente muestra fielmente. Sin ningún enlace de tres.



kaif ©   (2006-10-26 15:24) [101]

2 Kurdl © (25.10.06 21: 52) [81]

Revisé tu solicitud.
:)

Esta es la sintaxis de ORACLE. La construcción con es poco probable que comprenda MySQL. No sé acerca de MSSQL, tal vez lo haga, no he trabajado con él durante mucho tiempo.

Y el IB ciertamente no lo entenderá.

Si miras detenidamente, la esencia se reduce nuevamente a cómo crear de alguna manera intervalo de tiempo establecidoy luego segunda solicitud agrupar sus resultados. De hecho misma funcionalidadque logré con la ayuda de HP en IB.
Y aquí hay dos consultas en cascada, y no solo una.

En general, gracias a las características de sintaxis desarrolladas, ORACLE (consultas sobre los resultados de otras consultas) me permitió prescindir completamente de XP en mi último trabajo con ORACLE.

Si trabaja principalmente con ORACLE, entonces entiendo que la idea de usar HP puede parecerle redundante, especialmente si ORACLE no tiene un comando SUSPENDER y es imposible manejar procedimientos como en IB (haga consultas como tablas).

Pero, digan lo que digan, el punto aquí no está filosóficamente en HP.

Y en eso ¿Es posible que los desarrolladores utilicen un arsenal especial de herramientas de servidor??

Supongamos que alguien trabaja con árboles.
Insistirá en que HP tampoco es necesario aquí.
Teniendo en cuenta que ORACLE tiene una sintaxis dedicada a cosas como las no relacionales como un árbol. Pero esto es solo ORACLE.

¿Y el resto del servidor?

Si alguien en IB extiende la "sintaxis del servidor" a ORACLE a través de XP, ¿qué pasa?
Por ejemplo, puedo hacer una llamada recursiva en IB si necesito procesar una "estructura de madera" del ID del formulario, PARENTY_ID. Y mientras sigo usando FB gratis.

No puedo ofrecer a mis clientes (pequeñas empresas) que compren ORACLE, y mucho menos usar uno pirateado si quieren mantener un presupuesto aceptable.

---------------------------
Propongo detenerme en esto.
Los servidores son diferentes.
Hay servidores que se esfuerzan por crear un conjunto completo de funcionalidades para caballeros para todas las ocasiones, lo que satisfaría usuario o programador del servidor en el rol de usuarioPero estos servidores suelen ser caros. Y a veces, increíblemente caro (ORACLE).

Y para varias tareas de 90%, esta funcionalidad es redundante.

Es decir, el comprador de dicho servidor, si no utiliza al menos 10% de las posibilidades de este exceso de funcionalidad, puede estar satisfecho con la idea de que su dinero paga por la oportunidad de aquellos que usan 100% de la funcionalidad de comprar este servidor por menos de lo que valdría para ellos, si hubiera una opción Todos los participantes del mercado tienen qué funcionalidad pagar y cuáles no.

Hay servidores basados ​​en un principio diferente. Un ejemplo sorprendente es la familia InterBase. Este es un servidor que permite debido a HP expandir la funcionalidad del servidor al grado requerido. Además, el servidor en sí no contiene nada superfluo. Y si suponemos que para los desarrolladores de servidores de bases de datos son "aplicaciones de servidor" en el mismo sentido que sus propios productos para desarrolladores de "aplicaciones de servidor", entonces podemos encontrar un criterio para recomendar a quienes incorporan HP a la base de datos, y lo que no.

Al construir en HP, el desarrollador simplemente debe responder la pregunta: "¿Cómo estoy expandiendo exactamente el servidor DBMS ahora? ¿Qué estoy agregando que sería lo suficientemente universal?" Aquí el enfoque es el mismo que cuando se crean nuevas clases. "No hagas una metaclase que no te guste" (no recuerdo al autor, pero la frase es buena).

Es decir, no es necesario, por ejemplo, organizar la recepción de una factura o página HTML en forma de HP. Pero el "controlador de árbol" o el "controlador de espectro" no pueden considerarse como elementos innecesarios colgados en el DBMS, ya que esto no es cambio simple trabajar en el servidor DBMS y empoderamiento Servidor DBMS al nivel requerido en esta tarea sin reemplazar el servidor por uno más costoso. Es decir, HP debe escribirse a quienes pretenden ahorrar dinero y reducir el costo el producto



Danilka ©   (2006-10-26 15:41) [102]

[101] kaif © (26.10.06 15: 24)
En realidad, esto no es Orokol, sino MSSQL2005.
Está comenzando con la versión 2005 que apareció la construcción "WITH ...", la llamada "expresión de tabla común".

> Tampoco puedo ofrecer a mis clientes (pequeñas empresas)
> comprar ORACLE, mucho menos usar un pirata si
> quiere cumplir con un presupuesto aceptable.

OracleXE, así como MSSQL2005XE son gratuitos para cualquier persona, incluidos y uso comercial.
Limitaciones: base 4 GB y no importa qué servidor trucado se utilizará, no más de 1 GB de RAM y procesador 1.



kaif ©   (2006-10-26 15:45) [103]

Déjame darte otro ejemplo con seguridad.
El servidor IB (no sé cómo ORACLE) no permite hacer GRANT en una fila de la tabla.
Si quiero tener control de acceso a nivel de fila en el nivel de consulta SELECT, entonces la forma más fácil es usar XP.

ID, DATOS, USER_NAME
=================
1 1231 VASIA
2 456546 VASIA
3 77897 PETIA

Digamos que los datos de DATA son extremadamente sensibles. Tan secreto que no puedo otorgar ninguna CONCESIÓN a la tabla en su conjunto al usuario de VASIA. Y no tengo tres enlaces que velen este problema.

Entonces aquí estoy escribiendo un procedimiento:

CREAR PROCEDIMIENTO GET_SECRET_DATA
DEVOLUCIONES (ID INTEGER, DATA INTEGER)
AS
EMPEZAR
PARA SELECCIONAR DE SECRET_DATA
WHERE USER_NAME =: USER / * USER es una función que devuelve el nombre de usuario actual en IB * /
INTO: ID ,: DATOS
SUSPENDER;
FIN

Y yo hago:

CONCESIÓN SELECCIONAR EN LA TABLA SECRETO_DATOS PARA EL PROCEDIMIENTO GET_SECRET_DATA;
OTORGAR EJECUTAR EN EL PROCEDIMIENTO OBTENER_DATOS_REGATOS A VASIA;
OTORGAR EJECUTAR EL PROCEDIMIENTO OBTENER_DATOS_SECRETOS A PETIA;

Y tengo una garantía total de seguridad de datos, incluso si VAISA o PETIA son piratas informáticos malintencionados y, además de mi aplicación, pueden ejecutar algunos IBExpert y utilizar utilidades como ISQL que desean analizar los datos de otras personas sin pasar por todas mis aplicaciones.



kaif ©   (2006-10-26 15:48) [104]

Entonces VASIA puede trabajar con GET_SECRET_DATA como con una tabla normal
SELECCIONAR * DESDE GET_SECRET_DATA
y ni siquiera sospechar que todavía hay datos inaccesibles almacenados para él.



Курдль ©   (2006-10-26 15:48) [105]


> Danilka © (26.10.06 15: 41) [102]
> En realidad, esto no es Orokol, sino MSSQL2005.

En realidad, esta solicitud en particular se creó e intentó primero en Sybase ASA. Pero sin ningún cambio, debe trabajar en DB2 y Oracle :)



Курдль ©   (2006-10-26 15:55) [106]


> kaif © (26.10.06 15: 45) [103]
> Daré un ejemplo más con seguridad.
> El servidor IB (no sé cómo ORACLE) no permite hacer GRANT
> por fila de tabla.
> Si quiero tener gestión de derechos SELECT en el nivel de consulta
> acceso a nivel de fila, entonces la forma más fácil es usar
> HP.


De nuevo, ¡apuesto! ¡La forma más fácil es usar vistas! :)
¡Y le aseguro que en nuestro tiempo es dudosa la conveniencia del control de acceso a través de privilegios para cada usuario!



Игорь Шевченко ©   (2006-10-26 15:57) [107]

© Kurdl (26.10.06 15: 55) [106]

> Y te aseguro que en nuestro tiempo la conveniencia del control de acceso
> a través de privilegios para cada usuario es dudoso!


Y esta temporada, ¿a qué está de moda controlar el acceso? :)



kaif ©   (2006-10-26 16:02) [108]

Danilka © (26.10.06 15: 41) [102]
OracleXE, así como MSSQL2005XE son gratuitos para cualquier persona, incluidos y uso comercial.


Gracias No lo sabia Esta es realmente una información muy valiosa para mí. Retrasado en la vida ... Sabía que existe Oracle y MSSQL es gratuito para los desarrolladores, pero para uso comercial, lo escucho por primera vez.



Курдль ©   (2006-10-26 16:04) [109]


> Igor Shevchenko © (26.10.06 15: 57) [107]
> Y esta temporada, ¿a qué está de moda controlar el acceso? :)


Como un "que"? !! En varias sucursales, insisto en que el servidor de aplicaciones funcione. :)

Pero además de la risa, no está lejos de la verdad.



Evgeny V ©   (2006-10-26 16:10) [110]


> Kurdl © (26.10.06 16: 04) [109]


> Pero además de la risa, no está lejos de la verdad.


No siempre ocurren tareas de diferentes niveles. Y, en cualquier caso, el servidor de aplicaciones no elimina la necesidad de HP cuando realmente se necesitan.



Игорь Шевченко ©   (2006-10-26 16:10) [111]

© Kurdl (26.10.06 16: 04) [109]

Llámame paranoico, pero nunca confiaré en el control de acceso de datos a nadie más que al servidor de la base de datos.



Курдль ©   (2006-10-26 16:15) [112]


> Evgeny V © (26.10.06 16: 10) [110]
> No siempre ocurren tareas de diferentes niveles. Y de todos modos
> el servidor de aplicaciones no elimina la necesidad de HP cuando
> son realmente necesarios.


¡Esto es un epitafio digno de todo esto, por supuesto, una rama útil pero prolongada! :)


> Igor Shevchenko © (26.10.06 16: 10) [111]
> Llámame paranoico, pero nunca confiaré en la administración
> acceso a datos a cualquier persona que no sea el servidor de bases de datos.

Yo también hice un esfuerzo antes de delegar la mayoría de las funciones de acceso al servidor de aplicaciones. ¡Pero esto no significa que le haya dado un DBO! Naturalmente, hay grupos de usuarios con sus privilegios. Pero dirigir subsidios para registros específicos en tablas específicas, ¡así es como me llamas!



Игорь Шевченко ©   (2006-10-26 16:16) [113]

© Kurdl (26.10.06 16: 15) [112]

Bueno, ese usuario llega al servidor con su herramienta de acceso y dice, pero elige para mí los datos de la tabla que no puedo ver desde el servidor de aplicaciones ...



kaif ©   (2006-10-26 16:18) [114]

© Kurdl (26.10.06 15: 55) [106]
De nuevo, ¡apuesto! ¡La forma más fácil es usar vistas! :)


Es difícil estar en desacuerdo. Quítate el argumento.



Курдль ©   (2006-10-26 16:22) [115]


> Igor Shevchenko © (26.10.06 16: 16) [113]
> Bueno, ese usuario llega al servidor con su
> medios de acceso ...


¿Qué es ese pastelito? ¿Enemigo de la gente? ¿Amante del administrador del sistema reclutado por la CIA? :)
Después de todo, se supone que el servidor de aplicaciones no es confiable para cualquiera. Sí y así, por ejemplo, sin dbo o propietario, ni siquiera sabrá qué tablas hay en una base de datos en particular (a menos que realmente sea un espía y tenga un modelo de base de datos).



Игорь Шевченко ©   (2006-10-26 16:33) [116]

© Kurdl (26.10.06 16: 22) [115]


> Después de todo, se supone que el servidor de aplicaciones no es confiable
> cualquiera. Sí y así, por ejemplo, sin dbo o propietario.
> a ni siquiera sabe qué tablas hay en una base de datos particular (a menos que
> que realmente eres espías y tienes un modelo de base de datos).


No entiendo una cosa: por qué cargar el servidor de aplicaciones con tareas inherentes (e implementadas con éxito allí) al servidor de la base de datos.
Déjelo que se ocupe de su negocio: servir a clientes delgados.



Курдль ©   (2006-10-26 16:44) [117]


> Igor Shevchenko © (26.10.06 16: 33) [116]
> No entiendo una cosa: por qué cargar el servidor
> aplicaciones con tareas inherentes (e implementadas con éxito
> allí) al servidor de la base de datos.
> Déjelo que se ocupe de sus negocios: sirve a clientes delgados


¿Qué resultará, por ejemplo, en la implementación del proceso comercial de registrar un usuario del sistema desde el nivel de la interfaz de usuario para obtener los privilegios apropiados?



saxon   (2006-10-26 17:01) [118]


> ¿Qué resultará, por ejemplo, de la implementación de un proceso de registro de empresas?
> usuario del sistema desde el nivel de interfaz de usuario
> hasta que reciban los privilegios apropiados?

Sí, es muy interesante observar esa "implementación" en los tres enlaces y sin el uso de CP.



Игорь Шевченко ©   (2006-10-26 17:07) [119]

© Kurdl (26.10.06 16: 44) [117]


> ¿Qué resultará, por ejemplo, de la implementación de un proceso de registro de empresas?
> usuario del sistema desde el nivel de interfaz de usuario
> hasta que reciban los privilegios apropiados?


¿En la creación de la sesión? Lo adiviné ¿verdad? Y se comprobarán los privilegios para él cuando intente acceder a los objetos de la base de datos correspondientes.



Курдль ©   (2006-10-26 17:14) [120]


> sajón (26.10.06 17: 01) [118]
> Sí, es muy interesante observar esa "realización" en los tres enlaces
> y sin el uso de CP.

¿Y cómo muestras esto? Invitar a visitar?
Solo en los tres enlaces sin CP, esto se implementa fácilmente. Si suponemos que el privilegio de usuario es un atributo de la entidad de usuario del mismo modelo de datos que para toda la aplicación, trabajar con este atributo no es diferente de, por ejemplo, trabajar con el atributo BIC de la entidad del Banco. Si es necesario introducir restricciones incluso a nivel de registros individuales, esto se resuelve mediante la consulta habitual en una tabla o vista.
También tuve que implementar la administración de privilegios en el nivel DBMS (aunque también sin XP). Pero para esto, el módulo administrativo del sistema tenía que otorgar privilegios realmente peligrosos para acceder a las tablas y vistas del sistema, incluida la modificación.
¿O imagina que el sistema funciona por sí solo y que los usuarios en él son "guiados" por un administrador de base de datos especialmente capacitado?



kaif ©   (2006-10-26 17:15) [121]

© Kurdl (26.10.06 16: 44) [117]
¿Qué resultará, por ejemplo, en la implementación del proceso comercial de registrar un usuario del sistema desde el nivel de la interfaz de usuario para obtener los privilegios apropiados?


Está bien.
Acabo de resolver un problema similar hace un par de días.
Creé una tabla:

TABLE ACTION_LIST:
ID NOMBRE
=================
1 Acceso a algo
2 Derecho a editar algo
Acceso 3 a tal y tal interfaz
Botón 4 disponibilidad regular
....
Una lista bastante informal y en un lenguaje que la gente entiende, una lista de cosas que son esenciales para una tarea específica que resolví.

Tengo otra mesa

TABLE ACTION_PRIVILEGES:
ACTION_ID, PRIVILEGE, RELATION_NAME
================
TABLA 1 S TABLA 1
1 I TABLE1
1 U TABLE1
TABLA 1 S TABLA 2
2 I TABLE2
2 E PROCEDURE1
...

Y así sucesivamente.
Por supuesto, el injerto en algunos objetos puede "cruzarse" en diferentes "privilegios sobre las funciones del sistema".

Está bien.
Además, escribí exactamente el HP que me devuelve todos los comandos GRANT o REVOKE necesarios si el administrador proporciona / retira la función del sistema para este usuario:

/*Процедура возвращает команды, которые необходио выполнить для предоставления
 всех прав пользователю в связи с действием ACTION_ID*/
CREATE PROCEDURE GET_PRIVILEGE_COMMANDS(USER_ID INTEGER, ACTION_ID INTEGER, SET_GRANTS SMALLINT)
RETURNS (GRANT_COMMAND VARCHAR(255) CHARACTER SET ASCII)
AS
DECLARE VARIABLE USER_NAME VARCHAR(31) CHARACTER SET ASCII;
DECLARE VARIABLE RELATION_NAME VARCHAR(31) CHARACTER SET ASCII;
DECLARE VARIABLE PRIVILEGE CHAR(1) CHARACTER SET ASCII;
DECLARE VARIABLE TMP VARCHAR(30) CHARACTER SET ASCII;
BEGIN
 SELECT USER_NAME FROM USER_LIST
 WHERE USER_ID = :USER_ID
 INTO :USER_NAME;

 /*Все привилегии на объекты базы, которые надо предоставить*/
 FOR SELECT DISTINCT AP.PRIVILEGE,  AP.RELATION_NAME
 FROM  ACTION_PRIVILEGES AP
       LEFT OUTER JOIN RDB$USER_PRIVILEGES UP
       ON RDB$USER = :USER_NAME AND
          RDB$RELATION_NAME = AP.RELATION_NAME AND
          AP.PRIVILEGE = UP.RDB$PRIVILEGE AND
          AP.RELATION_NAME = UP.RDB$RELATION_NAME
 WHERE :SET_GRANTS = 1 AND ACTION_ID = :ACTION_ID AND UP.RDB$PRIVILEGE IS NULL
 UNION
 /*Все привилегии на объекты базы, которые надо отозвать*/
 SELECT DISTINCT AP1.PRIVILEGE,  AP1.RELATION_NAME
 FROM  ACTION_PRIVILEGES AP1
       INNER JOIN RDB$USER_PRIVILEGES UP
       ON RDB$USER = :USER_NAME AND
          RDB$RELATION_NAME = AP1.RELATION_NAME AND
          AP1.PRIVILEGE = UP.RDB$PRIVILEGE AND
          AP1.RELATION_NAME = UP.RDB$RELATION_NAME
       LEFT OUTER JOIN ACTION_PRIVILEGES AP2
       ON AP1.RELATION_NAME = AP2.RELATION_NAME AND
          AP1.PRIVILEGE = AP2.PRIVILEGE AND
          AP2.ACTION_ID <> :ACTION_ID
 WHERE :SET_GRANTS = 0 AND AP1.ACTION_ID = :ACTION_ID AND AP2.PRIVILEGE IS NULL
 INTO :PRIVILEGE,  :RELATION_NAME
 DO
 BEGIN
   IF (PRIVILEGE = "S") THEN TMP =      "SELECT ON ";
   ELSE IF (PRIVILEGE = "I") THEN TMP = "INSERT ON ";
   ELSE IF (PRIVILEGE = "U") THEN TMP = "UPDATE ON ";
   ELSE IF (PRIVILEGE = "D") THEN TMP = "DELETE ON ";
   ELSE IF (PRIVILEGE = "R") THEN TMP = "REFERENCES ON ";
   ELSE IF (PRIVILEGE = "E") THEN TMP = "EXECUTE ON PROCEDURE ";

   IF (SET_GRANTS = 1) THEN
     GRANT_COMMAND = "GRANT "||TMP||RELATION_NAME||" TO "||USER_NAME||";";
   ELSE
     GRANT_COMMAND = "REVOKE "||TMP||RELATION_NAME||" FROM "||USER_NAME||";";

   SUSPEND;
 END
END


Doy este texto al público en general.
:)
Funciona asombrosamente.

También hay una tabla en la que a cada usuario se le otorgan privilegios sobre las funciones:

TABLE USER_ACTIONS
USER_ID, ACTION_ID
==================
1 1
1 2
2 1
3 1
3 2
3 3
....

Y una tabla con todos los usuarios
TABLE USER_LIST
ID USER_NAME NAME
==================
1 VASIA Vasya
2 PETIA Petya
....

En total, tenemos tablas 4: una tabla de usuarios, una tabla de "funciones del sistema", una tabla de privilegios de funciones sobre objetos base y una tabla de privilegios de usuarios sobre "funciones de un sistema".

Este es todo el sistema de seguridad de lo que estoy escribiendo ahora.

Al inicio, la aplicación solicita de la tabla USER_ACTIONS todos los privilegios de usuario para las funciones del sistema y los controladores de eventos OnShow de todos los formularios de Delphic verifican los privilegios para las funciones necesarias llamando a la función IsActionGranted (action_id: integer). El usuario obtiene la interfaz que debe ser diseñada por el desarrollador y de acuerdo con los derechos a las funciones que el "Administrador" le otorgó, colocando un pájaro al lado de la "función del sistema" cuando distribuye privilegios a este usuario.

Cuando el administrador "pone un pájaro" en la función No. 13, se inserta una entrada inmediatamente en la tabla USER_ACTIONS e inmediatamente se realiza una solicitud al HP que he citado.

SELECCIONAR * DESDE GET_PRIVILEGE_COMMANDS (1, 13, 1)
El procedimiento devuelve un conjunto de frases de la forma GRANT ...., que son simplemente ejecutadas por la utilidad del administrador.

Si el administrador eliminó el pájaro, el registro correspondiente se elimina de la tabla USER_ACTIONS y se realiza una solicitud para el mismo procedimiento

SELECCIONAR * DESDE GET_PRIVILEGE_COMMANDS (1, 13, 0)

(el último parámetro es ahora 0)

Y luego se ejecutan los comandos REVOKE ..., que este procedimiento devolvió.
------------------------

Yo mismo no esperaba. pero este funciona y se expande muy fácilmente. Tan pronto como yo (el desarrollador) agregue una nueva interfaz o tablas al sistema, inmediatamente agrego nuevas funciones a la lista ACTION_LIST y los privilegios necesarios a ACTION_PRIVILEGES.

Luego solo tengo que iniciar la aplicación de administración y distribuir los pájaros a los usuarios.

No afirmo que no pueda hacer lo mismo sin el HP que escribí. Usted puede Pero no será posible que este código sea tan fácil de poner en el foro y recomendar a todos los que trabajan con IB. Y además, en HP era más conveniente implementar esto que en el lado del cliente. No sé por qué es más conveniente. Simplemente más conveniente, y eso es todo.

Si alguien puede mostrar cómo, en este caso, usar XP significa incapacidad o falta de voluntad para escribir consultas SQL, lo agradecería enormemente :)
:)



ANB ©   (2006-10-26 17:18) [122]


> Y en cualquier caso, el servidor de aplicaciones no elimina la necesidad
> en HP cuando realmente se necesitan.

Pero HP puede eliminar la necesidad de un servidor de aplicaciones.

Vamos a contar

Tenemos una tarea bastante difícil.

Necesitamos un cliente (lo haremos más o menos grueso para no perder flexibilidad)
y se necesita lógica centralizada.

La lógica del servidor podemos:
a) haber comprado / establecido un obsequio, para guardar todo en el almacenamiento
b) comprando / poniendo eso más simple, distribuir entre almacenamientos y servidor de aplicaciones
c) meter completamente en el servidor de aplicaciones utilizando algún tipo de sub, gratuito y simple.

En las opciones b) yc), en lugar de trabajar en los archivos almacenados, tendremos que escribirlos (y en un lenguaje escaso, lo que reducirá el rendimiento) o insertarlos por completo en el servidor de aplicaciones. Y el servidor de aplicaciones tendrá que escribir de todos modos.
Escribir y depurar un servidor de aplicaciones llevará bastante tiempo. Al mismo tiempo, es poco probable que podamos cambiarlo sobre la marcha, incluso si vimos a través de la DLL (que introducirá hemorroides adicionales). Cualquier cambio en la estructura de la base de datos requerirá una prueba muy cuidadosa. Supongamos que tres programadores fueron lanzados al servidor de aplicaciones y lo escribieron durante seis meses (y este es un servidor de aplicaciones muy simple, tomaré un sistema donde sus personas de 10 escriben y lo agrego durante 7 años, cada vez que se eliminan errores como que el nombre del campo se escribió incorrectamente o olvidé arreglar la solicitud).

En la opción a) no necesitamos un servidor de aplicaciones. La mayoría de los errores triviales ya se detectan al compilar los archivos almacenados. Cuando cambia la estructura de la base de datos, vemos de inmediato los lugares que se han roto debido a esto. Podemos hacer cambios a la lógica en pedazos, nuevamente controlando que lo hayamos roto.

Ahora calcule el costo de la misma (700 bucks es suficiente para una oficina pequeña, pero incluso puede poner un XE gratis para comenzar) y el costo de agregar la funcionalidad del servidor.



ANB ©   (2006-10-26 17:20) [123]


> Pero para esto el módulo administrativo del sistema tenía que
> otorgue privilegios realmente peligrosos para acceder al sistema
> tablas y vistas, incluida la modificación.

¿Esto y por qué?
Amenaza Todo ya está hecho. A nosotros (C) Operación S.



kaif ©   (2006-10-26 17:24) [124]

2 ANB © (26.10.06 17: 18) [122]
Agregaré mis kopecks 5.
Si uso HP en IB, entonces el servidor no me permitirá cometer una serie de errores si se cambia la estructura de la tabla, si estas tablas se cuelgan con HP, ya que IB admite la integridad de los metadatos. Por ejemplo, no puedo eliminar fácilmente el campo utilizado en algunos HP. Y si este campo se usa en alguna aplicación de servidor, simplemente no puedo saber nada sobre esto en la etapa de eliminación del campo.



Курдль ©   (2006-10-26 17:25) [125]


> ANB © (26.10.06 17: 18) [122]

Comenzamos a caminar en círculos. Pase por la rama donde consideré las ventajas de OOP, análisis arquitectónico, etc. antes de la programación procesal.


> ANB © (26.10.06 17: 20) [123]
> ¿Esto y por qué?

¿Qué "por qué"? "¿Por qué alquilar un sistema con funcionalidad completa para el cliente, si es posible capacitar al asistente médico de la clínica provincial para administrar las aportaciones de los usuarios y la asignación de sus privilegios utilizando Oracle?"



ANB ©   (2006-10-26 17:30) [126]


> Kurdl © (26.10.06 17: 25) [125]

¿Por qué dar privilegios para modificar las tablas del sistema?

Hay muchas soluciones preparadas. Que simplemente puede insertar en su proyecto. No será más difícil que en una de tres capas.


> donde consideré los beneficios de la POO

El no tiene ventajas. Y para aquellos que lo quieran, Oracle hace posible trabajar con Java y objetos en pl / sql. Nuevamente, el servidor de aplicaciones no se rindió en la FIG.

En mi humilde opinión: A menudo, los intentos de hacer todo a través de OOP conducen a una solución más engorrosa y compleja. Todo está bien con moderación y en su lugar.



Игорь Шевченко ©   (2006-10-26 17:31) [127]

© Kurdl (26.10.06 17: 25) [125]


> "¿Por qué darle al cliente un sistema con funcionalidad completa?
> si puedes entrenar a un paramédico en una clínica provincial
> gestionar la entrada del usuario y la distribución de sus privilegios
> medios?


Es como si siempre que tenga un administrador. Después de todo, de todos modos, algunas tareas de administración deberán ser resueltas por un asistente médico, la distribución de derechos no es la única acción administrativa.



kaif ©   (2006-10-26 17:35) [128]

Te contaré un caso. Tal vez esto también ayude a resolverlo.
De alguna manera me invitaron a una empresa como persona que conoce Interbase. Tuvieron un problema difícil: su programa de almacén de alguna manera (posiblemente debido a un error en el programa mismo o en los datos) creó saldos de almacenamiento incorrectos y no pudieron enviar algunos tipos de productos debido a la estricta restricción de "menos en el almacén".
La base de datos era compleja y enorme.
No pude cambiar la aplicación en absoluto (archivo .exe).
Pero tuve suerte en un aspecto.
Miré la lista de procedimientos almacenados (¡y había tres mil!) Y encontré un procedimiento allí, literalmente en inglés, llamado "volver a formar saldos de almacén", que era puramente técnico y se llamó desde otros procedimientos. Después de mirar el texto de este procedimiento, llegué a la conclusión de que no afecta a los dispositivos de almacenamiento de datos (ingresos y gastos), sino que solo “agita” más.
Lo inicié y el servidor lo pensó durante un par de minutos, después de lo cual "todo se solucionó".

¿Cómo podría resolver este problema, ya sea todo organizado en la aplicación? Entonces, ¿en minutos 5?



Курдль ©   (2006-10-26 17:35) [129]


> ANB © (26.10.06 17: 30) [126]
>> donde consideré los beneficios de OOP
> No tiene ventajas.


Tengo derecho a defender mi posición principalmente debido a la rica experiencia adquirida en la ejecución de proyectos exitosos.

Por lo tanto, estoy respondiendo con calma a su declaración: "¡OOP le brinda una ventaja múltiple en la velocidad del desarrollo de TI!"



saxon   (2006-10-26 17:38) [130]


> Kurdl © (26.10.06 17: 14) [120]
> ¿Y cómo muestras esto?

Yo, tú, no me pediste que mostrara algo. Lee atentamente.



Курдль ©   (2006-10-26 17:45) [131]


> Igor Shevchenko © (26.10.06 17: 31) [127]
> Es como si siempre que el administrador lo haya hecho.


¿Para quién está provisto? Di un ejemplo de la vida.
Según el contrato, la base de datos Oracle no requería administración. Y después de la implementación, eso es todo. Nuestra empresa apoyó el sistema durante varios años, durante los cuales fue necesario restaurar un par de veces.
datos de un volcado de respaldo después de una falla de hardware. Entonces
el cliente rechazó nuestros servicios (todo funcionó muy bien).



Игорь Шевченко ©   (2006-10-26 17:47) [132]

© Kurdl (26.10.06 17: 45) [131]

Los ejemplos de la vida son diferentes. Hay un ejemplo con la distribución de derechos de usuario al instalar el sistema. También de la vida.
En su ejemplo, ¿quién hizo los basureros?



Курдль ©   (2006-10-26 17:49) [133]


> sajón (26.10.06 17: 38) [130]
> Yo, tú, no me pediste que mostrara algo. Lee atentamente.


¿Cuánto más cuidadosamente leer? Aquí leo las letras:

> y sin el uso de CP.

¿Era esta tu publicación puramente retórica, y la siguiente debería haber llevado a la confrontación?



ANB ©   (2006-10-26 17:50) [134]


> Por lo tanto, contesto tu afirmación con bastante calma:
> "¡OOP le brinda una ventaja múltiple en la velocidad del desarrollo de TI!
> ".

Ya escribí que para los fanáticos de OOP Oracle proporcionó tipos de objetos.



Курдль ©   (2006-10-26 17:51) [135]


> Igor Shevchenko © (26.10.06 17: 47) [132]
> En su ejemplo, ¿quién hizo los basureros?


Los volcados hicieron el trabajo (no a la mesa, se dirá) :)
Pero! Durante la implementación del sistema, lejos del personal de TI se ocupó de esto (nos enviaron vertederos con jabón para que pudiéramos resolver los problemas de datos).



ANB ©   (2006-10-26 18:00) [136]


> Kurdl © (26.10.06 17: 51) [135]

EEEE No entendí esto: ¿estás a favor o en contra de HP?



Курдль ©   (2006-10-26 18:02) [137]


> ANB © (26.10.06 17: 50) [134]
> Ya escribí que para los fanáticos de OOP Oracle proporcionó
> tipos de objetos.


Tipos de objeto! = OOP. Cuando Oracle brindará la oportunidad de llevar a cabo proyectos desde la lógica empresarial hasta la interfaz de usuario (¡Oracle Forms no lo ofrece!) ...



kaif ©   (2006-10-26 18:03) [138]

Volcar el jabón ORACLE - fresco.
Todas las preguntas se eliminan.
Si sus clientes pueden enviar gigabytes de jabón, entonces tienen suficiente capacidad de hardware para transferir todo en Visual Basic y usar un archivo de texto en lugar del servidor de la base de datos.
:)

Por cierto, ¿qué hay para el servidor?
Tengo un amigo que escribió sitios web en PHP + MySQL, pero como resultado del "desarrollo" llegué a la conclusión de que escribe todo exclusivamente en C + un archivo de texto y asegura que cualquier servidor de bases de datos es malo. De la incapacidad de los programadores para escribir código. Esto me recuerda su posición: "HP por la incapacidad de escribir consultas SQL". Idealmente, no debería haber ningún servidor de base de datos. ¿Quién dijo que era necesario? Después de todo, es mucho más simple asegurarse de que cada objeto en la OOP se escriba en algún lugar, por ejemplo, en un archivo separado. Voto, ¿quién dijo que los "productos en stock" generalmente necesitan introducirse en el DBMS? Hagamos un método SaveToFile y terminemos de una vez. Y si alguien quiere ver las sobras en el almacén, permítale llamar al método GoodsCollection.LoadFromExisitingFiles () y luego busque las mercancías allí usando el método GoodsCollection.GetGood: TGood, luego de lo cual mirarán la propiedad Good.StockRemainder.

¿Por qué DBMS?

Explicar
No veo el punto en el DBMS. Solo ralentiza la selección de todos los productos en el caché, ya que carga las páginas del archivo de la base de datos, donde, además de los productos, también se registran otras cosas.



k2 ©   (2006-10-26 18:03) [139]

© Kurdl (26.10.06 18: 02) [137]
¿Por qué no ofrecer? :)



ANB ©   (2006-10-26 18:06) [140]


> (¡Oracle Forms no ofrece!)

Bueno, entonces la aplicación Oracle :)

Vi un par de desarrollos independientes. Uno de ellos generalmente trabajaba en la interfaz web.

Y el primero es un cliente semi-delgado en delphi + un núcleo en. Se puso de pie en todos los trucos de Tatarstán. Trabajé durante años 10. Hasta ahora, en las portadas se recuerda nostálgicamente. Sin embargo, los herederos de este sistema todavía se utilizan en la implementación de proyectos serios.



Игорь Шевченко ©   (2006-10-26 18:06) [141]

© Kurdl (26.10.06 17: 51) [135]

Del mismo modo, el personal lejos de TI podría ejecutar un procedimiento almacenado que crea al usuario y le otorga todos los privilegios necesarios :))



vuk ©   (2006-10-26 18:17) [142]

En cuanto a seguridad. Los usuarios de nuestra base de datos generalmente no tienen ningún derecho a trabajar con tablas. Todo es solo a través del procedimiento. Bueno, antes del montón, se implementa su propio subsistema de derechos / privilegios. Todo está dentro de los procedimientos.



ИА   (2006-10-27 06:52) [143]

> En la continuación del tema del diseño web, se destacó la cuestión de la idoneidad de la aplicación de HP. Además, es una alternativa con la ejecución de la lógica empresarial en el servidor de aplicaciones.
Mi posición es a favor del servidor de aplicaciones.

En este caso, hay una tendencia a los extremos. Tanto XP como el servidor de aplicaciones tienen derecho a vivir juntos dentro del sistema. No existe una receta definitiva, pero prefiero esto:

Banquete de recetas "Tres enlaces" de IA

caldo

Tome la base de datos 1 y límpiela a fondo de los desencadenantes. Agregue estructuras de datos en forma de tablas, claves primarias y secundarias, reglas en cascada, campos obligatorios y otros principios de hierro que se pueden establecer en forma de índices y mecanismos de las propias tablas. Batir uniformemente. Ordenar procedimientos almacenados: los que cambian los datos se eliminan de la lógica comercial innecesaria y se agrupan, uno por porción de transacción. De aquellos que solicitan datos para seleccionar más frescos, el resto se descarta. Tome los derechos de usuario de las tablas, ate una cadena y coloque una secuencia de comandos, vinculando el otro extremo al administrador.
Vierta todos estos datos y ponga una carga fuerte. Cuando los discos duros en la unidad del servidor se vuelvan blandos, cambie la carga al mínimo y agregue los resultados de Index Analyzer. Elimine la descarga, saque el ramo de derechos.

segundo

Para el segundo, tome sangre recién cortada con sangre de las modernas tecnologías de servidor de aplicaciones, si tomó .NET, puede usarlo así, si Java tiene que remojar el lomo en la marinada por un tiempo (la marinada se prepara a partir de una mezcla de JBOSS y Tomcat en proporciones iguales), si todo que podrías conseguirlo Delphi y luego golpearla con un martillo dorado adicional.
Corte el recorte preparado en métodos separados, póngalo en el servidor, generosamente rociando el negocio con lógica y presione en la parte superior con el peso de los derechos de acceso. Asegúrese de que las piezas no se toquen entre sí. Espere un momento para que salga el jugo de las especificaciones de diseño. Para probarlo y agregar informes si las especias no son suficientes.

Decorar

Adornar, dependiendo de la dieta, puede servir abundante o no. La primera opción consiste en una interfaz abundante decorada con arrastrar y soltar y ventanas emergentes, la segunda opción es de hojas htmel con aderezo javascript. Para el olor, puede agregar trozos de ajax finamente picados.

Alimentar

Diseñe cuidadosamente el cliente a través de la red. Diseñe una diapositiva de lógica de negocios, en el centro haga un receso en el que verter cuidadosamente los datos (para esto, tome OleDB y vierta los datos en él con una secuencia delgada).
Asegúrese de que los datos no se filtren a la guarnición.
Pon cuencos con complementos para el servidor.

¡buen provecho



Danilka ©   (2006-10-27 09:51) [144]

[105] Kurdle © (26.10.06 15: 48)
Realmente funciona, gracias. Y pensé que era una invención puramente de Microsovt. :))
Es cierto, su solicitud sigue siendo incorrecta. En lugar de "cuenta distinta (*)", se necesita "VISIT_INTERVAL, cuenta (*)". :))



Mystic ©   (2006-10-27 21:56) [145]

No sé, algo me parece que el problema está parcialmente en el DBMS usado. Muchos de los problemas enumerados aquí se resuelven con herramientas especiales de Oracle (funciones analíticas, seguridad a nivel de fila, ...). La implementación flexible de procedimientos almacenados en IB [FB] también le permite liberarlo usted mismo (aunque con cierta degradación del rendimiento). Pero no encuentro una solución simple para MS SQL (no he probado 2005) (tal vez no hay suficiente experiencia), por lo que solo se necesita un servidor para ayudar a resolver estos problemas :)

> Acepto que esta solicitud funcionará más tiempo que HP,
> pero si en la cantidad de datos pronosticada esta consulta mostrará
> resultados aceptables ...


Y obtienes la historia del pintor Schleichem.



Páginas: 1 2 3 4 rama entera

Foro: "Otro";
Archivo actual: 2006.11.12;
Descargar: [xml.tar.bz2];

arriba









Memoria: 1.48 MB
Tiempo: 0.259 c
3-1158107950
Nikal
2006-09-13 04:39
2006.11.12
Componente KeyDB


10-1125421545
Barvetal
2005-08-30 21:05
2006.11.12
¿Cómo hacer invisible el servidor COM local (archivo exe)?


2-1161686802
Krants
2006-10-24 14:46
2006.11.12
Sugerencia de llamada


2-1161956417
SVG
2006-10-27 17:40
2006.11.12
La aparición de la fecha en la tabla. Base de datos SQL


2-1161722111
~ Ayuda ~
2006-10-25 00:35
2006.11.12
políndromos





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish Francés
gallego georgiano Alemán Griego criollo haitiano Hebreo hindi Húngaro islandés Indonesian irlandés Italiana Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese Rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español