Facebook user_id: big_int, интервал или строка?

Идентификатор пользователя Facebook подходит 2^32.. который моим количеством это 4294967296.

диапазон неподписанного интервала mySQL от 0 до 4294967295 (который равняется 1 короткому - или моя математика является неправильной), и диапазон ее неподписанного большого интервала от 0 до 18446744073709551615

интервал = 4 байта, bigint = 8 байтов

ИЛИ

Я храню его как строку?

varchar (10) =? байты

Как это произведет эффективность, я слышал что числа mysql дескриптора намного лучше, чем строки (мудрая производительность). Таким образом, что делает Вас, парни рекомендуют

46
задан Costa 8 January 2014 в 21:45
поделиться

5 ответов

Поскольку Facebook присваивает IDS, а не вы, вы должны использовать Bigints.

Facebook не назначает идентификаторы последовательно, и я подозреваю, что у них есть какой-то режим для назначения чисел.

Я недавно исправил именно эту ошибку, так что это настоящая проблема.

Я бы сделал его без знака, просто потому, что это то, что есть.

Я бы не использует строку. Это делает сравнения болезненными и вашими индексами Clunusier, чем они должны быть.

86
ответ дан 26 November 2019 в 20:23
поделиться

В Perl 99 | | 44 возвращает 99 , поскольку | | является «коротким замыканием» и если его первый аргумент имеет значение true в логическом контексте, он просто возвращает его. печать печать 99.

В C результат | | является логическим, что передается в printf приводит либо к 1, либо к 0. Это также короткое замыкание, так что 44 даже не оценивается.

-121--4109571-

Вы запросили определенный сценарий, но если это для организации музыки, возможно, вы захотите получить EasyTAG . Он имеет чрезвычайно специфические и мощные правила, которые можно настроить для организации музыки, как бы вы ни хотели:

alt text
(источник: sourceforge.net )

Это правило гласит: "предположим, что имена моих файлов находятся в структуре" [исполнитель] - [название альбома ]/[ номер трека] - [название] ". Затем вы можете пометить их как таковые, или переместить файлы в любой новый образец, или сделать почти все, что угодно.

-121--4904012-

Ваша математика немного неправильная... помните, что наибольшее число, которое можно хранить в N байтах, равно 2 ^ (N) - 1... не 2 ^ (N). Существует 2 ^ N возможных чисел, однако наибольшее число, которое можно сохранить, 1 меньше.

Если Facebook использует неподписанную большую int, вы должны использовать это. Вероятно, они не назначают их последовательно.

Да, с варчаром можно сойти... однако это было бы медленнее (но, вероятно, не так много, как вы думаете).

3
ответ дан 26 November 2019 в 20:23
поделиться

Ты больше не можешь использовать INT. Прошлой ночью у меня было два идентификатора пользователя, которые максимально использовали INT(10).

4
ответ дан 26 November 2019 в 20:23
поделиться

Вот еще один способ сделать это с помощью ogrid , который немного быстрее:

import numpy as np
import Image

w, h = 600, 800
sq = 15
color1 = (0xFF, 0x80, 0x00)
color2 = (0x80, 0xFF, 0x00)

def use_ogrid():
    coords = np.ogrid[0:w, 0:h]
    idx = (coords[0] // sq + coords[1] // sq) % 2
    vals = np.array([color1, color2], dtype=np.uint8)
    img = vals[idx]
    return img

def use_fromfunction():
    img = np.zeros((w, h, 3), dtype=np.uint8)
    c = np.fromfunction(lambda x, y: ((x // sq) + (y // sq)) % 2, (w, h))
    img[c == 0] = color1
    img[c == 1] = color2
    return img

if __name__ == '__main__':
    for f in (use_ogrid, use_fromfunction):
        img = f()
        pilImage = Image.fromarray(img, 'RGB')
        pilImage.save('{0}.png'.format(f.func_name))

Вот результаты времени:

% python -mtimeit -s"import test" "test.use_fromfunction()"
10 loops, best of 3: 307 msec per loop
% python -mtimeit -s"import test" "test.use_ogrid()"
10 loops, best of 3: 129 msec per loop
-121--2111426-

Я не знаю о таких инструментах. Если бы у меня была куча услуг RESTful, я бы рассмотрел возможность использования Open Rasta - она имеет гораздо больше возможностей, чем ASP.NET MVC. Другой разумной альтернативой является WCF REST Starter Kit .

UPDATE: Вот хорошее сравнение доступных RESTful implementations в .Net .

-121--3023121-

Если вы не ожидаете, что более 60% населения мира зарегистрируются, int должен это сделать?

-6
ответ дан 26 November 2019 в 20:23
поделиться

Я бы просто придерживался INT. Это просто, он маленький, он работает, и вы всегда можете изменить размер столбца на больший в будущем, если вам нужно.

FYI:

VARCHAR (n) ==> переменная, до n + 1 байт
CHAR (n) ==> фиксированная, n байтов

-5
ответ дан 26 November 2019 в 20:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: