gpt4 book ai didi

google-app-engine - AppEngine 数据存储区 : byte slice vs datastore. 字节串

转载 作者:IT王子 更新时间:2023-10-29 01:58:37 25 4
gpt4 key购买 nike

我需要一个具有短字节序列的属性,但我不需要该属性的索引。 datastore.ByteString 属性类型适用于较短的字节序列并已编制索引,而普通 []byte 属性适用于较长的字节序列并且不是 已编入索引。

我不得不使用 []byte 因为我不需要索引并且它会节省我额外的写入成本但是我使用 datastore 更好吗? ByteString 因为它是短值?这样做有什么好处吗?

最佳答案

类型datastore.ByteString实际上只是一个普通的 []byte slice ,看它的声明:

type ByteString []byte

不同之处在于,如果您拥有 ByteString 类型的属性,AppEngine 将默认尝试对其进行索引。由于数据存储索引整体的长度有限,ByteString 值的长度最多只能是 1500 字节才能被索引。

ByteString 除了可索引性之外,也没有任何额外的方法可以增加一些好处。

如果您不打算为您的属性(property)编制索引,只需使用 []byte。如果你打算索引它是因为你想通过它进行搜索/过滤,那么你必须使用 ByteString。如果您想要存储某些内容(例如文件)的哈希值,并且您想要根据其内容哈希值搜索文件,这将很有用。在这种情况下,ByteString 非常有意义并且最紧凑(与将哈希存储为 string 作为十六进制表示的替代方案相比)。

请注意,即使您使用 ByteString,您仍然可以使用 tags 使该属性未被索引,例如:

type MyEntity struct {
Something datastore.ByteString `datastore:"something,noindex"`
}

关于google-app-engine - AppEngine 数据存储区 : byte slice vs datastore. 字节串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com