[MySQL] Foto tabel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Josvds
  • Registratie: November 2004
  • Laatst online: 26-08 20:42
Ik ben bezig met een website voor een vriendengroep en nu zit ik eigenlijk met een punt waar ik graag advies over heb.

Op de website komen foto`s te staan die worden gemaakt tijdens het uitgaan. De site bevat nu 35k+ fotos en graag zouden we bij iedere foto ook wat informatie bij houden van de bekijkers ervan.

Wat er dus ongeveer zo uit ziet:

ID - Naam - Bekeken
#1 - Avondje weg - 19-02-2009 - 192.168.2.2
20-02-2009 - 20.212.14.1
etc.

Nu worden sommige foto`s redelijk vaak bekeken, wat dus een hoop records op kan leveren.
Hoe zou ik dit het beste kunnen oplossen?
Hartelijk dank alvast.

Met vriendelijke groet,
Jos

Acties:
  • 0 Henk 'm!

  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 16:28

ThunderNet

Flits!

Waarom zou je willen bijhouden "wie" en wanneer een foto bekeken wordt?
Als je gewoon een counter er in doet, die je met een trigger koppelt aan een bepaalde select op die row. En dan een veld met een counter steeds 1 ophoogt?

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


Acties:
  • 0 Henk 'm!

  • Josvds
  • Registratie: November 2004
  • Laatst online: 26-08 20:42
ThunderNet schreef op vrijdag 27 februari 2009 @ 18:08:
Waarom zou je willen bijhouden "wie" en wanneer een foto bekeken wordt?
Als je gewoon een counter er in doet, die je met een trigger koppelt aan een bepaalde select op die row. En dan een veld met een counter steeds 1 ophoogt?
Ik wil graag dat ze van zichzelf ook kunnen zien welke fotos ze wel niet bekeken hebben.
Echter is het misschien ook wel zo dat het teveel data genereerd want zo loop je in de 200k records voor alleen maar statistieken. Ik heb alleen het gevoel dat er ook een andere weg moet zijn.

Acties:
  • 0 Henk 'm!

  • sanzut
  • Registratie: December 2006
  • Laatst online: 18:39

sanzut

It's always christmas time

Is het dan niet slimmer om de client een cookie te geven met daarin de id's van de foto's die al bekeken zijn?

Acties:
  • 0 Henk 'm!

  • Josvds
  • Registratie: November 2004
  • Laatst online: 26-08 20:42
sanzut schreef op vrijdag 27 februari 2009 @ 18:39:
Is het dan niet slimmer om de client een cookie te geven met daarin de id's van de foto's die al bekeken zijn?
Dat zou inderdaad kunnen maar gebruikers die inloggen zitte niet altijd op dezelfde pc.

Er was trouwens nog een punt waarom ik dit graag wou..
Als een bezoeker een foto bekijkt wordt de teller opgehoogt, maar als een bezoeker dus op F5 drukt of de pagina opnieuw opent en de foto bekijkt dan wordt de teller ook opgehoogt waardoor de statistieken niet kloppen.

Acties:
  • 0 Henk 'm!

  • Huuskes
  • Registratie: April 2007
  • Niet online

Huuskes

Gentoo BTW

Wat dacht je van om de IPs bij te houden per foto? Of wil je dat het per account gaat? Lijkt me dan logisch om dan een check te doen of de gebruiker de foto al bezocht heeft maar dat zijn wel veel onnodige queries.

Gentoo BTW


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 21:47

Creepy

Tactical Espionage Splatterer

Nu worden sommige foto`s redelijk vaak bekeken, wat dus een hoop records op kan leveren.
Hoe zou ik dit het beste kunnen oplossen?
Oplossen? Veel records is geen probleem hoor (200.000 records in een normale DB is echt niet veel) ;) Als je bij wilt houden wie welke foto bekijken dan zul je een tabel zoals je nu hebt daarvoor prima kunnen gebruiken. Ik zou je database nog ietsje verder normaliseren door de naam in de tabel voor de foto's te houden en een foto ID op te slaan in de tabel met de tijdstippen, fotoID, datum en eventueel een userID.

Mocht je dan performance problemen gaan krijgen als je bijv. wilt laten zien hoe vaak een foto in z'n totaal is bekeken dan zou je er weer voor kunnen kiezen om dit tellertje in de foto tabel te stoppen. Dit kan prima achteraf omdat je per foto al bijhoudt in de andere tabel hoevaak je foto is bekeken (gewoon het aantal records tellen).

[ Voor 3% gewijzigd door Creepy op 28-02-2009 12:59 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Josvds schreef op zaterdag 28 februari 2009 @ 12:42:
[...]


Dat zou inderdaad kunnen maar gebruikers die inloggen zitte niet altijd op dezelfde pc.

Er was trouwens nog een punt waarom ik dit graag wou..
Als een bezoeker een foto bekijkt wordt de teller opgehoogt, maar als een bezoeker dus op F5 drukt of de pagina opnieuw opent en de foto bekijkt dan wordt de teller ook opgehoogt waardoor de statistieken niet kloppen.
Dat probleem met F5 zou je mogelijk op kunnen lossen door te kijken of je wat met de Referer kan. Ik heb eerlijk gezegd geen idee of dat met F5 ook werkt maar het is een mogelijkheid.
Verder zou je natuurlijk ook kunnen zeggen dat als dezelfde foto binnen x tijd opnieuw bekeken wordt je de counter niet ophoogd.

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Josvds schreef op vrijdag 27 februari 2009 @ 18:12:
Ik wil graag dat ze van zichzelf ook kunnen zien welke fotos ze wel niet bekeken hebben.
En moet je dan per se elke losse keer dat ie bekeken is bijhouden? Of kan je het ook per dag/week/maand/jaar/altijd bijhouden per gebruiker?

Als een bezoeker relatief vaak dezelfde afbeelding bekijkt is het al snel lonend om niet elke keer los bij te houden maar een tellertje per periode per bezoeker.

Acties:
  • 0 Henk 'm!

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 06:25
Volgens mij is het ook niet zo hinderlijk om veel records te hebben. Je kunt een tabel bijhouden met ip/bezoeker/foto/tijdstip en een tabel met de foto en het (totaal)aantal views. Je hebt dan snel het aantal. En zoeken in een tabel met veel records gaat wel goed.

Eventueel kun je per dag/week/maand die tabel uitlezen en een derde tabel aanmaken met views/bezoeker per periode. Die records kun je dan weer weggooien uit de 1e tabel.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Miyamoto schreef op zaterdag 28 februari 2009 @ 13:12:
Volgens mij is het ook niet zo hinderlijk om veel records te hebben. Je kunt een tabel bijhouden met ip/bezoeker/foto/tijdstip en een tabel met de foto en het (totaal)aantal views. Je hebt dan snel het aantal. En zoeken in een tabel met veel records gaat wel goed.
Maak dan een tabel met alle foto's er in (filenaam, id, datum plaatsing, info e.d. en een tabel met alle views (de counter), het foto id, tijdstip, username, ip alles... ipv drie tabellen te maken. Middels een count op het foto id in die tweede tabel kan je dan toch de views al krijgen, heb je echt geen derde tabel voor nodig hoor.
Eventueel kun je per dag/week/maand die tabel uitlezen en een derde tabel aanmaken met views/bezoeker per periode. Die records kun je dan weer weggooien uit de 1e tabel.
Mits de datum ook word bijgehouden, kan dat ja. Een extra tabel is dan toch ook niet nodig? Je hebt dan alles in je statistieken tabel dan toch al staan?
code:
1
2
3
4
5
6
7
8
9
10
11
12
[fotos]
id
naam
datum(nu)
beschrijving
titel

[stats]
foto_id
datum(nu)
ip
username
Zo zou je DB er dan uit kunnen zien. Met een FK van stats.foto_id n aar fotos.id.
Het aantal views bekijk je dan via
SQL:
1
SELECT COUNT stats.foto_id AS number WHERE `foto_id` = X
Ook word het dan mogelijk om te bekijken hoe vaak een gebruiker de foto bekeken heeft, binnen een bepaalde periode eventueel ook nog. ;)

[ Voor 26% gewijzigd door CH4OS op 28-02-2009 13:51 ]


Acties:
  • 0 Henk 'm!

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 06:25
GJtje schreef op zaterdag 28 februari 2009 @ 13:39:
[...]
Maak dan een tabel met alle foto's er in (filenaam, id, datum plaatsing, info e.d. en een tabel met alle views (de counter), het foto id, tijdstip, username, ip alles... ipv drie tabellen te maken. Middels een count op het foto id in die tweede tabel kan je dan toch de views al krijgen, heb je echt geen derde tabel voor nodig hoor.
Maar dan heb je wel last van het grote aantal records, zoals de topicposter zelf ook aangeeft. Als je iedere keer een count moet doen op 35000+ records (iedere foto wordt min. 1x bekeken (?), dus veel meer zelfs..).

Tenminste, op een zelfgemaakt forumpje enkele jaren geleden liep ik tegen dat probleem aan. Dat werd echt rete traag door records op te tellen uit een grote set. Nu ik dat heb omgegooid, merk je er niks meer van.

Datum opslaan zou ik zowiezo doen, altijd handig :)

Acties:
  • 0 Henk 'm!

  • Precision
  • Registratie: November 2006
  • Laatst online: 12-08 21:08
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[foto]
foto_id
naam
datum
beschrijving
titel

[session_user]
session_user_id
user_id
ip

[stats]
stats_id
foto_id
session_user_id
datum

[user]
user_id
naam
voornaam
...

Ik weet niet of dit een goed idee is, ik denk even luidop, kan iemand mij verbeteren als dit fout is. En waarom iets anders beter zou zijn.

Crisis? Koop slim op Dagoffer - Op zoek naar een tof cadeau?


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Sessies blijven bij mij in ieder geval nooit eeuwig bewaard, dus die zou ik dan ook niet bij mijn stats betrekken.

Gewoon tellertje per user per periode is zo lastig toch niet?

{signature}


Acties:
  • 0 Henk 'm!

  • Josvds
  • Registratie: November 2004
  • Laatst online: 26-08 20:42
Voutloos schreef op zondag 01 maart 2009 @ 09:59:
Sessies blijven bij mij in ieder geval nooit eeuwig bewaard, dus die zou ik dan ook niet bij mijn stats betrekken.

Gewoon tellertje per user per periode is zo lastig toch niet?
Zo, ik heb het even druk gehad maar het is hier ook druk geweest gelukkig.
Als de database inderdaad geen moeite heeft met 200k records dan kan ik daar wel wat mee samenvoegen.
Elke keer als een gebruiker op de site komt wordt een sessie gestart welke ook wordt geregistreerd in de database om te zorgen dat ook te achterhalen is hoeveel unieke bezoekers op de website geweest zijn en aan de hand daarvan wordt ook de gegevens achterhaald van de bezoeker op de gebruik.

Ik ga het dan inderdaad zo in elkaar zetten dat alle foto`s een eigen tabel hebben.
Daarnaast een tabel die de statistieken bijhoud van de bezochte fotos doormiddel van de sessies.
Waarbij dmv de sessies weer te achterhalen is of het dezelfde gebruiker is of niet.

Ik heb nu bijvoorbeeld 30.000 fotos met een totaal aantal statistieken van 450.000 records.

Hartelijk dank alvast allemaal.. Mocht iemand nog tips heeft hoor ik het graag?

Met vriendelijke groet,
Jos

[ Voor 4% gewijzigd door Josvds op 04-03-2009 13:58 ]

Pagina: 1