好的,所以我使用 API 来聚合一堆数据 - 举个例子,我们会说这些数据是关于园艺团体的。我最终想在一页上显示所有这些数据。
因此,首先,我可以搜索 agardener
并获取有关他所在小组的一些信息。例如,如果我搜索Bob
,我们将返回他在一个园艺小组中Lisa
,其中Ted
、Gary
、 和Jill
。
我可以对这些名称中的每一个进行进一步查询,以了解有关它们的更多信息。例如,我可以做一个tools
查询,一个fruits
查询,一个vegetables
查询。
tools
Bob 的查询示例可能会返回如下内容:
tools: [
{
Id: 117,
name: "Rake"
},
{
Id: 175,
name: "Shovel"
},
{
Id: 55,
name: "Hoe"
},
{
Id: 270,
name: "Wheelbarrow"
}
]
等等所有其他查询。基本上,每个查询都会返回最少量的信息来识别tools, fruits, vegetables
每个园丁的不同之处。
我想要做的是将所有这些数据组合在一页上。因此,如果有人搜索 Bob,他们不仅会得到tools, fruits, and vegetables
他的所有信息,还会得到他园艺小组中每个人的信息。这需要相当多的查询(使用 curl 到外部 API 提供程序完成)来获取所有这些信息,我现在想将这些信息呈现给正在查找的用户Bob
。
但是,我还想提供更详细的数据以及来自 API 的信息。例如,我有一个我想呈现给用户description
的每个。tools, fruits, and vegetables
因此,我可以使用 API 来代替这样的东西:
User enters 'Bob'
My site returns:
The other members of Bob's gardening group are Lisa, Ted, Gary, and Jill.
Bob's stats:
Bob uses the following tools: a rake, shovel, hoe, and wheelbarrow.
Bob is growing the following fruits: strawberries and blueberries.
Bob is growing the following vegetables: carrots, radishes, and potatoes.
Lisa's stats:
Lisa uses the following tools: gardening gloves, a shovel, and a rake.
etc.
我想要这样的东西,其中包括描述(以及更多信息,这只是提取外部信息并将其与 API 结果合并的示例)。目前,描述数据存储在 MySQL 表中:
User enters 'Bob'
My site returns:
The other members of Bob's gardening group are Lisa, Ted, Gary, and Jill.
Bob's stats:
Bob's tools:
Rake - Used to loosen soil and remove weeds
Shovel - Used to remove soil
Wheelbarrow - Used to transport large loads
Hoe - Used to move small amounts of soil
Bob's fruits:
Blueberries - A small, sweet berry full of antioxidants.
etc.
Lisa's stats:
Lisa's tools:
Rake - Used to loosen soil and remove weeds
Shovel - Used to remove soil
Gardening gloves - Used to protect hands
etc.
所以这就是问题所在,当我得到, 和的结果时tools
,会有很多重复数据。园丁将拥有许多相同的工具,他们将种植许多相同类型的水果和蔬菜。fruits
vegetables
我现在正在做的是聚合所有查询的数据,然后从 MySQL 中为tools
、fruits
和vegetables
.
类似的东西SELECT id, name, description FROM tools
。然后我从结果集中创建一个对象以便于访问,形式为
$toolsSQL =
117 =>
{
id: 117,
name: "Rake",
description: "Used to loosen soil and remove weeds"
}
55 =>
etc.
例如,如果我目前正在为 Bob 的工具添加描述,我可以$toolsSQL[$toolID]['description']
获取描述而不是mysqli_query(sprintf("SELECT description FROM tools WHERE id = '%d';", $toolID));
我对这种方法的问题是它会引入大量无关的数据,例如,Mongolian gardening oscillator
在 MySQL 表中可能有一个名为 的工具,它永远不需要。但是,因为有很多重复,所以$toolsSQL[117]['description']
多次调用比多次 mysqli 查询 更容易SELECT description FROM tools WHERE id = '117'
(我认为 - 我不是 100% 确定我在这里所说的是否正确,但这是我天真的假设这种方式更快)。
我想补充的不仅仅是描述。但是,让我有点不安的是,我使用 SQL 查询一遍又一遍地获取相同的数据,尤其是始终相同的数据。似乎有一种更快的方法可以获取只需要通过SELECT
语句访问的数据,但是我太新手了,不知道任何替代方案(或者我正在做的事情是否可以接受或首选)。这是否适用于 NoSQL 解决方案?对于那些真正阅读了这个巨大示例的人,我将不胜感激,感谢和赞扬:P。我希望我知道更多以便更直接地询问><