ql.io to pomysł eBaya na szybsze zapytania do webowych API. node.js w końcu na coś się przydał?
Dla twórców webowych mashupów jednym z największych wyzwań jest znalezienie sposobu na obsługę dziesiątek różnych interfejsów programowania, które dają zwykle odpowiedzi po kilku milisekundach, ale bywa, że po kilku sekundach.
Dosyć łatwo jest pobrać podstawowe informacje np. z Graph API Facebooka. Gorzej jest, gdy chcemy odczytać naraz więcej danych. Wprowadzony niedawno tryb bash na Facebooku, mimo swojej nazwy ma ograniczenie do 50 zapytań. To niewiele, biorąc pod uwagę fakt, że API to nie pozwala budować skomplikowanych zapytań i trzeba pobierać treści bezpośrednio, nawet tysiącami zapytań API.
Nie ma co więc nawet wspominać o późniejszym łączeniu tych danych w całość, na podobnej zasadzie jak wiążemy treści za pomocą zapytań SQL. No właśnie – najczęściej sprawa kończy się częściową replikacją bazy usługi w swojej bazie MySQL i wykonaniu zapytań SQL do tych danych.
Widać więc, jak bardzo marnotrawione są w ten sposób korzyści z udostępnionego API. Problem polega na tym, że zazwyczaj nie możemy wykonywać bardziej złożonych zapytań do interfejsu programowania po stronie dostawcy usługi, albo chociaż jakiegoś pośrednika.
Zespół programistów eBaya postanowił zmierzyć się z tym problemem i stworzyć coś na kształt SQL-a dla webowych API. W efekcie powstał projekt ql.io. Jest to stworzone na bazie serwera node.js środowisko uruchomieniowe, przetwarzające skrypty zapytań API w coś na kształt SQL-a.
Bez zbędnych detali, oto przykład zapytania ql.io:
prodid = select ProductID[0].Value from eBay.FindProducts where
QueryKeywords = 'macbook pro';
details = select * from eBay.ProductDetails where
ProductID in ('{prodid}') and ProductType = 'Reference';
reviews = select * from eBay.ProductReviews where
ProductID in ('{prodid}') and ProductType = 'Reference';
return select d.ProductID[0].Value as id, d.Title as title,
d.ReviewCount as reviewCount, r.ReviewDetails.AverageRating as rating
from details as d, reviews as r
where d.ProductID[0].Value = r.ProductID.Value
via route '/myapi' using method get;
Korzyści z wykorzystania ql.io to nie tylko przejrzystszy kod i brak konieczności replikacji danych u siebie przed wykonaniem zapytania. To też lepszy kod oprogramowania i wydajność. Ostatnio zespół pomógł w migracji jednej z aplikacji, która korzysta intensywnie z API eBaya. Tak wygląda liczba zapytań do API i czas ich wykonania przed wprowadzeniem ql.io,
A tak po wprowadzeniu:
Widać znaczącą różnicę. Spadek z ponad 7 sekund do niespełna 6 to czas krótszy o ponad 15%. Transfer również został ograniczony z 273 KB do 90 KB czyli niemal o 67%. Liczba zapytań do serwera zmniejszyła z 18 do 5.
Twórcy ql.io zastrzegają, że testy były przeprowadzane na szybkim łączu, a używane API były powolne, a to oznacza, że w niektórych zastosowaniach, gdy zapytania będą jeszcze bardziej złożone, korzyści będą jeszcze większe.
ql.io może być na różne sposoby włączone do istniejącego oprogramowania. Może znaleźć się w warstwie reverse proxy, na przykład między load-balancerami a serwerami API, albo bliżej aplikacji klienckich.
Najwyraźniej więc JavaScript i przez wielu krytykowany node.js mogą przydać się do czegoś poważnego. Twórcy rozwiązania chwalą sobie wydajność, skalowalność, małe zużycie pamięci przez połączenia (2 KB), możliwość szybkiej iteracji nad projektem i obsługę przez standardowy serwer Ubuntu do 120 000 aktywnych połączeń na węzeł.
Jedyne narzekania ze strony społeczności dotyczą tylko tej kwestii, że eBay wymyśla nowy język zamiast korzystać ze standardów.
Tutaj znajdziecie przewodnik po ql.io, a pod tym adresem konsolę do testowania zapytań. Strona projektu na Githubie to github.com/ql-io/ql.io a grupa dyskusyjna poświęcona projektowi działa pod groups.google.com/group/qlio?pli=1
źródło: ebaytechblog.com
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
11
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
marcusm Fajna reklama produktu za 500 zł
rza a to starsze aplikacje nie będą działać i kompilacja pod Windows SDK 7.1...
Krzaczor @Jakub Szymański: Możesz zalinkować do opisów jakichś polskich przypadków...
Krzaczor Ale oprogramowanie skompilowane dla Windows 7 ruszy przecież na ósemce...
ankaa Ja to czytam "plejsnow", a nie placek nał :) Nie wiem, co macie z tym...
veramird Są jeszcze studenci i msdaa co pozwoli dużej grupie używać pisać dalej za...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |











#1 lol 2011-12-05 22:09:55 0
IP: 94.246.130.[...] Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
#2 eimi® 2011-12-05 22:16:18 0
IP: 90.156.32.[...] Mozilla/5.0 (X11; Linux x86_64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1