bigtallbill / php-mongo-graph-model
此软件包最新版本(dev-master)没有提供许可证信息。
用于存储图增量数据的模型
dev-master
2015-08-25 21:53 UTC
Requires
- php: >=5.3
- doctrine/doctrine-mongo-odm-module: 0.9.*
Requires (Dev)
- phpunit/phpunit: ~4.6
This package is not auto-updated.
Last update: 2024-09-28 17:49:14 UTC
README
一个小型库,帮助使用doctrine ODM在mongo数据库中存储图类型(增量统计)数据
安装
将以下内容添加到您的composer.json文件中
"require": {
"bigtallbill/php-mongo-graph-model": "dev-master"
}
用法
// instantiate a new instance providing the doctrine DocumentManager instance
$gm = new GraphManager($dm);
$gm->setGranularity(GraphManager::MINUTE);
$gm->setWindow(GraphManager::HOUR);
// create a random statistic to store. These are instances of ParsedStat
// and can be created manually if required
$stat = $gm->parseSimpleKeyValue('system_stats', 'cpu', rand(25, 50));
// finally run an upsert using doctrine to create or update the stat
$gm->insertStat($stat);
此模型的外观
使用小时粒度和天窗口
{
"_id" : ObjectId("5560b3b7919124c4e03710fd"),
"date" : ISODate("2015-05-23T00:00:00.000Z"),
"granularity" : NumberLong(3600),
"group" : "system_stats",
"key" : "mem",
"window" : NumberLong(86400),
"window_human" : "Day",
"granularity_human" : "Hour",
"segments" : {
"1432400400" : NumberLong(108588),
"1432404000" : NumberLong(119624)
}
}
在segments键下存储每个粒度段(在我们的案例中是当前小时的顶部)。date 锁定到当前窗口的顶部(在我们的案例中是当前天)
以下是一个使用分钟粒度和小时窗口的另一个示例
{
"_id" : ObjectId("5560c023919124c4e0371102"),
"date" : ISODate("2015-05-23T18:00:00.000Z"),
"granularity" : NumberLong(60),
"group" : "system_stats",
"key" : "processes",
"window" : NumberLong(3600),
"window_human" : "Hour",
"granularity_human" : "Minute",
"segments" : {
"1432404000" : NumberLong(59041),
"1432404060" : NumberLong(41138),
"1432404120" : NumberLong(62544),
"1432404180" : NumberLong(59392),
"1432404240" : NumberLong(22948),
"1432404300" : NumberLong(58825),
"1432404360" : NumberLong(31936),
"1432404420" : NumberLong(17407),
"1432404480" : NumberLong(30097),
"1432404540" : NumberLong(54094),
"1432404600" : NumberLong(34739),
"1432404660" : NumberLong(34164),
"1432404720" : NumberLong(34571),
"1432404780" : NumberLong(28592)
}
}