Zoals ik in mijn vorige post stelde, heb ik op Twitter een account (@kvstrien) met 18 volgers. Inmiddels heeft zich een kleine mutatie voltrokken: de huidige stand is 20 :-). Nu heb ik een sterk vermoeden dat ik deze extra volgers te danken heb aan het plaatsen van een post op de weblog hier. Maar op onderbuikgevoel of intuïtie kan ik geen geldige conclusies doen, ik wil het onderbouwen met data!
Na het opstellen van de case uit de vorige post heb ik inmiddels op twee punten nieuwe inzichten opgedaan:
- Het feit dat ik 18 volgers heb is (kennelijk) geen constant gegeven, dus kan niet in de vraagstelling opgenomen blijven.
- Daarnaast had ik het over een “post”. Ik doelde daar op een tweet, maar aangezien ik naar aanleiding van deze blog meer volgers kreeg, is het logisch ook blogposts mee te nemen in de analyse.
Daarom tijd voor een herfrasering van de vraagstelling:
Op Twitter heb ik een account (@kvstrien) met volgers. Af en toe komt er eentje bij, af en toe gaat er eentje af. Ik zou graag willen weten of hier een patroon in te ontdekken is: wat is de regelmaat dat mensen mij beginnen te volgen (of er juist mee stoppen)? Krijg ik bepaalde followers nadat ik in een bepaald topic een post op mijn weblog gedaan heb? Of is dit te koppelen aan tweets met bepaalde hashtags of mentions?
Twitter-data
Om te beginnen en alles overzichtelijk te houden, richt ik me op één enkele bron: Twitter. Daarvan zal ik in de loop van enkele posts een oplossing bouwen waar ik een rapportage op kan draaien. Om uitspraken te kunnen doen over Twitter, heb ik allereerst Twitter-data nodig. Twitter biedt een interessante en laagdrempelige API op basis van REST. Daarmee kan ik informatie opvragen via HTTP GET-acties, en wijzigen via HTTP POST-acties. Deze data laat zien hoe het er op dit moment voorstaat met mijn account. Voorbeelden van deze informatie:
- Tweets die op dit moment in mijn home-timeline staan
- Hashtags die op dit moment door mijn posts gebruikt worden
- Hashtags die op dit moment trending zijn
- Gebruikers die mij op dit moment volgen op Twitter
- Gebruikers die ik op dit moment volg op Twitter
Zoals je waarschijnlijk wel opvalt, is er een terugkerend patroon: op dit moment. En daar zit een probleem. Als ik wil zien welke mensen mij eergisteren volgden, maar vandaag niet meer, is die informatie niet direct voor mij beschikbaar. En juist dáár ben ik benieuwd naar!
Abstractie: OLTP-systemen
Van een hoger niveau bekeken is Twitter een OLTP-systeem: OnLine Transactional Processing. Dit soort systemen zijn meestal relationele databases, die gebouwd zijn op een manier dat er snel enkele records toegevoegd, verwijderd of gewijzigd kunnen worden. OLTP-systemen zijn erg geschikt voor het doel waarvoor ze gebouwd zijn – transacties uitvoeren (het vroegste commerciële gebruik hiervan is in het bankwezen – reden waarom veel databaseboeken ook standaard teruggrijpen op voorbeelden van banken). Nu willen wij echter niet zozeer transacties doen. We hoeven niet in te grijpen in de Twitter-wereld door zelf te tweeten, mensen te gaan volgen o.i.d.. Wat we wel willen, is analyseren: we willen de data verzamelen en daar conclusies over trekken.
Vormgeven van de analyse-oplossing
Om analyses te kunnen doen op hoe followers reageren op mijn posts, heb ik dus een analytisch systeem nodig dat data historisch bijhoudt. Ik moet niet alleen mijn followers van vandaag kunnen bekijken, maar ook die van vorige maand. Om dit te doen, zetten we ons systeem zó op, dat het periodiek de benodigde gegevens van Twitter haalt. Daarbij moet ik een paar zaken nog bepalen voordat we het systeem kunnen bouwen:
- Hoe vaak controleer ik Twitter of er nieuwe data is?
- Waar slaan we de data lokaal op? (Bestandssysteem? Database?)
- Met welke structuur slaan we de data op? (XML, Json, derde normaalvorm, anders?)
- Is er een vertaalslag nodig van de data zoals deze van Twitter komt en zoals we die lokaal opslaan?
Conclusie
We hebben dus een analytisch systeem nodig, maar voordat we dat kunnen maken staan er nogal wat vragen open. Hoewel het een beetje flauw is om daarmee af te sluiten, doe ik het toch: ik wil de post niet te lang maken. Ik beloof er echter alvast bij dat ik zo snel mogelijk (lees: vandaag nog) het vervolgdeel er achteraan zal posten, waarin de bovenstaande vragen beantwoord worden.