使用Firebase我给这些字段提供了易于理解的名称,例如“timestamp”,“last_changed”,“message_direction”等。
字段名称是每个“行”的数据交换的一部分吗?
意思是,我会通过缩短字段名来节省带宽吗?
答案 0 :(得分:18)
正如弗兰克指出的那样:是的,它们会影响带宽。但是,如果你进行数学计算,你会发现带宽很少值得付出努力和混淆,而且通常你的数据有效负载会大大超过密钥的几个额外字符。
让我们考虑平均聊天消息:
{
"sender": "typicaluserid:12345678901234567890",
"timestamp": 1410193850266,
"message": "Hello world. All your base are belong to us!"
}
好的,首先让我们看看此消息的有效负载。这是163字节,UTF-8编码。如果我将密钥更改为无意义的三个字符ID(例如sdr,ts和msg),那么它将是149个字节。有了一些自由填充的交易开销,让我们说大约40个字节,大约节省2%,以换取需要一个rosetta stone来读取我的数据。
接下来,让我们考虑带宽使用情况。如果我们有一个非常活跃的,非常庞大的聊天系统(即我们正在严肃的$$),我们可能有10k活跃用户每天平均发送50封邮件。这意味着我们每天发送200 bytes * 500k = 100MB
个数据,或每月发送3GB
个数据。
这意味着我可以在Firebase的免费计划中轻松支持大规模聊天系统,而不会超出带宽限制。
如果我们取11个字节,我们有189 * 500k * 30 = 2.8GB
。所以努力没有显着差异。
答案 1 :(得分:0)
我为了横向思维而花了几分钱#34;和"陈述显而易见的" :有时缩短可以带来带宽以外的好处。例如可读性,更容易打字,不太可能打错字等等。
我建议花一些时间寻找仍然可以理解的最简洁的名字。
/ MrObvious out