• Publicidad

Motor de base de datos distribuido

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Motor de base de datos distribuido

Notapor jcarranza » 2010-05-25 00:41 @070

¡Hola!

Mi pregunta es la siguiente: ¿cómo diseñar y construir una aplicación orientada a objetos que implementa un motor de acceso a datos distribuido en Perl?

¡¡¡Saludos!!!
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Publicidad

Re: Motor de base de datos distribuido

Notapor explorer » 2010-05-25 03:09 @172

La funcionalidad de la distribución de datos la da el propio motor de la base de datos.

Aunque se puede construir una base de datos con Perl, es recomendable usar alguno de los motores más conocidos, como MySQL o PostGreSQL, por ejemplo.

Lo que sí se puede realizar en Perl es una aplicación orientada a objetos. El más utilizado hoy en día es el que te lo ofrece la distribución DBIx::Class.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Motor de base de datos distribuido

Notapor jcarranza » 2010-05-25 09:57 @456

Por ejemplo, construir una clase para conectar a una base de datos con DBI:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. package ConectarDB;
  3. use strict;
  4. use DBI;
  5. # variables a editar
  6. my $db_user = "usuario_database";
  7. my $db_pass = "pwd_database";
  8. my $host_name = "host_database";
  9. my $db_name = "nombre_database";
  10. # vars
  11.  
  12. my $q_string = "DBI:mysql:host=$host_name;database=$db_name";
  13.  
  14. sub connect{
  15. return (DBI->connect ($q_string, $db_user, $db_pass,
  16. {PrintError => 0, RaiseError => 1}));
  17. }
  18. 1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y la llamaría, por ejemplo, así desde otro script Perl:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my($dbh,$sth);
  2.  
  3. $dbh = ConectarDB->connect();
  4.  
  5. $sth = $dbh->prepare('SELECT fecha FROM table WHERE nombre = ? AND apellido = ?') or die("Couldn't prepare statement: " . $dbh->errstr);
  6. $sth->execute("Jorge","Luis") or die("Couldn't execute statement: " . $sth->errstr);
  7. my $fecha = $sth->fetchrow_array();
  8. $sth->finish;
  9. $dbh->disconnect;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿¿Sería algo así??
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Re: Motor de base de datos distribuido

Notapor explorer » 2010-05-25 10:21 @473

A ver si nos aclaramos... :)

Una cosa es un motor de base de datos. Otra cosa es un lenguaje que permite una programación siguiendo el paradigma de lo orientado a objetos. Otra cosa es que queramos usar ese paradigma para dialogar con el motor de la base de datos. Otra cosa es que en la base de datos guardemos objetos. Y otra cosa es que la relación entre el programa y la base de datos la hagamos con una capa de objetos que encapsule la complejidad de las relaciones entre las tablas (que es el caso de DBIx::Class).

¿Qué es entonces lo que deseas hacer?

Los ejemplos que has puesto se refieren a usar el paradigma de la orientación a objetos para dialogar con el motor de la base de datos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Motor de base de datos distribuido

Notapor jcarranza » 2010-05-26 12:15 @552

Exactamente, me refería a dialogar con el motor MySQL.

Tengo una rutina que me conecta.

Ahora, ¿cómo sería una rutina para insertar registros, otra para borrar registros y otra para modificar registros?

¡¡¡Saludos!!!
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Re: Motor de base de datos distribuido

Notapor jcarranza » 2010-06-02 01:49 @117

¿La rutina para listar sería algo así?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub listar{
    my $sql = shift; # recogemos la consulta pasada como referencia.
    return($dbh->prepare('$sql') or die("error"));
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La llamaría así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $consulta="Select * from usuarios order by nombre";
$sth=ConectarDB->listar($consulta);
$sth=execute();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Re: Motor de base de datos distribuido

Notapor explorer » 2010-06-02 03:42 @196

Parece que sí... ¿lo has probado?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Motor de base de datos distribuido

Notapor jcarranza » 2010-06-02 05:02 @251

no lo he probado pero tiene toda la pinta de que sí.

Pero no me gusta ya que esta rutina sirve para insertar, borrar y modificar con tan solo variar la consulta que le pasamos. Lo ideal sería tener una rutina exclusiva para, por ejemplo, listar, solamente. Y he pensado en algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub listar{
  2. my $sql= shift; #recogemos la consulta pasada como referencia.
  3. my $sth=$dbh->prepare('$sql') or die("error");
  4. $sth->execute();
  5.  
  6.         while (my @data = $sth->fetchrow_array())
  7.         {
  8.                 return (print "Nombre: @data[1] - (email: @data[2]) Tel: @data[3] \n");
  9.         }
  10. $sth->finish();
  11. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



¿detectas algún problema?

saludos!!
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Re: Motor de base de datos distribuido

Notapor explorer » 2010-06-02 05:08 @255

El error que veo es el de referirte a los elementos del array como subconjuntos de array. En lugar de @data[1] hay que escribirlo como $data[1]. Y lo mismo para el 2 y el 3.

No sé si habrá algún error más, porque entonces tendría que ejecutarlo. Pero mejor que lo hagas tu, ¿no?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Motor de base de datos distribuido

Notapor jcarranza » 2010-06-02 05:15 @260

¡¡Estoy en ello!!

Gracias por tu ayuda... ¡¡¡ya te contaré!!
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado