我正在创build一个系统,使用SNMP以(可能)5分钟的时间间隔轮询设备以获取不同指标(如CPU利用率,磁盘利用率,温度等)上的数据。 最终目标是以时间序列图的forms向系统的用户提供可视化。 过去我使用RRDTool进行了研究,但是由于无限期地存储捕获的数据对于我的项目非常重要,所以我想要更高级别,更灵活地访问捕获的数据。 所以我的问题是: 在查询数据进行绘制时,关系数据库(如MySQL或PostgreSQL)或非关系数据库或NoSQL数据库(如MongoDB或Redis)的性能更好。 相关的 给定一个关系数据库,我会使用一个data_instances表,其中将存储为所有设备测量的每个度量捕获的每个数据实例,其中包含以下字段: 字段: id fk_to_device fk_to_metric metric_value timestamp 当我想在特定设备上为特定度量标准绘制图表时,我必须查询此单一表格以筛选出其他设备,并分析此设备的其他度量标准: SELECT metric_value, timestamp FROM data_instances WHERE fk_to_device=1 AND fk_to_metric=2 这个表中的行数是: d * m_d * f * t 其中d是设备的数量, m_d是所有设备logging的累计度量数 , f是数据被轮询的频率 , t是系统已经收集数据的总时间 。 对于每5分钟logging一次3个设备的10个指标的用户,我们只有不到500万条logging。 索引 没有fk_to_device和fk_to_metric扫描的索引,这个不断扩展的表将花费太多时间。 因此索引上述字段和timestamp (用于创build具有本地化时间段的图)是一项要求。 非关系(NoSQL) MongoDB具有集合的概念,与表格不同,这些可以在没有设置的情况下以编程方式创build。 有了这些,我可以将每个设备的数据存储分区,甚至每个设备的每个数据分区。 我对NoSQL没有经验,也不知道他们是否提供了任何查询性能增强function,如索引,但是前面的段落提出了在NoSQL中存储数据的结构中执行大部分传统的关系查询工作。 未定 具有正确索引的关系解决scheme是否会在一年内减less爬行? 还是NoSQL的基于集合的结构方法(与我存储的数据的心智模型相匹配)提供了明显的好处?
我正在创build一个SQL安装脚本,我正在使用别人的脚本作为例子。 这是一个脚本的例子: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[be_Categories]( [CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()), [CategoryName] [nvarchar](50) NULL, [Description] [nvarchar](200) NULL, [ParentID] [uniqueidentifier] NULL, CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED ( [CategoryID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) […]
是否有可能通过单个SQL query来执行mysqldump ? 我的意思是转储整个数据库,就像phpmyadmin在导出到SQL
为了回答DROP和TRUNCATE之间的区别问题,我写了一个关于这个问题的答案,但是我认为这是一个耻辱,不要分享,所以我会发表我自己的答案,我自己的问题…是甚至道德? 🙂 编辑:如果你的答案是平台特定的,你可以指出。
我正在用C#开发一个小型的.NET应用程序,我想要一个不占用太多资源的小型轻量级数据库 。 你能列出一些最着名的轻量级数据库软件 。
我怎样才能调用psql ,使其不提示input密码 ? 这是我的: psql -Umyuser < myscript.sql 但是,我找不到传递密码的参数,所以psql总是提示input密码。
为什么我应该使用基于文档的数据库,如CouchDB,而不是使用关系数据库。 在基于文档的数据库比关系数据库更适合的地方是否有典型的应用程序或领域?
Django中的CharField()和TextField()之间有什么区别? 该文件说, CharField()应该用于较小的string,而TextField()应该用于较大的string。 好的,“小”和“大”之间的界线在哪里? 这是怎么回事?
我在数据库中指定了以下列:decimal(5,2) 这个怎么解释呢? 根据在SQL Server Management Studio中查看的列上的属性,我可以看到这意味着:decimal(数字精度,数值范围)。 精度和规模在实质上意味着什么? 将这个解释为一个小数位数,5位数和两位小数,即12345.12 PS我已经能够确定一个同事的正确答案,但很难在网上find答案。 因此,我想在这里提供的问题和答案在stackoverflow供将来参考。
我需要列出SQL Server数据库中的所有触发器与表名和表的模式。 我几乎在这里: SELECT trigger_name = name, trigger_owner = USER_NAME(uid),table_schema = , table_name = OBJECT_NAME(parent_obj), isupdate = OBJECTPROPERTY( id, 'ExecIsUpdateTrigger'), isdelete = OBJECTPROPERTY( id, 'ExecIsDeleteTrigger'), isinsert = OBJECTPROPERTY( id, 'ExecIsInsertTrigger'), isafter = OBJECTPROPERTY( id, 'ExecIsAfterTrigger'), isinsteadof = OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger'), [disabled] = OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') FROM sysobjects INNER JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type […]