[PHP][MySQL]Czemu niektóre serwisy używają stringa jako id |
[PHP][MySQL]Czemu niektóre serwisy używają stringa jako id |
1.05.2014, 09:05:40
Post
#1
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) |
Hej,
Czemu np. taki youtube używa stringa zamiast int w celu określenia id dokumentu. Np: takie coś (nie wiem czemu na stronie głównej youtube):http://www.youtube.com/watch?v=qGOjFBgyhYw Czemu takie dziwne coś, zamiast po prostu integer? Przecież indeksowanie wg. wartości numerycznej jest dużo szybsze. Wiele innych serwisów też tak robi. Dlaczego? |
|
|
1.05.2014, 09:22:25
Post
#2
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) |
Powody są różne, przykładowo:
- może to być zapis liczby w systemie o podstawie 52 (26 podstawowych liter małych i dużych) a nie dziesiętnym. To pozwala zapisać duże liczby znacznie mniejszą ilością znaków, - id jest trudniejsze do odczytu (tylko w sumie po co?) - to może być jakiś hash (aby nie dało się łatwo zgadnąć innego) - to może być jakaś zakodowana informacja; jeden string oprócz id dostarcza dodatkowych informacji, np. statystycznych czy dowolnych innych - i różne inne pomysły, zależnie od potrzeb W przypadku youtube, sprawdź ten adres, który podałeś, że jak zmienisz ostatnią literę w identyfikatorze, nadal zobaczysz ten sam film. (qGOjFBgyhYw, qGOjFBgyhYx, qGOjFBgyhYy, qGOjFBgyhYz). Jeśli chodzi o wyszukiwanie, to przy ogromnych ilościach danych i tak jedna baza tego nie obsłuży, więc się np. bazy sharduje i taki identyfikator będzie też zawierał informacje gdzie (w której bazie) szukać, itp. Bazy mają ograniczenia na maksymalną liczbę przechowywanych rekordów, więc jak masz więcej danych do przechowywania, to jedna baza nie wystarczy, klucze by się w końcu skończyły (ale i tak ze względu na wydajność trzeba rozkładać dane między oddzielne bazy wcześniej). Ten post edytował irmidjusz 1.05.2014, 09:25:23 -------------------- there is much to be learned
|
|
|
1.05.2014, 09:40:48
Post
#3
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) |
Dzięki, kliknąłem "pomógł", bo to rozjaśniło sytuację. Ale mam jedno jeszcze pytanie odnośnie ostatniego akapitu - chyba istnieją lepsze metody na dywersyfikację baz danych i w ogóle serwerów niż takie zabawy z id? Nigdy tak naprawdę nie dotykałem tego tematu, ale z tego co wiem to istnieją jakieś zautomatyzowane rozwiązania.
Poza tym, np. w mysql istnieje typ bigint, który ma max wartość 9223372036854775807 więc chyba troska o "skończenie się kluczy" wydaje się bezsasadna, czyż nie? Jeszcze raz dzięki! |
|
|
1.05.2014, 10:20:38
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
To pewnie nie id tak naprawdę, a jakiś token
|
|
|
1.05.2014, 10:27:35
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
http://stackoverflow.com/questions/830596/...1638761#1638761
http://stackoverflow.com/questions/830596/...s/830678#830678 -------------------- |
|
|
1.05.2014, 10:31:51
Post
#6
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) |
Cytat http://stackoverflow.com/questions/830596/...1638761#1638761 http://stackoverflow.com/questions/830596/...s/830678#830678 Dzięki, ale to: They use this ID to prevent people from farming/spamming the videos by simply incrementing a number Po co właściwie ktoś miałby to robić? |
|
|
1.05.2014, 10:35:20
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Żeby zwiększyć obciążenie serwera YT.
-------------------- |
|
|
1.05.2014, 10:52:28
Post
#8
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) |
OK, dziękuję wszystkim.
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 18:24 |