2. Se le llama base de datos a los bancos de información que contienen datos
relativos a diversas temáticas y categorizados de distinta manera, pero que
comparten entre sí algún tipo de vínculo o relación que busca ordenarlos y
clasificarlos en conjunto.
7/26/2016AGCT
3. Los cambios recientes en los planes de estudio de la UPC y la UOC tienen en cuenta el nuevo
espacio europeo de educación superior (EEES). Una de las consecuencias directas de estos
cambios es la necesidad de acotar y optimizar el tiempo a dedicar a las actividades de aprendizaje
que requieren la participación activa del estudiante y que se realizan de forma continuada durante
el semestre. En el ámbito de la docencia informática de asignaturas de bases de datos el problema
es especialmente complejo debido a que los enunciados de las pruebas no acostumbran a tener
una solución única. Nosotros hemos desarrollado una herramienta, llamada LEARN-SQL, cuyo
objetivo es corregir automáticamente cualquier tipo de sentencia SQL (consultas, actualizaciones,
procedimientos almacenados, disparadores etc.) y discernir si la respuesta aportada por el
estudiante es o no correcta con independencia de la solución concreta que este proponga.
Además esta herramienta ayuda a los profesores a diseñar las pruebas devaluación, permitiendo
también la opción de revisar cualitativamente las soluciones aportadas por los estudiantes. Por
último, el sistema proporciona ayuda a los estudiantes para que aprendan de sus propios errores,
proporcionando feedback de calidad.
7/26/2016AGCT
4. Sublenguajes
Las sentencias SQL se clasifican según su finalidad dando origen a tres
Sublenguajes:
Lenguaje de definicion de datos (Data Definition language)DDL.
es el que se encarga de la definición de la base de datos y la
modificación de la estructura de los objetos que estén en ella.
Algunos comandos propios de este sublenguaje son CREATE, ALTER,
DROP y TRUNCATE
CREATE Utilizado para crear nuevas tablas, campos e índices
DROP Empleado para eliminar tablas e índices
ALTER
Utilizado para modificar las tablas agregando campos o
cambiando la definición de los campos.
7/26/2016AGCT
5. Lenguaje de control de datos (Data Control Language) DCL.
encargado de la seguridad de la base de datos, en todo lo referente al
control de accesos y privilegios entre los usuarios.
Como ejemplo estan : GRANT, REVOKE.
Lenguaje de Manipulacion de Datos (Data Manipulation Language) DML.
A través de él podemos seleccionar, insertar, eliminar y actualizar
datos. Es la parte que más frecuentemente utilizaremos, y que con
ella se construyen las consultas.
Algunos comandos propios de este sublenguaje son:
SELECT
Utilizado para consultar registros de la base de datos que
satisfagan un criterio determinado
INSERT
Utilizado para cargar lotes de datos en la base de datos en una
única operación.
UPDATE
Utilizado para modificar los valores de los campos y registros
especificados
DELETE Utilizado para eliminar registros de una tabla de una base de datos
7/26/2016AGCT
6. Las cláusulas son condiciones de modificación utilizadas para
definir los datos que desea seleccionar o manipular.
Cláusula Descripción
FROM
Utilizada para especificar la tabla de la cual se van a seleccionar
los registros
WHERE
Utilizada para especificar las condiciones que deben reunir los
registros que se van a seleccionar
GROUP BY
Utilizada para separar los registros seleccionados en grupos
específicos
HAVING
Utilizada para expresar la condición que debe satisfacer cada
grupo
ORDER BY
Utilizada para ordenar los registros seleccionados de acuerdo
con un orden específico
Clausulas
7/26/2016AGCT
7. Los operadores lógicos permiten comparar expresiones lógicas devolviendo
siempre un valor verdadero o falso. Los operadores lógicos se evalúan de
izquierda a derecha.
Operador Uso
AND
Es el "y" lógico. Evalúa dos condiciones y devuelve un valor
de verdad sólo si ambas son ciertas.
OR
Es el "o" lógico. Evalúa dos condiciones y devuelve un valor
de verdad si alguna de las dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la expresión.
+ (Concatenación) Se usa para unir datos de tipo alfanumérico
Operadores lógicos
7/26/2016AGCT
8. Operador Uso
< Menor que
> Mayor que
<> != Distinto de
<= Menor o igual que
>= Mayor o igual que
= Igual que
Numérico Alfanuméricos Fecha Lógico BLOB Otros
Integer Char Date Bit Image Moneda
Numeric varchar Date Time Text hipervínculo
Decimal adjunto
Float
Operadores Relacionales
*
7/26/2016AGCT
9. Las funciones agregadas proporcionan a SQL utilidades de cálculo sobre
los datos de las tablas.
Estas funciones se incorporan en las consultas SELECT y retornan un
único valor al operar sobre un grupo de registros.
Función Descripción
AVG
Utilizada para calcular el promedio de los valores de
un campo determinado
COUNT
Utilizada para devolver el número de registros de la
selección
SUM
Utilizada para devolver la suma de todos los valores de
un campo determinado
MAX
Utilizada para devolver el valor más alto de un campo
especificado
MIN
Utilizada para devolver el valor más bajo de un campo
especificado
Funciones Agregadas
7/26/2016AGCT
10. Los predicados son condiciones que se indican en claúsula WHERE de
una consulta SQL.
Predicados SQL
BETWEEN...AND Comprueba que al valor esta dentro de un intervalo
LIKE Compara un campo con una cadena alfanumérica.
ALL Señala a todos los elementos de la selección de la consulta
ANY Indica que la condición se cumplirá si la comparación es cierta para
al menos un elemento del conjunto.
EXISTS Devuelve un valor verdadero si el resultado de una subconsulta
devuelve resultados.
IN Comprueba si un campo se encuentra dentro de un determinado
rango. El rango puede ser una sentencia SELECT.
Predicados
7/26/2016AGCT
11. Ejemplo de Algunos comandos
Básicos
CREATE
Sintaxis:
Create Table nombre_tabla
(
nombre_campo_1 tipo_1,
nombre_campo_2 tipo_2,
nombre_campo_n tipo_n,
Key(campo_x,...)
)
Create Table pedidos
(
id_pedido INT(4) NOT NULL
AUTO_INCREMENT,
id_cliente INT(4) NOT NULL,
id_articulo INT(4)NOT NULL,
fecha DATE,
cantidad INT(4),
total INT(4),
KEY(id_pedido,id_cliente,id_articulo)
)
Create Table articulos
(
id_articulo INT(4) NOT NULL AUTO_INCREMENT,
titulo VARCHAR(50),
autor VARCHAR(25),
editorial VARCHAR(25),
precio REAL,
KEY(id_articulo)
)
ALTER TABLE personas
RENAME usuarios
Cambia el nomnbre de la tabla
'personas' a 'usuarios'
ALTER
7/26/2016AGCT
12. SELECT Campos FROM Tabla
SELECT Nombre, Teléfono FROM Clientes
SELECT CodigoPostal, Nombre,
Telefono
FROM Clientes
ORDER BY Nombre
Hay que empezar por la palabra SELECT, después puedes poner ALL(Predicado)
o nada, a continuación un nombre de columna(Campos), o varios separados
por comas(,), a continuación la palabra FROM(Clausula) y una expresión-tabla, y
por último de forma opcional puedes incluir la cláusula WHERE con una
condición-de-búsqueda.
Consulta de seleccion
Consulta para traer un registro cuyo campo empiece por
determinado valor. Ejemplo: traer nombre del cliente donde
el campo de dirección empiece por AV, se usa clausula LIKE
SELECT NOMBRE_CLIENTE FROM TABLA_CLIENTES WHERE
CAMPO_DIRECCION LIKE “AV%”.
7/26/2016AGCT
14. The following is intended to outline Oracle’s general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon in
making purchasing decisions.
The development, release, and timing of any features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.
7/26/2016AGCT
15. Program Agenda
Oracle Application Express Overview
New Features in 4.1
Beyond Oracle APEX 4.1…
Q&A
AGCT
17. Oracle Application Express (Oracle APEX)
Benefits
Runs within DatabaseSelf Service Provisioning
Leverage SQL SkillsRapid Browser Based Development
Point your browser and start developing Build reports and charts using SQL
Out-of-the-box elastic private cloud service Simple to manage, highly scalable
7/26/2016AGCT
18. Oracle Application Express (Oracle APEX
Architectural Overview
• Simple 2-Tier Architecture
• Pages dynamically rendered using database Meta data
• No code generation or file based compilation
• Runs everywhere Oracle Database runs
7/26/2016AGCT
19. Oracle Application Express (Oracle APEX)
• Distributed with
– Oracle Enterprise Edition
– Oracle Standard Edition
– Oracle Standard Edition One
– Oracle XE
• Supported Database Releases
– 10gR2
– 11gR1
– 11gR2
7/26/2016AGCT
20. Oracle Application Express (Oracle APEX) History
HTML DB
1.5 [2004]
•First
Release
HTML DB
1.6 [2004]
•Themes
HTML DB 2.0
[2005]
•SQL Workshop
Application
Express 2.1
[2006]
•Oracle XE
Application
Express 2.2
[2006]
•Packaged
Applications
Application
Express 3.0
[2007]
•Flash Charts,
PDF Printing,
Access
Migration
Application
Express 3.1
[2008]
•Interactive
Reports
Application
Express 3.2
[2009]
•Oracle Forms
Conversion
Application
Express 4.0
[2010]
•Websheets,
Dynamic Actions,
Plug-Ins, Team
Development
Application
Express 4.1
[2011]
•Data Upload,
Error Handling,
ROWID
7/26/2016AGCT
21. Program Agenda
Oracle Application Express Overview
New Features in 4.1
Beyond Oracle APEX 4.1…
Q&A
AGCT
22. Error Handling
Error Handling Function
Provide developers full control when an error occurs
Capabilities include:
Log all errors
Map errors raised by the Oracle Database (like “Unique constraint XYZ violated”) to friendlier
error messages
Display all errors “Inline in Notification”
Increase security by masking internal APEX errors
7/26/2016AGCT
23. Use of ROWID
Allow usage of ROWID for Automatic DML Processing
Tables with > 2 Primary Key(PK) columns supported
Support for PK columns that are also a Foreign Key
Alternative to identification of Primary Key columns
Ability to create Form, Form & Report or Tabular Form on
Table or View with no Primary Key
7/26/2016AGCT
24. Data Upload
• Provide the ability for end-users to update spreadsheet data into tables
Developer uses wizard to specify parameters
Following pages created:
Data Load Source
Data / Table Mapping
Data Validation
Data Load Results
7/26/2016AGCT
25. Calendar
• Added “Drag and Drop” functionality
Change Date and Time of records
• Added ability to create “Edit” page as part of calendar wizard
“Edit” Page types of:
Existing page
Pop-up page
New page
7/26/2016AGCT
26. Websheet Enhancements
Improved User Interface – offers greater control
New Page Section Type – PL/SQL
Query using Datagrid
Presentation mode
7/26/2016AGCT
27. Tabular Form Validations
and Processes
Support all the same validation types as a Page Item
(e.g. PL/SQL Expression, Exists, etc)
Allow referencing of column values in Validations and Processes
using Bind Variable syntax:
:COLUMN_NAME
Built-in Bind variables -
APEX$ROW_SELECTOR, APEX$ROW_NUM and APEX$ROW_STATUS
Validations & Processes can be fired for each submitted row
or once for the entire submission
Advisor has been enhanced to check for valid Tabular Form columns
7/26/2016AGCT
28. Plug-In Enhancements
Increased Number of Custom Attributes to 15
New Attribute Type - ‘Checkboxes’
Add plug-in Support for
Authentication Schemes
Authorization Schemes
Attribute Usability Enhancements in Application Builder
7/26/2016AGCT
29. Dynamic Action Enahncements
Declarative support for buttons to trigger dynamic actions
Actions performed based on button clicks
Works for HTML, Image and Template based buttons
Extend the Submit Page dynamic action to gray out the page
and show a processing icon
Improve the ability to define multiple item values within ‘Set
Value’
7/26/2016AGCT
30. Accessibility
Improved Menu accessibility
Added ability to define row headers for tabular form fields
Added “High Contrast” mode
Improved usability for screen reader users when dealing with validation errors
Integrated updated version of Rich Text Editor, offering improved accessibility
7/26/2016AGCT
31. Application Translations
Modernized the Translation user interface
Streamlined the translation process
Minimize the translation requirements for repeated values
7/26/2016AGCT
32. Dynamic List
Base list on SQL or PL/SQL functions
Dynamically create styled list items
Especially important for mobile based applications
7/26/2016AGCT
33. Mobile Applications
• Provide themes & HTML templates suitable for
smart phones and mobile devices
jQuery Mobile*
Dynamic List Support
Improved HTML out of the box
* We plan to bundle jQuery Mobile into a future release of Application Express
7/26/2016AGCT
34. Other New Features in 4.1
Many Functional & Performance Improvements
New AnyChart Flash Charts
New CKEditor version
New jQuery and jQuery UI versions
7/26/2016AGCT
35. Program Agenda
Oracle Application Express Overview
New Features in 4.1
Beyond Oracle APEX 4.1…
Q&A
AGCT
36. Beyond Oracle APEX 4.1…
Proposed Future Release Features
Enhanced themes and HTML templates to enable developers to
declaratively create mobile applications and/or mobile pages.
Incorporate HTML 5 charting capabilities.
Declarative specification of RESTful Web services mapped to SQL and
PL/SQL.
Modal Dialogues
Multiple Tabular Forms on one page
Master-Detail-Detail support
Multiple Interactive Reports on one page
7/26/2016AGCT
37. Program Agenda
Oracle Application Express Overview
New Features in 4.1
Beyond Oracle APEX 4.1…
Q&A
AGCT
40. Base de datos de Oracle NoSQL
Oracle NoSQL base de datos es una base de datos NoSQL
distribuida escalable, diseñado para proporcionar, gestión
de datos flexible y altamente disponible fiable a través de
un conjunto configurable de nodos de almacenamiento.
Los datos pueden ser modelados como mesas de estilo
base de datos relacional, documentos JSON o pares de
clave y valor. Oracle NoSQL base de datos es un sistema
fragmentados (compartido-nada), que distribuye los datos
de manera uniforme a través de los múltiples fragmentos
en el clúster, basado en el valor hash de la clave primaria.
Dentro de cada fragmento, nodos de datos se replican en
garantizar una alta disponibilidad, la rápida conmutación
por error en el caso de un fallo de nodo y balanceo de
carga óptima de las consultas. NoSQL base de datos
proporciona Java, C, Python y conductores Node.js y una
API REST para simplificar el desarrollo de aplicaciones. Base
de datos NoSQL se integra con una amplia variedad de
aplicaciones de código abierto Oracle relacionada y con el
fin de simplificar y agilizar el desarrollo y despliegue de
aplicaciones modernas de datos grandes. NoSQL base de
datos es de doble licencia y disponible como una edición
de la comunidad de código abierto, así como una licencia
comercial Enterprise Edition.
7/26/2016AGCT
41. Cassandra, la dama de las
bases de datos NoSQL
Dentro de los nuevos sistemas de
almacenamiento que están surgiendo
dentro del universo Big Data, Cassandra
es uno de los más interesantes y
reseñables. Cassandra se define como una
base de datos NoSQL distribuida y
masivamente escalable, y esta es su
mayor virtud desde nuestro punto de
vista, la capacidad de escalar linealmente.
Además, Cassandra introduce conceptos
muy interesantes como el soporte para
multi data center o la comunicación peer-
to-peer entre sus nodos. En este artículo
vamos a profundizar en estas y otras
características que hacen a Cassandra tan
especial.
7/26/2016AGCT
42. Historia y orígenes
Arquitectura y características
Cassandra nos proporciona tolerancia a particiones y
disponibilidad, pero a cambio de ser eventualmente
consistente, tal y como define el teorema CAP. El nivel
de consistencia puede ser configurado, según nos
interese, incluso a nivel de query.
Es distribuida, lo quiere decir que la información está
repartida a lo largo de los nodos del cluster. Además
ofrece alta disponibilidad, de manera que si alguno de
los nodos se cae el servicio no se degradará.
Escala linealmente, lo que quiere decir que el
rendimiento de forma lineal respecto al número de
nodos que añadamos. Por ejemplo, si con 2 nodos
soportamos 100.000 operaciones por segundo, con 4
nodos soportaremos 200.000. Esto da mucha
predictibilidad a nuestros sistemas.
Escala de forma horizontal, lo que quiere decir que
podemos escalar nuestro sistema añadiendo nuevos
nodos basados en hardware commodity de bajo coste.
El desarrollo inicial de Cassandra tiene su origen en Facebook,
que lo diseñó para potenciar la funcionalidad de búsqueda en
el inbox. En 2008 fue liberado como proyecto open source y
en febrero de 2010 se convirtió en un proyecto top-level de
la fundación Apache. Está inspirado e influenciado por los
papers de Amazon Dynamo de 2007 y de Google BigTable de
2006. Hoy en día está mantenido y desarrollado por la
compañía Datastax.
Su nombre está inspirado por la sacerdotisa Cassandra de la
mitología griega, que tenía el don de la profecía, y predijo el
engaño del Caballo de Troya.
7/26/2016AGCT
44. Implementa una arquitectura
Peer-to-Peer
patrones maestro-esclavo como otros sistemas de
almacenamiento. De esta manera cualquiera de los
nodos puede tomar el rol de coordinador de una
query. Será el driver el que decida qué nodo quiere
que sea el coordinador.
Los datos son repartidos a lo largo del cluster en
base a un token único calculado para cada fila por
una función hash. Los nodos se reparten
equitativamente el rango de tokens que va de -263a
263, esto define el nodo primario. Internamente
Cassandra replicará los datos entre los nodos con la
política que le definamos, por ejemplo definiendo el
factor de replicación. Además soporta el concepto
de data center para agrupar los nodos lógicamente
y tener los datos más cerca del usuario.
7/26/2016AGCT
45. Modelado de datos
También combina propiedades de una base
de datos clave-valor y una orientada a
columnas. Como podemos ver en el siguiente
diagrama la información se organiza de
manera que toda fila tiene una clave única y
una serie de pares de clave, valor de columna.
Es importante tener en mente estas
características a la hora de diseñar nuestro
modelo de datos.
Lenguaje CQL
Cassandra Query Language (CQL) es el lenguaje de
acceso a datos en Cassandra, es un derivado
reducido de SQL. En Cassandra los datos están
desnormalizados de manera que el concepto de
joins o subqueries no existe.
Podemos interactuar con Cassandra mediante CQL
a través de la shell. de CQL, cqlshell. También
podemos usar herramientas gráficas
como DevCenter o a través de los drivers
soportados para múltiples lenguajes de
programación.
7/26/2016AGCT
46. Cuando diseñemos nuestro modelo debemos de guiarnos por el patrón de acceso a los
datos, hay que hacer un análisis de las queries que pretendemos ejecutar contra nuestro
sistema y de esta forma podremos diseñar un modelo eficiente que pueda sacar partido de
las ventajas de Cassandra.
Es importante también definir adecuadamente la clave de partición de nuestro datos, ya que
Cassandra se basará en esta clave para distribuir los datos a lo largo del cluster. Si queremos
aprovechar nuestro cluster debemos pensar en distribuir los datos para evitar cuellos de
botella. También es recomendable, dado nuestro patrón de consulta, intentar minimizar el
número de particiones a las que hay que acceder durante una lectura.
7/26/2016AGCT