Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 没有服务器端数据库的数据库_Javascript_Database - Fatal编程技术网

Javascript 没有服务器端数据库的数据库

Javascript 没有服务器端数据库的数据库,javascript,database,Javascript,Database,我在一个web服务器上有很多以它们的名字为特征的图像。每个文件都属于几个类别,每个人都属于一个类别组。例如: group_fruit = ["apple", "banana", "pear"]; group_color = ["red", "blue", "yellow"]; group_origin = ["Italy", "France", "Portugal"]; a blue apple from Italy will be 00_01_00_uniqueid.jpg 如果我想找到查

我在一个web服务器上有很多以它们的名字为特征的图像。每个文件都属于几个类别,每个人都属于一个类别组。例如:

group_fruit = ["apple", "banana", "pear"];
group_color = ["red", "blue", "yellow"];
group_origin = ["Italy", "France", "Portugal"];

a blue apple from Italy will be 00_01_00_uniqueid.jpg
如果我想找到查找类别的图像(例如,我想要一个来自法国或葡萄牙的蓝色或黄色梨),我可以用一种简单的方法在文件列表中查找文件。 问题是当我有大量的类别组(例如10个)时,每个类别都有很多(例如10个),因为我一次只能下载100个项目的文件列表。在这种情况下,我可以有一个查询,生成10^10个可能的答案(最坏的情况)

考虑到任何接近最坏情况的情况都很难管理,我建议按以下方式进行:

我使用前五个组中的类别创建了几个xml文件,其中存储了具有该类别的图像数量以及剩余组中的其他五个类别。比如说

01_00_03_00_04.xml contains:
    01_00_03_00_04_00_02_04_05_07 = 3
    01_00_03_00_04_04_04_03_00_08 = 12
    01_00_03_00_04_05_08_09_01_02 = 5
这意味着我有12张图片,例如01_00_03_00_04_04_03_00_08类别。 通过这种方式,如果我正在寻找特定的特征,我可以下载与我正在寻找的前五组特征兼容的xml,然后我可以搜索每个xml,以查找是否存在针对每个可能的类别组合的结果。 在最坏的情况下,我将搜索10^5个xml,每个类别10^5个

对所有文件使用一个大xml的解决方案不适用,因为它太大,无法下载(大延迟)。 为每个可能的类别组合下载列表的解决方案会太慢(因为我可以有几个组合而没有结果,所以用户会期望有太多时间看到第一个结果)。 这就是为什么我想采用一种中间解决方案

我知道最好的方法是使用数据库,但我想找到一个客户端解决方案,以避免廉价服务器过载

编辑:问题是:你对更有效的方法有什么想法吗


感谢您的耐心

我认为最简单的解决方案是创建一个包含以下可能组合的对象:

var组合={
1:{
1:[1,2,3],
2:[1,2,3],
3:[1,2,3]
},
2:{
1:[1,2,3],
3:[1,2,3]
},
3:{
1:[2,3],
2:[1,3],
3:[1,2]
},
/*
水果编号:{
颜色编号:[原点,原点,原点],
颜色编号:[原点,原点]
}
*/
}
var水果=[“苹果”、“香蕉”、“梨”];
var color=[“红色”、“蓝色”、“黄色”];
var原产地=[“意大利”、“法国”、“葡萄牙”];
对于(组合中的var f){
对于(组合[f]中的var c){
对于(组合[f][c]中的var o){
console.log(“A”,颜色[c-1],水果[f-1],“来源”,来源[f][c][o]-1])
}
}
}

它可能不漂亮,但我认为它会尽你所能的高效。

你忘了问一个问题。哦,是的:facepalm:,我的意思是:你有没有更好的方法的想法?我不明白答案,或者我认为我的问题不太清楚。。。用户想要所有具有某种特征的图像,但如果他选择了很多类别,他将有大量可能的组合。有可能在本地存储如此大量的数据吗?即使有可能,我是否应该尝试下载每一张图片以了解它是否存在?也许我应该通过编程来限制组合的数量,但是如何在不查看文件列表的情况下选择存在的组合呢?很有可能在客户端存储相对大量的数据(特别是如果只是大量的数字,如我回答中的对象),尝试下载每个图像是个坏主意,我认为更好的选择是在服务器端构建一个数据对象,然后将其发送到客户端。您的意思是基于所有数据还是基于客户端搜索的数据构建一个数据对象?第一个将非常繁重,即使可以异步完成,第二个将需要一些与客户端数量成比例的服务器端计算(我正试图避免)。然而,你认为JSON(我想你是在谈论它,即使我从未使用过它)会比XML好得多吗?我将自己回答我的最后一个问题:是的,那么一定要确保只构建一次数据对象,并缓存它。