DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   How did they do it: FB prijatelji mojih prijatelja (http://www.devprotalk.com/showthread.php?t=7061)

cvele 06. 02. 2009. 07:26

1. Obično se radi o krugu prijatelja, tako da je vrlo često prijatelj tvog prijatelja i tvoj prijatelj, pa se radi o mnogo manjoj brojci od 40.000
&@jablan zato i trazis da je neko distinct.

Inace tih 40000 je samo deo upita, previse ste uprostili.

Znaci imas stranu na kojoj ti se izlistavaju downloadi. I pravis query da bi izlistao recimo 20 zadnjih downloada koje odredjeni korisnik moze da vidi. To je u najboljem slucaju 20*200*200.

Inace pre nego sto se db ogranici na tih 40k (da uzmemo jednostavniji slucaj), mora da se uradi distinct na joinu izmedju user_friends i users, a distinct nemoze da se radi ne potskupu.


2. Ovo treba da se primeni samo na one koji su uključili ovu opciju, a tih je sigurno vrlo malo.
Ta opcija je po defaultu.

cvele 06. 02. 2009. 07:27

@marin thanks za fb log nisam cuo za to

jablan 06. 02. 2009. 09:07

Citat:

Originalno napisao cvele (Napišite 65840)
&@jablan zato i trazis da je neko distinct.

Izvini, ja još uvek ne kapiram što si zapeo za taj distinct?
Kôd:

jablan=# select * from korisnici;
 id | ime 
----+------
  1 | pera
  2 | mika
  3 | zika
  4 | laza
(4 rows)

jablan=# select * from slike;
 id | korisnik_id |  ime 
----+-------------+---------
  1 |          1 | slika 1
  2 |          2 | slika 2
(2 rows)

jablan=# select * from prijatelji ;
 korisnik_1 | korisnik_2
------------+------------
          1 |          2
          1 |          3
          2 |          4
          2 |          1
          3 |          1
          4 |          2
(6 rows)

I sad Laza hoće da vidi Perinu sliku_1:
Kôd:

jablan=# select count(*) from prijatelji p1 inner join prijatelji p2 on p1.korisnik_1 = p2.korisnik_1 and p1.korisnik_2 = 1 and p2.korisnik_2 = 4;
 count
-------
    1
(1 row)

Count > 0, može, count = 0 ne može i gotovo.

Kakav distinct, kakvi bakrači...

filmil 06. 02. 2009. 09:41

А можда за тај део посла користе објектно-оријентисану базу података?

ф

marinowski 06. 02. 2009. 10:53

Citat:

2. Ovo treba da se primeni samo na one koji su uključili ovu opciju, a tih je sigurno vrlo malo.
Ta opcija je po defaultu.
Eh, slep od ociju, nisam video ovo. Izgleda da sam i dalje slep:

Citat:

Znaci imas stranu na kojoj ti se izlistavaju downloadi.
Gde je ova stranica?

Na updatima ja uvek vidim samo update od mojih prijatelja, ili update od prijatelja prijatelja ako je neki od mojih prijatelja komentarisao. Dakle, sve su to akcije direktnih prijatelja. Ako vidis na svojim updatima nekoga ko nije tvoj prijatelj, pogledaj link, uvek je ovog tipa:
s.php?k=100000080&id=xxxx

dakle, to je link koji pokazuje da je to prijatelj tvog prijatelja, a ne tvoj prijatelj.

Inace, facebook cacheira sve zivo, cak i fotografije. Tako da verujem da cacheira i ove veze. Sta je cacheirati par integera ako se cacheiraju tolike fotografije:

http://www.bytebot.net/blog/archives...erves-pictures

ivanhoe 06. 02. 2009. 11:09

Citat:

Originalno napisao cvele (Napišite 65813)
Sto se tice cuvanja u matrici, to mi deluje kao jos skuplja stvar.
Ako si mislio da se cuva u fajlovima, mozes da zamislis kolike heldove oni moraju da drze u memoriji u svakom trenutku ? :) Cak i ako izdelis liste po nekoj logici, to je sumanuto :)

Naravno da nisam mislio na fajlove, mislio sam na memcache. FB ima iza sebe desetine hiljada memcache servera, i oni zaista sumanuto mnogo toga kesiraju. Memcache je idealan za taj posao jer je distribuiran pa nema potreba da dupliras bilo sta od podataka, nego za svakog korisnika zapamtis samo jednom celu listu. To ti je realno u vecini slucajeva ispod 100KB podataka po coveku, to nije nista za FB infrastrukturu.


Vreme je GMT +2. Trenutno vreme je 09:21.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.