sql >> Databáze >  >> RDS >> Mysql

Přímý přístup k databázi serveru přes Ajax (bez PHP nebo jiného prostředníka)

Myslíte, existuje databáze, která nativně podporuje protokol HTTP? No, nějaké jsou. Máte MonetDB/XQuery (http://monetdb.cwi.nl/XQuery/QuickTour/ XRPC/ ) a databáze NoSQL, jako je CouchDB (http://couchdb.apache.org/ ). Máte to také v tradičnějších rdbms, jako je Oracle (Oracle Application Express spoléhá na vestavěný HTTP server, neboli službu APEX http://www.oracle.com/technology/products/database/application_express/index.html ) a MS SQL (objekt schématu služby jako http://msdn.microsoft. com/en-us/library/ms190332.aspx a zobrazení XML, viz http://msdn.microsoft.com/en- us/library/aa286527.aspx )

Ale opravdu - měli byste si položit otázku, zda je to opravdu tak užitečné.

Chci říct, že vždy bude existovat jedna komponenta, která zpracovává HTTP. Možná máte pocit, že je dobré odstranit vrstvu webserver/php, protože máte pocit, že je to něco navíc a sedí mezi aplikací a databází. Ale ve skutečnosti se řešení, která jsem právě zmínil, až tak neliší – jsou označena nad stejným softwarem, ale data musí stále procházet tou další vrstvou.

A můžete se divit, zda je to skutečně výhodné, mít vše v jednom kuse:se samostatným webovým serverem můžete škálovat vrstvu webového serveru nezávisle na databázovém serveru. Nebo můžete škálovat databázovou vrstvu nezávisle na vrstvě webového serveru. Pokud je to všechno jeden kus softwaru, nemůžete.

V zásadě tím, že zabudujete http server do databáze, zatížíte db server úlohou, která spotřebovává zdroje, které mohly být použity pro jiné úlohy db. Nyní se zamyslete nad běžným případem, kdy jste zaplatili za licenci na procesor vaší db. Opravdu byste chtěli utratit tuto licenci za to, aby db zpracovávala požadavky HTTP, když jste přesně to mohli udělat s bezplatným webovým serverem, jako je apache? I když používáte bezplatný softwarový databázový produkt, v mnoha případech je databázový server úzkým hrdlem. Opravdu chcete dát na talíř více úkolů tím, že do něj zabudujete HTTP server?

Existuje další důvod, proč si myslím, že to není tak dobrý nápad. Zmínil jste XML jako formát pro výměnu dat. Dobrota. Ale co když chcete JSON? Nebo YAML? Nebo snad prostý CSV? Skriptovací jazyky webového serveru jako PHP, ASP.NET, Perl a dokonce Java mají velmi dobré knihovny, které se s těmito věcmi vypořádají. Typické jazyky databázových uložených procedur ne. Samozřejmě, můžete to udělat o krok dále a říct si, sakra, proč do databáze nezabudovat řekněme Javu nebo .NET, ale to zase obrací problém naruby – úkolem databáze je ukládat a načítat data a přijímat péče o data během jejich uložení. Zpracování dat za účelem jejich předložení aplikaci není součástí. Pokud je součástí práce db se o to postarat, odeberete důležitý zdroj flexibility a škálovatelnosti systému jako celku. Můžete mít pocit, že je to méně režijní, protože je o jednu komponentu méně (tj. webový server/skriptovací jazyk), o které je třeba přemýšlet, ale ve skutečnosti tam stále je, jen se skrývá uvnitř vašeho databázového softwaru a vysává zdroje, které mohly být použity pro ukládání a načítání dat, parsování dotazů atd.



  1. PostgreSQL:Porovnání řetězců bez ohledu na velikost písmen

  2. SQL Server (TSQL) - Je možné provádět příkazy paralelně?

  3. Jak funguje SET ROWCOUNT v SQL Server

  4. Odečtěte měsíce od data v PostgreSQL