Problemi ORM non bloccanti

9

Ho chiesto una domanda su SO, e ho scoperto che non ci sono bloccando gli ORM per il mio framework web preferito. Per non blocco intendo un ORM con supporto callback per il recupero asincrono. L'ORM verrebbe fornito con un callback o alcuni di tali da eseguire quando i dati sono stati ricevuti.

Voglio crearne uno, ma ho alcune domande che mi impediscono di avviare lo sviluppo:

  • Quali problemi potrebbero verificarsi durante lo sviluppo di ORM?
  • Il supporto del recupero non bloccante aumenta drasticamente la complessità di un ORM?
  • Perché ci sono così poche ORM non bloccanti in giro?

Aggiornamento: Sembra che debba migliorare la mia domanda. Disponiamo di soluzioni che ci consentono già di ricevere dati in modalità non bloccante e ritengo che la maggior parte delle aziende che utilizzano tali soluzioni utilizzi SQL raw. Vogliamo creare una soluzione più generica che possiamo riutilizzare in progetti futuri. Quali difficoltà potremmo incontrare?

Aggiornamento 2: il linguaggio preferito è python, ma sono interessato ai principi. Questa domanda è in realtà per me, poiché esaminerò le piattaforme che hanno già ORM non bloccante.

    
posta Nikolay Fominyh 21.06.2012 - 22:45
fonte

2 risposte

2

What issues might be encountered when developing ORM?

Avrai bisogno di indirizzare la lista dei problemi necessari per colmare la Mancata corrispondenza dell'impedenza relazionale dell'oggetto , oltre a trattare le idiosincrasie di SQL fornite da ciascun fornitore RDBMS. Quanto più avanzati saranno i requisiti, tanto peggiori saranno i problemi in questo reparto: ad esempio, l'SQL generato per implementare i risultati del paging differirà in modo piuttosto marcato tra Oracle, SQL Server e mysql. Fortunatamente, questo non è diverso tra le implementazioni ORM bloccanti e non bloccanti, quindi se c'è un ORM open source per Python, si potrebbe prendere in prestito pesantemente da esso per affrontare quasi tutti questi problemi.

Does supporting non-blocking retrieval dramatically increase the complexity of an ORM?

Il problema più grande che dovrai affrontare è che la libreria di connessione per accedere allo stesso RDBMS potrebbe bloccarsi. Questa è un'altra differenza che devi affrontare. Gestire i thread invisibili ai tuoi utenti sarà la sfida aggiuntiva per te. Inoltre, il caricamento delle dipendenze su richiesta sarebbe una sfida, perché l'operazione è percepita come sincrona dagli utenti del tuo framework: dopotutto, normalmente non si aspetta una notifica quando è OK accedere a una proprietà di raccolta del loro oggetto.

Why are there so few non-blocking ORMs around?

Posso solo speculare su quest'ultimo punto, ma penso che abbia a che fare con una bassa domanda di tali framework: dato che è possibile simulare parzialmente l'ORM non bloccante aggiungendo un altro livello di threading al codice dell'applicazione, se necessario, e mantenere il tipo di blocco regolare ovunque, sviluppando un framework specializzato per esso sembrerebbe non ottimale.

    
risposta data 24.06.2012 - 13:42
fonte
6

Non hai detto quale lingua stai utilizzando, quindi consiglierò Node.js e un ORM per questo: Node ORM , tutto nel nodo è asincrono, non è diverso.

    
risposta data 22.06.2012 - 12:26
fonte

Leggi altre domande sui tag