2013-10-07 4 views
5

Sto costruendo un'app che voglio pubblicare, scriverò l'app in Python. Non voglio bloccare l'utilizzo di alcun database specifico sql/nosql nella mia app. Come posso progettare l'applicazione o il livello del modello per non applicare un modo SQL/NOSQL per archiviare i dati.Python c'è un ORM per SQL e NoSQL

Esiste un ORM che funziona con entrambi i tipi di archiviazione? Non l'ho trovato. Normalmente userei sqlalchemy per assicurarmi che le persone possano usare MySQL/PostgreSQL/MSSQL/etc se vogliono, ma aggiungere il NOSQL all'immagine sembra più complicato di quanto pensassi inizialmente.

devo alcuni requisiti quali:

  • non voglio far rispettare qualsiasi backend di memorizzazione, questo è quello di garantire che non spaventare la gente di usare l'applicazione.
  • si deve supportare la migrazione dello schema dei dati (durante l'installazione o l'aggiornamento delle procedure)

Se avete qualche idea di come posso architettura questi requisiti Apprezzerei l'aiuto. E 'possibile creare una struttura come questa:

+-----+ 
    + app + 
    +-----+ 
     | 
+-------------+ 
+ Data Access + 
+-------------+ 
     | 
+-----------+ 
+ SQL/NOSQL + 
+-----------+ 

Grazie

risposta

3

No, non c'è niente di simile.

Un ORM o un RDBMS possono fare affidamento su SQL come standard minimo per l'astrazione del database di sottostruttura. La maggior parte degli ORM si basa sull'API Python DB (implementata più o meno completa da tutti i binding Python RDBMS).

Per NoSQL non esiste né una lingua di query standard né un'API di driver standard.

Quindi non esiste nulla del genere che funzioni per entrambi i mondi.

Ci sono stati approcci per definire un linguaggio di query comune per il linguaggio NoSQL.

Per esempio c'è JsonIQ

http://www.jsoniq.org/

Ma non c'è molto che si aiutano nella realtà.

+0

Grazie per la risposta, dovrò decidere se preferirei andare con NoSQL su SQL. Daremo un'occhiata a jsoniq. – DoRivard

0

Si dovrebbe provare l'implementazione www.28.io di JSONiq. È disponibile come servizio Cloud o On premise.

0

Il più vicino a un livello di astrazione è django-nonrel. Questo è un fork di django, che supporta sia Mongo, il database NoSQL di Google e pochi altri.

Un tempo era promettente, ma poiché la comunità di django in genere respingeva l'idea di aggiungere NoSQL, è rimasta indietro.