没有任何邪恶,只是作为网络开发人员好奇。
我正在研究亚马逊如何实现他们的购物车页面,并注意到他们没有使用base-10 int值作为订单行标识符,而是使用了base-36。
他们是否将一些巨大的bigint序列值转换为base-36以保持UI输出较短(我不认为是这种情况,因为相隔几分钟添加到我的购物车中的项目将远远超过数万亿条记录)?是否有一个内置base-36序列的数据库?其他一些原因/解释?
.Net / SQL Server平台上是否有这样的东西(我知道Guids)?
答案 0 :(得分:1)
你确定它是base-36而不是base-32吗?使用2的幂(16/32/64)有性能优势......无论如何,它们使用Dynamo存储该数据,因此这些可能是用作数据库记录密钥的哈希码。他们几乎肯定不是序列。我怀疑它们是UUID
因为在集群中均匀分布它们会很棘手。您可以在the paper中阅读有关描述其架构的Dynamo的更多信息。
要在.NET中使用base-32,我知道至少有one library这样做。 Base-32方便,人类可读,URL安全,并且比base-16更好。