【发布时间】:2015-09-14 09:23:32
【问题描述】:
在返回资源集合时,我正在努力寻找获取项目总数的最佳方法,我正在考虑两种方法,只是希望您对什么是最好的有意见?
场景:
用户想要从我的10000 车辆中检索10 车辆列表,其中包含一些光标,例如(限制、之前、之后、过滤器等...)
选项 1:
class VehiclesRepo()
{
function getVehicles(){
// get 10000 vehicles with one query; : returns collection
// return 10000 vehicles and do filtration on transformation layer to keep total_count of vehicles
}
}
选项 2:
class VehiclesRepo()
{
function getVehicles(){
// get 10 vehicles with one query including filtration; : returns collection
// return 10 vehicles, and do another query for total_count
}
}
请考虑对内存、cpu 循环的操作影响?我的系统也完全是 ddd 所以我尽量不要有域泄漏
【问题讨论】:
-
问题是什么?您是在谈论 “此查询匹配 10 个可能的 10000 个结果中的 10 个结果” 以输入到您的响应中吗?这里不是很清楚。
-
正是@BlakesSeven 我试图做到这一点,而不必从域外部访问基础设施层
-
这就是伟大的 DDD pfft!和问题。如果你想设计对底层存储机制一无所知的类基础设施,那么你最终会得到只处理基本编码概念的垃圾,例如 “拉入这个巨大的数据列表,计算其中有多少东西,然后给我一个过滤后的计数和该标准的结果”。对于小型阵列来说,这当然很好,但在现实世界中却分崩离析(我似乎有人尝试过)。如果有的话,有“总计数”和“查询”的访问器,你可以将它们与下面的“智能”方法联系起来。两个查询。
标签: php performance mongodb domain-driven-design transformation