我想存储链接和文字。链接可以是图像,视频或GIF。我想按照用户指定的顺序存储它们。 例如:img1,一些文字,视频,img2 - 这应该保存为json。
到目前为止,我提出了两个选择:
的第一
{
"content": {
"0": ["image", "image-link-here"],
"1": ["text", "this is some text here"],
"2": ["image", "2nd-image-link"],
"3": ["video", "video-link"]
}
}
第二:在这种情况下,我可以通过扩展名知道它的图像,视频,gif或文字
{
"content": ["https://somelink.com/pic.jpg", "this is a text", "https://somelink.com/pic2.png", "https://somelink.com/vid.mp4"]
}
我需要将它们存储在DynamoDB中。那么哪一个是好的和正确的,请记住我希望DB增长? 如果这两种方法都不好,请建议这样做的好方法。
答案 0 :(得分:1)
你应该尝试制作每个元素具有相同类型/结构的数组,因为它可以实现更好的搜索。
第二种解决方案不够具体。由于文本可以以“.jpg”结尾,因此您需要进行更精细的测试以确定它是否只是文本。文本甚至可能看起来很像URL ......
第一个更好,但拥有数字键并没有多大帮助。相反,你应该按类型组合,并使用该类型作为键名,并将实际值放在数组值中,如下所示:
{
"content": {
"images": ["image-link-here", "2nd-image-link"],
"texts": ["this is some text here"],
"videos": ["video-link"]
}
}
此结构应允许进行大多数实际搜索。
正如您在评论中指出的那样,您需要了解每个项目的顺序,然后我建议将内容定义为数组,其中该数组中元素的出现代表它们的顺序:
{
"content": [
{ "image": "image-link-here" },
{ "text": "this is some text here" },
{ "image": "2nd-image-link" },
{ "video": "video-link" }
]
}
或者,要使每个对象具有相同的属性:
{
"content": [
{ "type": "image", "value": "image-link-here" },
{ "type": "text", "value": "this is some text here" },
{ "type": "image", "value": "2nd-image-link" },
{ "type": "video", "value": "video-link" }
]
}
选择取决于您打算进行哪种查询。