Prácticas recomendadas de programación
Utilice las siguientes prácticas de programación recomendadas.
Usar paquetes de instrumentación
Oracle AI Database proporciona paquetes de instrumentación cuyos subprogramas permiten a la aplicación generar información de rastreo cuando sea necesario. Con esta información de rastreo, puede depurar la aplicación sin un depurador e identificar el código que funciona mal.
La instrumentación proporciona a su aplicación una funcionalidad considerable; por lo tanto, no es una sobrecarga. La sobrecarga es algo que puedes eliminar sin perder mucho beneficio.
Algunos paquetes de instrumentación que proporciona Oracle AI Database son:
-
DBMS_APPLICATION_INFO, que permite a un administrador del sistema realizar un seguimiento del rendimiento de la aplicación por módulo.
Para obtener más información sobre DBMS_APPLICATION_INFO, consulte Referencia de tipos y paquetes PL/SQL de Oracle AI Database.
-
DBMS_SESSION, que permite a la aplicación acceder a la información de la sesión y definir preferencias y niveles de seguridad
Para obtener más información sobre DBMS_SESSION, consulte Referencia de tipos y paquetes PL/SQL de Oracle AI Database.
-
UTL_FILE, que permite a la aplicación leer y escribir archivos de texto del sistema operativo
Para obtener más información sobre UTL_FILE, consulte Referencia de tipos y paquetes PL/SQL de Oracle AI Database.
Consulte también: Referencia de tipos y paquetes PL/SQL de Oracle AI Database para obtener un resumen de los paquetes PL/SQL que proporciona Oracle AI Database
Recopilación de Estadísticas y Rastreo de Aplicaciones
Las estadísticas de las bases de datos proporcionan la información sobre el tipo de carga en las bases de datos y sobre los recursos internos y externos utilizados por la misma. Para diagnosticar con precisión los problemas de rendimiento de la base de datos con ADDM, las estadísticas deben estar disponibles.
Para obtener información sobre la recopilación de estadísticas, consulte Oracle AI Database Get Started with Performance Tuning.
Nota: Si Oracle Enterprise Manager no está disponible, puede recopilar estadísticas mediante subprogramas DBMS_MONITOR como se describe en Referencia de tipos y paquetes PL/SQL de Oracle AI Database.
Oracle AI Database proporciona varias herramientas de rastreo que pueden ayudarle a supervisar y analizar aplicaciones de base de datos. Para obtener más información, consulte Oracle AI Database SQL Tuning Guide.
Usar funcionalidad existente
Una aplicación que utiliza la funcionalidad existente es más fácil de desarrollar y mantener que una que no lo hace, y también se ejecuta más rápido.
Al desarrollar su aplicación, utilice la funcionalidad existente de su lenguaje de programación, su sistema operativo, Oracle AI Database y los paquetes y tipos PL/SQL que Oracle AI Database proporciona tanto como sea posible.
Algunos ejemplos de funcionalidades existentes que reinventan muchos desarrolladores son:
-
Restricciones
Para obtener información introductoria sobre las restricciones, consulte "Garantía de Integridad de Datos en Tablas".
-
Funciones SQL (funciones que están "integradas" en SQL)
Para obtener información sobre las funciones SQL, consulte Referencia de lenguaje SQL de Oracle AI Database.
-
Secuencias (que pueden generar valores secuenciales únicos)
Consulte "Creación y Gestión de Secuencias".
-
Auditoría (la supervisión y el registro de acciones del usuario seleccionado)
Para obtener información introductoria sobre la auditoría, consulte la Oracle AI Database Security Guide.
-
Replicación (el proceso de copiar y mantener objetos, como tablas, en varias bases, de datos que constituyen un sistema distribuido de base de Datos).
Para obtener información sobre la replicación, consulte la documentación de Oracle GoldenGate.
-
Colocación en cola de mensajes (cómo se comunican las aplicaciones de negocio basadas en web entre sí)
Para obtener información introductoria sobre Oracle AI Database Advanced Queuing (AQ), consulte la Guía del usuario de Oracle AI Database Advanced Queuing.
-
Mantenimiento de un historial de cambios de registros
Para obtener información introductoria sobre Workspace Manager, consulte la Guía del desarrollador de Oracle AI Database Workspace Manager.
En el ejemplo 8-4, dos transacciones simultáneas eliminan de la cola los mensajes almacenados en una tabla (es decir, cada transacción busca y bloquea la siguiente fila sin procesar de la tabla). En lugar de simplemente llamar al procedimiento DBMS_AQ.DEQUEUE (descrito en la Referencia de tipos y paquetes PL/SQL de Oracle AI Database), el ejemplo crea un índice basado en funciones en la tabla y, a continuación, utiliza esa función en cada transacción para recuperar las filas y mostrar los mensajes.
El código del Ejemplo 8-4 implementa una función similar a una llamada DBMS_AQ.DEQUEUE pero con menos capacidades. El tiempo de desarrollo ahorrado mediante el uso de la funcionalidad existente (en este caso, índices basados en funciones) puede ser grande.
Ejemplo 8-4 Transacciones simultáneas de eliminación de cola
Crear Tabla:
DROP TABLE t;
CREATE TABLE t
( id NUMBER PRIMARY KEY,
processed_flag VARCHAR2(1),
payload VARCHAR2(20)
);
Crear Índice en Tabla:
CREATE INDEX t_idx ON
t( DECODE( processed_flag, 'N', 'N' ) );
Rellenar tabla:
INSERT INTO t
SELECT r,
CASE WHEN MOD(r,2) = 0 THEN 'N' ELSE 'Y' END,
'payload ' || r
FROM (SELECT LEVEL r FROM DUAL CONNECT BY LEVEL <= 5);
Mostrar tabla:
SELECT * FROM t;
Resultado:
ID P PAYLOAD
---------- - --------------------
1 Y payload 1
2 N payload 2
3 Y payload 3
4 N payload 4
5 Y payload 5
5 rows selected.
Primera operación:
DECLARE
l_rec t%ROWTYPE;
CURSOR c IS
SELECT *
FROM t
WHERE DECODE(processed_flag,'N','N') = 'N'
FOR UPDATE
SKIP LOCKED;
BEGIN
OPEN c;
FETCH c INTO l_rec;
IF ( c%FOUND ) THEN
DBMS_OUTPUT.PUT_LINE( 'Got row ' || l_rec.id || ', ' || l_rec.payload );
END IF;
CLOSE c;
END;
/
Resultado:
Got row 2, payload 2
Transacción simultánea:
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
l_rec t%ROWTYPE;
CURSOR c IS
SELECT *
FROM t
WHERE DECODE(processed_flag,'N','N') = 'N'
FOR UPDATE
SKIP LOCKED;
BEGIN
OPEN c;
FETCH c INTO l_rec;
IF ( c%FOUND ) THEN
DBMS_OUTPUT.PUT_LINE( 'Got row ' || l_rec.id || ', ' || l_rec.payload );
END IF;
CLOSE c;
COMMIT;
END;
/
Resultado:
Got row 4, payload 4
Consulte además:
-
Guía de nuevas funciones de Oracle AI Database (con cada versión)
-
Conceptos de Oracle AI Database (con cada versión)
Cubrir tablas de base de datos con vistas de edición
Si la aplicación utiliza tablas de base de datos, cubra cada una con una vista de edición para que pueda utilizar la redefinición basada en edición (EBR) para actualizar el componente de base de datos de la aplicación mientras está en uso, lo que minimiza o elimina el tiempo de inactividad.
Para obtener información sobre la redefinición basada en edición, consulte la Guía de desarrollo de Oracle AI Database.