MySQL przez HTTP

Witam Wszystkich,

Prosze sie nie smiac, bo mam nietyopowa sprawe :slight_smile:

Jedna aplikacja stojaca na hoscie “X”, wielu klientow na roznych hostach w sieci Internet.

Klienci maja korzystac z bazy danych aplikacji na hoscie “X”, maly handicap : host “X” udostepnia tylko ruch po HTTP, malo tego, nie chodzi o sam numer portu, rowiez tylko ruch HTTP jest przepuszczany.

Zalozenie jest wiec takie, ze jesli wykonam rzadanie http://aplikacja_klient.pl/ ,aplikacja zamiast pytac lokalna baze MySQL, wyslaloby opakowane w dokument http zapytanie SQL do hosta “X”, ktory przetworzy rzadanie HTTP na plain SQL, wykona zapytanie i odpowiedz serwera SQL opakuje z powrotem w dokument HTML i zwroci jako odpowiedz.

Sa jakies gotowce tego typu ? Jesli nie ma to jak sie za cos takiego zabrac ?

Pozdrowienia

To się nazywa szumnie “API” :wink:
Chociaż trochę przegięciem gruchy jest robienie akrobacji do obejścia głupiej polityki hostingu / administracji / firewalla.

I musisz je dobrze przemyśleć, konkretnie w kwestii autentykacji / autoryzacji.
Pierwszy złośliwy klient wysyłający “DROP DATABASE” zamyka Ci temat.

[quote=Tomash]To się nazywa szumnie “API” :wink:
Chociaż trochę przegięciem gruchy jest robienie akrobacji do obejścia głupiej polityki hostingu / administracji / firewalla.[/quote]
Znalazlem cos takiego http://code.nytimes.com/projects/dbslayer i cos takiego http://github.com/harrisj/activerecord-dbslayer-adapter

[quote=Tomash]I musisz je dobrze przemyśleć, konkretnie w kwestii autentykacji / autoryzacji.
Pierwszy złośliwy klient wysyłający “DROP DATABASE” zamyka Ci temat.[/quote]
Jasne, zdaje sobie z tego sprawe.

Pozostaje jednak pytanie jak to rozwiazac, ze jesli mam w kodzie Article.find(:all)
zeby Rails puscil to do hosta X po HTTP zamiast pytac lokalny serwer mySQL. :), obejdzie sie bez klepania kodu w C ?

Pozdrowienia

Niektóre z sensownych baz danych mają dostęp via HTTP w standardzie. Czytaj: CouchDB, MongoDB :).

Tak wiem, a DB2 9 (Viper) ma nawet natywne wsparcie dla XML, ale co z tego ? I jak to sie ma do pytania odnosnie MySQL ? :slight_smile:

Pozdro :wink:

Hmm, a ActiveResource nie wystarczy? Budując zwykłą RESTową aplikację takie api samo się “buduje” :wink: Tak np. jest to rozwiązane w blipie.

http://railscasts.com/episodes/94-activeresource-basics, http://railscasts.com/episodes/95-more-on-activeresource.

[quote=sebcioz]Hmm, a ActiveResource nie wystarczy? Budując zwykłą RESTową aplikację takie api samo się “buduje” :wink: Tak np. jest to rozwiązane w blipie.

http://railscasts.com/episodes/94-activeresource-basics, http://railscasts.com/episodes/95-more-on-activeresource.[/quote]
Dziekuje, ciekawe, aczkolwiek mialem troche cyrku ze stronicowaniem.

Szukam jednak nadal miejsca gdzie sie “wpiac” zeby rails zamist odpytac MySQL, wygenerwal zapytanie po http… , bedzie to bardziej przezroczyste dla samej aplikacji.

Pozdrowienia

To znaczy ja Ci powiem tak: 2 aplikacje piszące do tej samej bazy danych to zazwyczaj (mówię: zazwyczaj!) nie jest dobry pomysł. Powodów jest kilka, ale pierwszy i najważniejszy jest taki że można narobić sobie syfu w bazie, jeśli 2 aplikacje będą miały trochę inną logikę. Na przykład: jedna aplikacja ma bardziej restrykcyjne walidacje niż druga. Wtedy w bazie pojawi Ci się wiele rekordów, które nie będą edytowalne w drugiej aplikacji, itd. Może dobrym rozwiązaniem było by współdzielenie kodu kluczowych modeli.