ruby-on-rails - 更好的数据类型来存储长 ID
问题描述
我正在使用 Rails 开发一个项目。在这个应用程序中,我们使用 OAuth 来启用 Facebook 和 Google 注册/登录。我想将各种提供者(FB 或 Google)以及与这些提供者关联的用户 ID 存储在与用户相关的单独表/模型中。
我的问题是下一个问题,FB 和 Google 提供的用户 ID 是很长的数字(Google 是 21 位数字)。将其存储为整数或更好地将其存储为字符串是否有意义?这两种选择的优缺点是什么?
我正在使用 Postgres 10.14。
解决方案
您不能在 Postgres 整数列中存储那么多数字。bigint
最多允许 19 位数字(9223372036854775801 是最大的正数:)2^63-1
。
虽然数字都是数字,但最有效、最准确的数据类型是numeric
. 手册:
实际的存储要求是每组四个十进制数字需要两个字节,加上三到八个字节的开销。
存储的 21 个十进制数字numeric
将占用 RAM 中的 18 个字节和磁盘中的 15 个字节。看:
推荐阅读
- c++ - 将屏幕截图位图转换为 vncviewer 的字节返回空
- c++ - 在类中打印 (C++)
- angular - 准备 Angular 发布请求
- javascript - 尝试编辑我的表单以更新用户详细信息,但表单拒绝在反应中更新
- python - 如何计算两个高斯混合的单个均值、标准差、相对比例?
- javascript - string.slice(0, -1) 如何处理 javascript 中的字符串?
- c# - 如何将单词附加到带有双引号的特定字符串?
- django - django 数字海洋 git
- android - 一旦活动从另一个功能开始,如何共享数据?
- schema.org - 我应该将哪种 Schema.org 类型用于数字商品服务?