"È allettante, se l'unico strumento che hai è un martello, trattare tutto come se fosse un chiodo." - Abraham MaslowProgrammazione funzionale del database in Clojure
Ho bisogno di scrivere uno strumento per scaricare un grande database gerarchico (SQL) in XML. La gerarchia consiste in una tabella Person
con le tabelle Address
, Phone
, ecc.
devo scaricare migliaia di righe, quindi mi piacerebbe farlo in modo incrementale e non mantenere l'intero file XML in memoria.
Vorrei isolare un codice funzione non puro in una piccola parte dell'applicazione.
Sto pensando che questa potrebbe essere una buona opportunità per esplorare FP e la concorrenza in Clojure. Posso anche mostrare i benefici dei dati immutabili e l'utilizzo multi-core ai miei colleghi scettici.
io non sono sicuro di come l'architettura complessiva della domanda deve essere. Sto pensando che posso usare una funzione impura per recuperare le righe del database e restituire una sequenza lazy che può essere elaborata da una funzione pura che restituisce un frammento XML.
Per ogni riga Person
, è possibile creare un Future
e diversi elaborati in parallelo (l'ordine di output non è rilevante).
Mentre ogni Person
viene elaborato, l'attività recupera le righe appropriate dalle tabelle Address
, Phone
e così via e genera l'XML nidificato.
È possibile utilizzare una funzione generica per elaborare la maggior parte delle tabelle, basandosi sui metadati del database per ottenere le informazioni sulla colonna, con funzioni speciali per le poche tabelle che richiedono un'elaborazione personalizzata. Queste funzioni potrebbero essere elencate in un map(table name -> function)
.
Sto andando su questo nel modo giusto? Posso facilmente tornare a farlo in OO usando Java, ma non sarebbe divertente.
BTW, ci sono buoni libri su modelli FP o architettura? Ho molti buoni libri su Clojure, Scala e F #, ma sebbene ciascuno tratti bene il linguaggio, nessuno guarda al "quadro generale" del design della programmazione di funzioni.
A mia conoscenza non esiste un libro "FP for architects". Tuttavia, se leggi "Strutture dati puramente funzionali" end to end, avrai sicuramente un'idea migliore di come applicare i concetti FP nel mondo reale. Vedi http://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504 –
@ Chris Smith: Ho quello sulla mia lista dei desideri Amazon. Lo guarderò. – Ralph