NAME
HDB::Encode - Hybrid DataBase - HASH/ARRAY enconding.
DESCRIPTION
You can save HASH and ARRAY structures inside columns of a table in the database.
** The column that will receive the encoded data need to have a good size for the encoded HASH/ARRAY!
USAGE
my %HASH = (
'a' => 1 ,
'b' => 2 ,
'c' => 3 ,
'd' => { 'da' => 41 , 'db' => 42 } ,
'e' => [qw(x y z)] ,
) ;
$HDB->insert( 'users' , {
user => 'joe' ,
name => 'joe tribianny' ,
more => \%HASH ,
} ) ;
...
$HDB->insert( 'users' , {
user => 'joe' ,
name => 'joe tribianny' ,
more => { a => 1 , b => 2 } ,
} ) ;
...
my %hash = $HDB->select( 'users' , 'user == joe' , col => 'more' , '$$@' ) ; # $$@ to return directly the HASH.
METHODS
** You don't need to use this methods, HDB will make everything automatically.
Pack (\%HASH or \@ARRAY)
Encode a HASH/ARRAY. Will use Pack_HASH & Pack_ARRAY.
Pack_HASH (\%HASH)
Encode a HASH.
Pack_ARRAY (\@ARRAY)
Encode an ARRAY.
UnPack (ENCODED_HASH or ENCODED_ARRAY)
Decode a HASH/ARRAY. Will use UnPack_HASH & UnPack_ARRAY.
UnPack_HASH (ENCODED_HASH)
Decode a HASH.
UnPack_ARRAY (ENCODED_ARRAY)
Decode an ARRAY.
Is_Packed_HASH (DATA)
Check if the encoded data is a HASH.
Is_Packed_ARRAY (DATA)
Check if the encoded data is an ARRAY.
Check_Pack_Size (DATA)
Check if the encoded data is ok.
Packed_SIZE (\%HASH or \@ARRAY)
Return the size of the HASH/ARRAY encoded. This will calculate the size without generate the encoded data.
Will use Packed_SIZE_HASH & Packed_SIZE_ARRAY.
Packed_SIZE_HASH (\%HASH)
Return the size of the HASH encoded without generate it.
Packed_SIZE_ARRAY (\@ARRAY)
Return the size of the ARRAY encoded without generate it.
ENCODED DATA
The encoded HASH/ARRAY are very similar:
%HDB_PACKED_HASH%[1.0]{50}:DATA
1.0 >> Format version.
50 >> DATA size.
DATA >> The encoded data.
# For ARRAY is:
%HDB_PACKED_ARRAY%...
** The data has this begin to identify the encoded data in the database.
** The size is used to check if the data is crashed.
DATA for HASH:
02:aa4:bbbb
0 >> normal value. 1 for HASH in the value. 2 for ARRAY in the value.
2 >> size of key.
aa >> key
4 >> size of value.
bbbb >> value
DATA for ARRAY:
02:aa
0 >> normal value. 1 for HASH in the value. 2 for ARRAY in the value.
2 >> size of value.
aa >> value
SEE ALSO
HDB, HDB::CMDS, HDB::sqlite, HDB::mysql.
AUTHOR
Graciliano M. P. <gm@virtuasites.com.br>
COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.