I DB Berkeley non sono così distanti dai database SQL. Ad esempio, i sistemi ISAM (che sono simili a Berkeley DB) sono stati utilizzati per costruire database relazionali (ad esempio, MyISAM backend di MySQL, warts et al.).
In sostanza, un DB Berkeley può memorizzare righe di tabelle. È possibile utilizzare l'indicizzazione di Berkeley DB per implementare gli indici relazionali sulle righe memorizzate: il limite e gli offset vengono implementati facilmente. La serializzazione non è una grande preoccupazione (è insignificante rispetto a IO).
La grande difficoltà consiste nell'implementare join e un pianificatore di query decente: il pianificatore di query è una parte cruciale di un database relazionale, analizza una query e decide come deve essere eseguita; quali tabelle devono essere interrogate, in quale ordine e usando quali indici - e quindi la query deve essere eseguita in modo efficiente (un approccio ingenuo probabilmente soffocherà sul primo join su due tabelle di grandi dimensioni - l'approccio ingenuo è quello di materializzare il pieno join esterno, e che può avere una quantità irrintracciabile di righe). Non sembra qualcosa di molto difficile, ma ci sono molte combinazioni e trovare la combinazione migliore è difficile - e il diverso tra la combinazione migliore e quella "decente" può essere enorme.