Vandaag liep ik tegen een interessant stukje lichte frustratie op. Al jaren ben ik vooral bezig met postgresql/postgis. Een database die me zeer goed bevalt. Niet omdat het de beste/snelste/veiligste/stabielste database is, maar gewoon, omdat ik er fijn mee kan werken.
Case 1: geometry naar wkt
Vandaag moest ik weer met Oracle aan de slag. Vanuit een Java webservice haal ik gegevens uit Oracle die vervolgens via Rest worden ontsloten. Dan maar even zelf queries bakken en de geometrie omzetten naar WKT (Well known text) zodat ik niet allerlei bibliotheken moet downloaden voor java, maar de data gewoon kan benaderen als tekst.
Oracle:
select SDO_GEOMETRY(
o.geometry.sdo_gtype,
NULL,
o.geometry.sdo_point,
o.geometry.sdo_elem_info,
o.geometry.sdo_ordinates).get_wkt()
from onderdelen o;
PostGIS:
select asWKT(geometry) from onderdelen;
Case 2: md5 hash
Mijn database gebruikt wachtwoorden uit andere systemen. Omdat ik geen veiligheids issue wil introduceren, wilde ik proberen de wachtwoorden versleuteld op te slaan. De meest eenvoudige manier hiervoor is in mySQL en Postgresql md5. Ik wil dus met sql een md5 hash genereren voor een wachtwoord zodat wachtwoorden niet zichtbaar in een database hoeven te worden opgeslagen
Oracle:
create or replace function md5(input varchar2)
return sys.dbms_obfuscation_toolkit.varchar2_checksum as
begin
return lower(
rawtohex(utl_raw.cast_to_raw(
sys.dbms_obfuscation_toolkit.md5(
input_string => input
)
))
);
end;
select md5('mijnwachtwoord') from dual;
PostGres:
select md5('mijnwachtwoord);
Met de pet op van SQL ontwikkelaar is het duidelijk; de queries van postgresql zijn intuitief en lijken op echte mensentaal. De queries van Oracle zijn onnodig complex, ontbreken soms en moeten dan via functies worden herbouwd en zijn absoluut niet in een oogopslag door een leek te lezen. Wanneer ik het aantal uren bij elkaar optel dat ik per jaar door de eenvoudige SQL van Postgresql bespaar met zoeken en prutsen, dan kan ik zelf al snel concluderen dat postgresql voor mij op dit vlak de absolute winnaar is.