Acceso a bases de datos. CI-2413 Desarrollo de aplicaciones para Internet Prof. Braulio José Solano Rojas ECCI, UCR

Acceso a bases de datos CI-2413 Desarrollo de aplicaciones para Internet Prof. Braulio José Solano Rojas ECCI, UCR Acceso a bases de datos ● ● En

4 downloads 82 Views 160KB Size

Recommend Stories


CONFIGURAR ACCESO A INTERNET PANTALLAS PARA CONFIGURAR ACCESO A INTERNET
CONFIGURAR ACCESO A INTERNET Página 1 de 6 CONFIGURAR ACCESO A INTERNET Los datos que debe conocer para acceder a Internet desde la XTEC son cuatro

Acceso a bases de datos externas
Acceso a bases de datos externas Muchas veces necesitamos acceder a bases de datos externas desde nuestras aplicaciones GeneXus. Por ejemplo, podemos

Arquitectura General de los Robots: Actuadores y Sensores. UCR ECCI CI-2657 Robótica Prof. M.Sc. Kryscia Daviana Ramírez Benavides
Arquitectura General de los Robots: Actuadores y Sensores UCR – ECCI CI-2657 Robótica Prof. M.Sc. Kryscia Daviana Ramírez Benavides Arquitectura Gen

Story Transcript

Acceso a bases de datos CI-2413 Desarrollo de aplicaciones para Internet

Prof. Braulio José Solano Rojas ECCI, UCR

Acceso a bases de datos ●



En aplicaciones web no podemos prescindir del acceso a base de datos. La mayoría de las aplicaciones utilizan algún tipo de repositorio. En años recientes la tendencia ha sido a tener capas de abstracción de base de datos. Esto ha evolucionado a una automatización muy completa con patrones como el emparejamiento objeto-relacional.

2 de 29

Bases de datos en PHP ●

PHP permite el acceso directo a los siguientes motores de bases de datos: ● ● ● ● ● ● ●

● ● ●



CUBRID DB++ dBase filePro Firebird/InterBase FrontBase IBM DB2, Cloudscape y Apache Derby Informix Ingres MaxDB

● ● ● ● ● ● ● ● ● ● ●

Mongo 3 de 29

mSQL Mssql MySQL OCI8 Paradox PostgreSQL SQLite SQLite3 SQLSRV Sybase tokyo_tyrant

Bases de datos en PHP ●

También podemos encontrar acceso a otros motores de bases de datos en PECL: ● ● ● ● ● ● ● ● ●

cassandra couchbase CUBRID daffodildb Dbase DBDO dbplus dbx drizzle

● ● ● ● ● ●

4 de 29

filepro hwapi ibm_db2 informix Ingres isis

Bases de datos en PHP ●

PHP permite el acceso a bases de datos también de forma abstracta en lugar de forma directa. Esto significa que, independientemente de la base de datos que se esté utilizando, se emplean las mismas funciones para realizar consultas y obtener datos.

5 de 29

Bases de datos en PHP ●

PHP también tiene interfaces abstractas: ● ● ●



DBA (DataBase Abstraction) DBX ODBC

Recientemente también: ●

PHP Data Objects Interface que se está convirtiendo en un estándar de facto para acceso a bases de datos. 6 de 29

Bases de datos en PHP ●

Además podemos encontrar bibliotecas que tienen una interfaz de abstracción OO de bases de datos: ● ● ●

ADODB (http://adodb.sourceforge.net/) PEAR (http://pear.php.net) PHPlib (http://sourceforge.net/projects/phplib/)

7 de 29

Bases de datos en PHP: NoSQL ●



Las bases de datos de nueva generación generalmente tratan algunos de los puntos: ser no relacional, distribuidas, código abierto y horizontalmente escalables. La intención original ha sido bases de datos modernas escalables en el web. El movimiento inició a inicios del 2009 y ha crecido rápido. A menudo aplican otras características como: libre de esquema, apoyo fácil de replicación, API simple, eventualmente consistente / BASE (no ACID), grandes cantidades de datos y más.

8 de 29

Bases de datos en PHP: NoSQL ●

http://nosql-database.org/



SQL vs NoSQL, which is better

9 de 29

Bases de datos en PHP: NoSQL ●

Es posible profundizar más sobre el tema en los siguientes enlaces: ●

SQL vs. NoSQL: Which Is Better?



NOSQL Databases

10 de 29

Algunas extensiones populares y de conexión directa

MySQL ●

MySQL es un sistema de bases de datos desarrollado por la empresa MySQL AB. Tal empresa desarrolla las nuevas versiones y provee servicios como apoyo técnico. El sistema de bases de datos se da bajo licencia GPL que es una licencia de software libre o se vende bajo una licencia comercial.

12 de 29

Funciones MySQL ●

Conexión al servidor: ●

int mysql_connect ( [string server [, string usuario [, string password]]]) –

Ejemplo:

16 de 29

Funciones MySQL ●

Desplegando los resultados: ●

object mysql_fetch_object ( int id_resultado [, int tipo_de_resultado]) –

Ejemplo:

17 de 29

MySQLi ●

Funciona con PHP 4.1.3 y superior. Para tener la funcionalidad se debe compilar PHP con apoyo para la extensión mysqli.

18 de 29

MySQLi (Clases) ●

mysqli ●



Constructor –







mysqli



Métodos – – – – – – –



autocommit change_user character_set_name close commit connect debug

– – – – – – –

19 de 29

dump_debug_info get_client_info get_host_info get_server_info init info kill multi_query more_results next_results options ping

MySQLi (Clases) – – – – – – – – – – – –

prepare query real_connect escape_string rollback select_db ssl_set stat stmt_init store_results use_results thread_safe



Propiedades – – – – – – – – – – – – –

20 de 29

affected_rows client_info client_version errno error field_count host_info info insert_id protocol_version sql_state thread_id warning_count

MySQLi (Clases) ●

mysqli_stmt ●

– –

Métodos – – – – – – – – – –



bind_param bind_result close data_seek execute fetch free_result result_metadata prepare send_long_data

Propiedades – – – –

21 de 29

reset store_results affected_rows errno param_count sqlstate

MySQLi (Clases) ●

mysqli_result ●





Métodos – – – – – – – – – –

Propiedades –

close data_seek fetch_fields fetch_field_direct fetch_array fetch_assoc fetch_object fetch_row close field_seek

– –

22 de 29

current_field field_count lengths num_rows

PostgreSQL ●

La base de datos PostgreSQL es un producto de Código Abierto. Postgres, desarrollada originalmente en el Departamento de Ciencias de la Computación de la Universidad de Berkeley, fue pionera de muchos de los conceptos objeto-relacionales ahora disponibles en algunas bases de datos comerciales. Provee apoyo a SQL92/SQL99, transacciones, integridad referencial, procedimientos almacenados y extendibilidad de tipo. PostgreSQL es un descendiente de código abierto del código original de Berkeley.

23 de 29

Un ejemplo: MongoDB ●

MongoDB es una base de datos no relacional, escalable, de alto rendimiento y de código abierto. ● ● ● ● ● ● ● ●

Almacenamiento basado en documentos Apoya indización Replicación y alta disponibilidad Auto-sharding Consulta Actualizaciones rápidas atómicas Map/Reduce GridFS 24 de 29

Uso de extensiones directas ¡Problemas! ●

El uso de extensiones de conexión directa mezclando código SQL con PHP, como en los ejemplos MySQL, nos enfrenta a los siguientes problemas: ● ● ●

Escalabilidad Mantenimiento Portabilidad

25 de 29

Uso de extensiones directas. Solución ●

La solución para resolver los problemas anteriores, es separar nuestro diseño en capas: ●

● ●



Abstracción de Base de Datos (si es posible con emparejamiento objeto-relacional y caché en memoria principal de consultas) Lógica PHP Despliegue (en formato HTML)

Varias herramientas permiten hacer esta separación, por ejemplo: bibliotecas de abstracción de bases de datos y plantillas. Además la utilización de programación orientada a objetos y patrones nos hará la vida fácil. 26 de 29

El patrón ActiveRecord y emparejamiento objeto relacional ●



No son lo mismo, sin embargo, el patrón ActiveRecord es una forma de emparejamiento objeto relacional. La interfaz de un objeto que siga el patrón mencionado incluiría funciones tales como Insertar, Actualizar y Borrar, además de propiedades que corresponden más o menos a las columnas de la tabla que representa el objeto. 27 de 29

El patrón ActiveRecord y emparejamiento objeto relacional ●

Algunos ejemplos del patrón: ● ● ● ● ● ● ● ● ● ●

ADOdb Active Record Axon ORM Doctrine ORM Eloquent ORM Flourish Idiorm NotORM Propel RedBeanPHP Spot2 ORM 28 de 29

¡Gracias por su atención!

¿Preguntas?

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.