Вы можете использовать :limit => 8
в вашем целочисленном столбце, чтобы получить bigint
. Например:
class Pancakes < ActiveRecord::Migration
def change
create_table :pancakes do |t|
t.integer :c, :limit => 8
end
end
end
А потом от psql
:
=> \d pancakes
Table "public.pancakes"
Column | Type | Modifiers
--------+---------+-------------------------------------------------------
id | integer | not null default nextval('pancakes_id_seq'::regclass)
c | bigint | not null
Indexes:
"pancakes_pkey" PRIMARY KEY, btree (id)
А вот и ваш восьмибайтовый bigint
столбец.
Вы также можете использовать строку для идентификатора Facebook. Вы не выполняете никаких арифметических операций с идентификаторами, поэтому они на самом деле являются просто непрозрачными пакетами битов, которые выглядят как большие целые числа, строки сортируются и сравниваются очень хорошо, поэтому они могут быть лучшим вариантом. Из-за увеличенного размера строки по сравнению с целым числом могут возникнуть некоторые проблемы с хранением и доступом, но, вероятно, этого будет недостаточно, чтобы внести какие-либо заметные изменения.
Никогда не используйте double
для чего-то, что должно быть точным. В этом случае, вероятно, все будет в порядке (за исключением, конечно, конечного .0
), поскольку у вас будет 52 бита мантиссы, а это означает, что double
будет действовать как 52-битное целое число, пока ваши значения не станут достаточно большими требовать показателя. Тем не менее, использование double
для этого было бы ужасной идеей и злоупотреблением системой типов.