Doğrudan (PHP veya başka bir ara olmadan) Ajax ile sunucu veritabanına erişme

3 Cevap php

JQuery gibi güçlü çerçeveler ile, istemci tarafında bütün bir uygulama mantığı inşa etmek mümkün görünmektedir. Bu bir yerli program olarak bir istemci uygulaması bina için çok benzer bulunuyor.

Şimdi bu istemci uygulaması uzak bir veritabanına erişmek gerekiyor varsayalım. Olağan çözüm katmanlar Ajax / PHP / MySQL dahil görünüyor.

Bu PHP tabakası artık gerekli gibi geliyor bana; tüm mantık ve UI tarayıcı uygulaması tarafından halledilir.

O zaman soru: sadece bir HTTP isteği üzerine alır ve bir XML sonucu döndüren bir (umarım sağlam ve güvenli) veritabanı sunucusu orada var gerekmez mi? Bu sonuç, daha sonra kolayca örneğin ile çözümlenen istemci tarafında jQuery.

Ben bu satırlar boyunca bir veritabanı veya çerçeve bulmak için görünmüyor olabilir. Herhangi bir fikir?

3 Cevap

Yani, doğal olarak HTTP protokolünü destekleyen bir veritabanı var mı? Eh, bazı vardır. Sen MonetDB / XQuery'yi (http://monetdb.cwi.nl/XQuery/QuickTour/XRPC/), ve CouchDB gibi bir NoSQL veritabanları (http://couchdb.apache.org/). Ayrıca Oracle gibi daha geleneksel rdbms-es o var (Oracle Application Express dayanan bir dahili HTTP sunucusu, APEX hizmet aka http://www.oracle.com/technology/products/database/application_express/index.html) ve MS SQL gibi (Hizmet şema nesnesi {[(3) }] ve XML görünümleri, {bakın [(4)]})

Ama gerçekten - bu gerçekten yararlı olup olmadığını sorgulamalıdır.

Yani, her zaman HTTP kolları bir bileşen olarak var oluyor. Bunu size ekstra ve uygulaması ve veritabanı arasında oturur hissediyorum çünkü webserver / php tabakasını almak için iyi bir his olabilir. Ama gerçekten, ben sadece belirtilen çözümler farklı değildir - onlar yazılım aynı parça üstünde etiketli, ancak veri hala fazladan bir katman akmasına vardır vardır.

Ayrı bir web sunucusu ile, bağımsız veritabanı sunucusunun web sunucusu katmanı ölçekli olabilir: Ve o tek parça hepsi var gerçekten yararlı olup olmadığını merak edebilirsiniz. Yoksa bağımsız webserver tabakasının veritabanı katmanı dışarı ölçekli olabilir. Bu yazılım tüm tek parça varsa, bunu yapamazsınız.

Temelde, veritabanına http sunucusu kurarak, diğer db görevler için kullanılan olabilirdi kaynaklarını tüketir bir görev ile db sunucu Zahmetli ediyoruz. Şimdi db bir işlemci başına lisans için ödenen ortak bir durum, düşünün. Eğer gerçekten tam olarak apache gibi ücretsiz bir web sunucusu ile yapmış olabilir zaman, db sap HTTP istekleri olan o lisansı geçirmek ister misiniz? Eğer ücretsiz alkolsüz veritabanı ürününü kullanıyor olsanız bile, birçok durumda veritabanı sunucusu bir darboğaz olduğunu. Eğer gerçekten bir HTTP sunucusu kurarak bu plaka üzerinde daha fazla görevleri koymak istiyor musunuz?

Ben o kadar da iyi bir fikir değil bence başka bir nedeni var. Veri değişim formatı olarak XML bahsetti. Goody. Ama JSON ne isterseniz? Veya YAML? Ya da belki sade CSV? PHP, ASP.NET, Perl, ve hatta Java gibi tüm Webserver betik dilleri bu şeylerle uğraşmak çok iyi kütüphaneler var. Tipik veritabanı saklı yordam dilleri yok. Tabii ki, bir adım daha ileri götürün ve söyleyin, cehennem, Java veya veritabanına NET söylemek inşa neden, ama yine ters sorunu çeviriyor olabilir -. Veritabanının görev verilerini saklamak ve almak için, ve iyi almak depolandığı çalışırken veri bakım. Bir uygulama sunmak için veri işleme bunun bir parçası değildir. Eğer o dikkat çekmek için DB'ın işinin bir parçası yaparsanız, bir bütün olarak sistemin esneklik ve ölçeklenebilirlik önemli bir kaynağını götürmek. Orada düşünmek için daha az bir bileşen (yani webserver / betik dili), ama gerçekte, o hala orada çünkü daha az yük olduğunu düşünebilirler, bu sadece veritabanı yazılımı içinde gizler, ve kullanılan olabilirdi kaynaklarını emmektedir vb depolama ve ayrıştırma sorguları, veri almak

Peki, can sıkıcı bir parçasıdır kimlik olacak.

Kod istemci tarafında tamamen bitti Çünkü, istemci daha sonra veritabanı sunucusuna erişmek için kimlik doğrulama tüm ayrıntıları bilir.

Bu oldukça .. err ... güvensiz. Herhalde bu yüzden birçok kişi doğrudan erişim sunucusu geliştirdik hangi değil ..

Eğer gerçekten bir minimuma PHP / Server-Side komut dosyası tutmak istiyorsanız, düzgün tüm verileri kaçar daha oldukça sağlam bir PHP vekil yapmak. Ayrı bir korumalı ini dosyası, hatta php.ini dosyasındaki yapılandırma ayrıntıları tutmak ve bundan sonra sunucu tarafı komut dosyası oldukça fazla göz ardı edebilirsiniz.

Ben kimse bunu varsayalım, ancak PHP sonuç kümelerini işlemek için çok daha uygundur. Ayrıca, vahşi makineleri veritabanına doğrudan erişim yok ki geleneksel yaklaşım fazladan bir güvenlik düzeyi sağlar, ve tüm olağan web sunucusu, güvenlik ve erişim kontrolleri kullanılabilir.