Jump to content
php.lv forumi

siena jeb wall


ziedinjsh

Recommended Posts

es te tā domāju, kā darbojās siena.. kā piemēram facebook. Rāda jaunākas aktivitātes.. viņš viņas atspoguļo pēc datuma un laika kad tiek kas veikts, bet kā viņš savāc informāciju no visām tabulām?

 

hmm, jeb arī pie katras sql injekcijas ir vēlviena injekcija kas saglabā aktivitāti pie wall tabulas!?

Link to comment
Share on other sites

Nāk prātā visu, kam jāparādās uz "sienas", glabāt kkā...

 

wall:

- id,

- type,

- rel_id,

- user_id;

 

Un tad, ar džoiniem, izvilt no tabulām, kur īstais saturs tiek glabāts.

 

Cik tas skaitās 'kruti' - nemācēšu teikt.

Link to comment
Share on other sites

Starp citu par SQL injekcijām sauc mazliet citas lietas. Lūdzu lieto pareizos terminus :)

 

Tāda wall realizācija vairs nenotiek ar klasiskiem MySQL līdzekļiem - tur apakšā ir stipri jaudīgāks mehānisms un stipri paliela deva maģijas. Vienkāršajā gadījumā var skatīties uz daGrevis piedāvātā risinājuma variantu.

Link to comment
Share on other sites

Facebook siena strādā aptuveni šādi:

 

Tākā facebookā ir tuvu miljard lietotāji, tad mysql viņi izmanto tikai, lai pēc id glabātu lietotāja datus.

Praktiski visi lietotāja dati vienmēr atrodas kešā. Tālāk fonā ir serviss, kurš no keša paņem lietotāja draugus, tad taisa multi requestus uz memcached serveriem, lai iegūtu visu draugu jaunākos fīdus, kurus samērdžo un atlasa pēc veselas kaudzes parametriem, tai skaita privacy, kad tas izdarīts, to visu nokešo, lai nākošereiz nebūtu tik daudz jadara.

Bet tev ne tuvu nevajag to infrastruktūras sarežģītību, kas ir facebookā.

tāpēc tabulas:

users: id, name

friends: id, friend_id

posts: id, user_id, text, time

wall_posts: user_id, post_id, time

Kad tiek ielikts jauns wall posts, ieliec 1 ierakstu tabulā posts un tik cik cilvēkam draugu, tik ierakstus tabulā wall_posts, kur post_id ir nupat ieliktā posta id, bet user_id ir drauga id.

Kad vajag atlasīt pēdējos 20 ierakstus, ko tavi draugi raksta sienu, taisi joinu:

SELECT * FROM wall_posts wp LEFT JOIN posts p ON wp.post_id=p.id WHERE wp.user_id=$user_id ORDER BY wp.time DESC LIMIT 20;

Link to comment
Share on other sites

> Tāda wall realizācija vairs nenotiek ar klasiskiem MySQL līdzekļiem - tur apakšā ir stipri jaudīgāks mehānisms un stipri paliela deva maģijas.

 

Tu mani ieinteresēji. Linki vai vismaz atslēgvārdi? :]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...