我使用 NoSQL DB 已经有一段时间了,这是我对该主题的贡献:
NoSQL 数据库的伟大用例是用于统计和/或报告生成的应用程序,
尤其是从第三方来源提供数据时。
在这种情况下,NoSQL 数据库可能是不错的选择
我们以 MongoDB 为例:
一旦你有 JSON 格式的数据,(它可能来自第三方 API,或从 sql 应用程序导出)MongoDB 非常可以直接导入
并更新数据库中的JSON 数据;例如使用命令行mongoimport 实用程序
此时非常使用过滤和分组构建动态查询非常简单,非常适合这种应用程序。
例如,使用Aggregation Framework:
$pipeline = [];
//filter by date
$pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ] ] ];
//if we want to filter by a specific field, we add the filter to the pipeline array
if( $filters->isFilterByField() )
$pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];
//group the results by date and get the count
$pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];
return $collection->aggretate( $pipeline );
我想指出 简单,我们可以使用 php 数据结构动态添加/删除过滤器,避免繁琐
字符串连接来构建我们的查询。使用这种方法,动态添加/删除过滤器就像添加/删除一样简单
数组中的元素
另一个巨大的好处是这样的解决方案可能比使用关系数据库更快,
我们必须与不同的表进行连接以获取我们需要的所有数据
此外,此用例是最佳的,因为 避免了 NoSQL 数据库的所有主要限制:
通过这种方式,我们可以专注于以冗余方式存储数据,以非常适合我们查询的方式,这将专注于单个集合。
我之所以写这个,是因为如果我以前读过类似的东西,它本来可以节省我一些时间进行研究
希望对某人有用