Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Perl + SQL = Mantis DB

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Mensaje Mie Abr 23, 2008 9:41 pm
hugon010
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Abr 2008
Mensajes: 2
Perl + SQL = Mantis DB Responder citando

Les dejo la URL de un proyecto que apenas abrimos públicamente que refiere a un DBMS o administrador de Bases de Datos.

http://www.mantisdb.com/

Está en fase experimental pero ya es utilizable.

Nos encantaría que lo descargaran y lo prueben.
Está escrito 100% en Perl.

Es multiusuario, multitarea y preparado para una alta concurrencia de consultas de modificación de datos. Posee lenguaje de consultas compatible con SQL ANSI-92

Espero les guste.

Saludos cordiales.
Mensaje Jue Abr 24, 2008 7:02 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

Bienvenidos al foro de Perl en Español.

Enhorabuena por este desarrollo. Impresionante.

De todas formas, ahí van unos comentarios:

En el algoritmo de Maza, se dice que se utiliza esto:
Perl:
@sorted = sort { ($a->[$orderby] <=> $b->[$orderby]) || ($a->[$orderby] cmp $b->[$orderby]) } @unsorted;

Claramente, es necesario hacer esto para distinguir los casos de ordenación numérica y alfabética, pero se pude optimizar un poquito más utilizando, por ejemplo, el sistema de índices que se comenta en la documentación de sort().

Perl:
#!/usr/bin/perl
use warnings;
use strict;

use Benchmark qw(:all);
use Data::Dumper;

my @array;
for my $i ( 0 .. 100_000 ) {
  push @array, [ map { int rand 100_000  } 1 .. 10  ]

}

my $orderby = 0;

cmpthese( 100, {
    'Completo' => sub {
        my @ordenado
            =
                sort {
                    ($a->[$orderby] <=> $b->[$orderby]) || ($a->[$orderby] cmp $b->[$orderby])
                }
                @array
            ;
#        print Dumper(\@ordenado[0..2]);
    },
    'Solo <=>' => sub {
        my @ordenado
            =
                sort {
                    $a->[$orderby] <=> $b->[$orderby]
                }
                @array
            ;
#        print Dumper(\@ordenado[0..2]);
    },
    'Indices'     => sub {
        my @indice = ( map { $array[$_][$orderby] } 0 .. $#array );
        my @ordenado
            = @array[
                sort {
                    ($indice[$a] <=> $indice[$b]) or ($indice[$a] cmp $indice[$b])
                } 0 .. $#array
              ]
            ;
#        print Dumper(\@ordenado[0..2]);
    },
    'Eval'     => sub {
        # Si el campo a ordenar es numérico, creamos el método de comp. numérico
        my $metodo = sub { $a->[$orderby] <=> $b->[$orderby] };
        my @ordenado = sort $metodo @array;
#        print Dumper(\@ordenado[0..2]);
    },
});

__END__

Código:
explorer@joaquin:~/Documents/Desarrollo> ./kk.pl
           Rate Completo     Eval Solo <=>  Indices
Completo 1.16/s       --      -0%      -7%     -15%
Eval     1.16/s       0%       --      -7%     -15%
Solo <=> 1.25/s       8%       7%       --      -9%
Indices  1.37/s      18%      17%       9%       --


Ultima edición por explorer el Vie Abr 25, 2008 11:12 am, editado 1 vez
Mensaje Vie Abr 25, 2008 8:17 am
hugon010
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Abr 2008
Mensajes: 2
Acerca de tu comentario Responder citando

Explorer, tu no sabes cuánto aprecio este tipo de comentarios al que le podemos extraer mucho aprendizaje.

Sabes, me considero estudiante de Perl, lenguaje que me ha fascinado desde que lo conocí. Y me falta mucho por aprender. Este desarrollo es práctica para poder aprender más, aunque no por eso no pueda ser utilizado en producción algún día... algún día.

Este foro tal vez sea de los más completos que he visto en español, y me agradaría mucho recibir más críticas que puedan surgir con el post.

Por mi parte me siento muy complacido de compartir por lo menos mi entusiasmo por el open source a los Perleros de todas partes.
Actualmente estoy trabajando en introducir precisamente métodos con Benchmark para mostrar tiempos de las consultas.

De nuevo gracias y felicidades por este foro.
Saludos desde México.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group