假设我正在创建一个带有列栏的表格foo,它应该是一个非常大的随机整数.
CREATE TABLE foo (
bar bigint DEFAULT round(((9223372036854775807::bigint)::double precision * random())) NOT NULL,
baz text
);
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?任何人都可以谈论PostgreSQL的random()功能吗?这里的乘法是否掩盖了熵?
请注意,我确实有很好的硬件熵/dev/random.
我必须生成独特的 URL 部分,该部分将“无法猜测”和“抵抗”蛮力攻击。它也必须尽可能短:)并且所有生成的值必须具有相同的长度。我正在考虑使用 UUID V4,它可以用 32 个(不带连字符)十六进制字符表示,de305d5475b4431badb2eb6b9e546014但它有点太长了。所以我的问题是如何生成一些unqiue,可以用每个生成的值长度相同且短于 32 个字符的url字符来表示。(在 node.js 或 pgpsql 中)
在插入,我应该怎么唯一设置的值access_token,以一个随机字符串和值返回给客户端?
我有:
CREATE TABLE user (
id serial PRIMARY KEY,
access_token char(32) NOT NULL UNIQUE,
joined timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)
数据库服务器:PostgreSQL
应用服务器:Sinatra(Ruby)
客户端:iOS
为了进行测试/调试,我需要将一个巨大的字符串放入字段中以保存其中的一条记录。字符串是什么都无所谓。可能是一百万个“ *”或Moby Dick的内容。
我无法通过应用的用户界面保存如此大的字符串,因为它会使浏览器崩溃。我想编写一个SQL查询来生成大量字符串。像这样:
UPDATE my_table SET text_field = <HUGE STRING CREATION> WHERE id = 42
我不确定该怎么做的部分是<HUGE STRING CREATION>。我知道我可以用它串联字符串,||但是有一种SQL方法可以在循环中做到这一点吗?
postgresql ×4
access-token ×1
cryptography ×1
entropy ×1
node.js ×1
prng ×1
probability ×1
random ×1
sql ×1
string ×1
uuid ×1