Vuoi dire, c'è un database che supporta in modo nativo il protocollo HTTP? Bene, ci sono alcuni. Hai MonetDB/XQuery (http://monetdb.cwi.nl/XQuery/QuickTour/XRPC/) e un database NoSQL come CouchDB (http://couchdb.apache.org/). Hai anche nelle più tradizionali RDBMS-es come Oracle (Oracle Application Express si basa su un built-in server HTTP, alias il servizio APEX http://www.oracle.com/technology/products/database/application_express/index.html) e MS SQL (servizio oggetto dello schema come http://msdn.microsoft.com/en-us/library/ms190332.aspx e XML viste, vedere http://msdn.microsoft.com/en-us/library/aa286527.aspx)
Ma davvero - dovresti chiedertelo se è davvero così utile.
Voglio dire, ci sta andando sempre essere una componente che gestisce HTTP. Potresti avere la sensazione che sia bello togliere il livello webserver/php perché ritieni che sia extra e si trova tra l'app e il database. Ma in realtà le soluzioni che ho appena menzionato non sono poi così diverse: sono etichettate in cima allo stesso software, ma i dati devono ancora scorrere attraverso quel livello in più.
E ci si può chiedere se sia davvero vantaggioso avere tutto in un unico pezzo: con un server web separato, è possibile ridimensionare il livello del server web indipendentemente dal server del database. Oppure puoi ridimensionare il livello del database indipendentemente dal livello del server web. Se è tutto un pezzo di software, non puoi.
Fondamentalmente, creando il server http nel database, si carica il server db con un'attività che consuma risorse che potrebbero essere state utilizzate per altre attività di db.Ora pensa a un caso comune, in cui hai pagato una licenza per processore del tuo db. Ti piacerebbe davvero spendere quella licenza per avere il db gestire le richieste HTTP, quando avresti potuto farlo esattamente con un server web gratuito come Apache? Anche se si utilizza un prodotto di database soft gratuito, in molti casi il server di database è un collo di bottiglia. Vuoi veramente mettere più compiti sulla sua piattaforma costruendo un server HTTP?
C'è un altro motivo per cui penso che non sia una buona idea. Hai citato XML come formato di scambio di dati. Goody. Ma cosa succede se vuoi JSON? O YAML? O forse semplicemente CSV? I linguaggi di scripting di Webserver come PHP, ASP.NET, Perl e anche Java hanno tutti ottime librerie per gestire queste cose. I tipici linguaggi di stored procedure del database non lo sono. Naturalmente, puoi fare un ulteriore passo avanti e dire, diavolo, perché non costruire dire Java o .NET nel database, ma questo sta capovolgendo il problema - il compito del database è quello di archiviare e recuperare i dati, e prendere bene cura dei dati mentre sono archiviati. L'elaborazione dei dati per presentarla a un'applicazione non fa parte di questo. Se si fa parte del lavoro di db per prendersi cura di questo, si prende una fonte importante di flessibilità e scalabilità del sistema nel suo complesso. Potresti sentirti meno sovraccarico perché c'è un componente in meno (ad es. Il webserver/linguaggio di scripting) a cui pensare, ma in realtà è ancora lì, si nasconde semplicemente all'interno del tuo software di database e risucchia le risorse che avrebbero potuto essere utilizzate per memorizzazione e recupero di dati, analisi di query, ecc.
Ho letto e riletto questa risposta, e continuo a tornare poco convinto ... confrontalo con un client di posta e un server di posta. È intrinsecamente insicuro che il client di posta sappia come connettersi al server di posta e leggere una casella di posta? Perché è così diverso da un account di database? Naturalmente, è necessario applicare i privilegi appropriati sul proprio account di database, cosa che di solito le applicazioni web non fanno, ma ciò non cambia il fatto che è possibile proteggere perfettamente un account di databas come è possibile con un account di posta. –
@Roland È possibile * rendere ogni utente un account di database. Ma poi ogni utente dovrebbe avere anche il proprio database, a meno che non sia possibile definire i privilegi in base alla tabella, nel qual caso ogni utente avrebbe bisogno della propria tabella. (Simile a una casella di posta) –
Questo è il mio punto Chacha102. In tutti i principali rdbms-es puoi concedere i privilegi per tabella. Puoi persino concederli per colonna. E non si ferma con le tabelle e le colonne, le routine e le viste memorizzate possono essere tutte concesse individualmente. E per gestire alcuni ruoli di supporto di rdbms-es, in modo da poter distribuire un pacchetto di privilegi correlati. Se proprio ne hai davvero bisogno, puoi persino implementare i privilegi a livello di file a livello di database (usando le viste e/o le stored procedure). –