Zajęcią NoSQL - MFI@UG
JavaScript Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
flot
gruffy
views
README.md
couch2mongo-nocouchrest.rb
couch2mongo.rb
fixup_names.rb
import-dynamic.rb

README.md

EVEMarketDataDump

  • dane pochodzą ze strony eve-central i zawierają statystyki z fikcyjnego rynku w uniwersum gry EveOnline, gra może pochwalić się ponad 300 tysiącami aktywnych kont, codziennie gracze dokonują nawet do 100 tysięcy transakcji.
  • dane dostępne są w formatach csv/xml - przykładowy dump z jednego dnia w formacie csv (użyjemy go w przykładach)

import-dynamic.rb

Skrypt importujacy dane z formatu csv do couchdb

Wymagania: couchrest, ccsv

Użycie: ./import-dynamic.rb

Przyklad użycia

  • ściągamy pojedyńczy plik z danymi

wget http://eve-central.com/dumps/2011-02-27.dump.gz

  • rozpakowujemy

gunzip -d 2011-02-27.dump.gz

  • pierwsze filtrowanie (za pomoca basha) - chcemy ograniczyc dane tylko do jednego systemu w uniwersum

grep 30000142 2011-02-27.dump > 2011-02-27.couch

  • importujemy do bazy

./import-dynamic.rb 2011-02-27.couch

  • voila;)

Widoki

Widoki dostępne są w pliku views/marketdata.js, na serwerze umieszczamy je za pomocą CouchApp'a:

couchapp push marketdata.js http://localhost:5984/marketdata

Plik zawiera 5 widokow:

  • volume_by_date - objętość jaką sprzedano/kupiono kazdego dnia, kluczem jest tablica [rok, miesiac, dzien], wartością objętość
  • volume_by_location - objętość jaką sprzedano/kupiono w danym miejscu, kluczem jest tablica [region, system, stacja, typ-przedmiotu], wartością objętość
  • volume_by_day_of_the_week - objętość jaka sprzedano/kupiono w danym dniu tygodnia, kluczem jest dzień tygodnina, wartością objętość
  • tritanium_price_by_date oraz pyerite_price_by_date - cena danego minerału danego dnia, kluczem jest tablica [rok, miesiąc, dzień], wartością cena, wartości są redukowane do średniej

Wizualizacja

W folderze 'flot', znajduję się dynamiczny wykres porównujący cenę pyerite i tritanium w każdym miesiącu, wykres można dowolnie pomniejsząc, dostępny jest też pod tym adresem.

W folderze gruffy są przygotowane dwa skrypty które generują statyczne wykresy w bibliotece gruffy, wykresy pokazują objętość w handlu w skali tygodnia oraz roku, skrypty wymagaja gemów 'yail' oraz 'gruffy', wykresy dostępne są też pod adresami: by_year i by_week.