变行变列的数据如何利用数据库??

zhuxqstyle 2019-06-29 09:16:24
假设初始有1000个传感器,每天不定时测量他们的状态,多的时候测10000次,最多的时候需要测10年,现在的问题在于传感器数量可能会增加或减少(变化时间及数量的增减无法预期),请问这种数据采取什么数据结构及如何存储?
...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2019-07-02
  • 打赏
  • 举报
回复
引用 4 楼 zhuxqstyle 的回复:
[quote=引用 2 楼 吉普赛的歌 的回复:] 你原先预想的应该是一行记录 1000 个列,每列记录一个传感器的状态,当传感器数量发生变化时会有问题。 我现在设计是的一个传感器状态就占用一行,1000个传感器的状态就是1000行了。
谢谢回复。这个数据结构有下来特点,第一,在整个实验过程中,传感器数量也会有增减,增减的数量和时间无法预估。第二,每个传感器每天可能测到10000块,最多10年,整个下来每个传感器要测3-5千万块数据,把这个数据放到列上,可能3-5千万列。[/quote] 按我 #1 那样设计表就可以了, 没什么好担心的。 你那种设计, 问题更大。 你觉得 1000 列没问题吗? 列数太多, 根本看不过来, 也无法管理增加或减少, 有何用? 效率上能提高多少?列多了,sqlserver处理一样会慢下来。 你按我#1 的, 当前状态表只保存当天的数据, 也就 1千万 行, 不算很多, 查得过来。 历史表你觉得太多, 也可以再分一下, 每个月一个表,一个月也就 3亿行数据。 用sql作业定时转移到历史表就好了, 没什么好怕的。
zhuxqstyle 2019-07-02
  • 打赏
  • 举报
回复
引用 3 楼 唐诗三百首 的回复:
传感器表: 设备ID(主键), 名称...
传感器状态数据表: 测量时间, 设备ID(参考传感器表.设备ID), 状态值...
谢谢回复。状态值可能要测3-5千万块。
zhuxqstyle 2019-07-02
  • 打赏
  • 举报
回复
引用 2 楼 吉普赛的歌 的回复:
你原先预想的应该是一行记录 1000 个列,每列记录一个传感器的状态,当传感器数量发生变化时会有问题。
我现在设计是的一个传感器状态就占用一行,1000个传感器的状态就是1000行了。
谢谢回复。这个数据结构有下来特点,第一,在整个实验过程中,传感器数量也会有增减,增减的数量和时间无法预估。第二,每个传感器每天可能测到10000块,最多10年,整个下来每个传感器要测3-5千万块数据,把这个数据放到列上,可能3-5千万列。
吉普赛的歌 2019-06-30
  • 打赏
  • 举报
回复
你原先预想的应该是一行记录 1000 个列,每列记录一个传感器的状态,当传感器数量发生变化时会有问题。 我现在设计是的一个传感器状态就占用一行,1000个传感器的状态就是1000行了。
吉普赛的歌 2019-06-30
  • 打赏
  • 举报
回复
1 传感器表 2 传感器状态日志表 (保存当天的数据) 3 传感器状态历史日志表(保存历史数据) 就这样就可以了。传感器增加减少对数据表结构没什么影响。
唐诗三百首 2019-06-30
  • 打赏
  • 举报
回复
传感器表: 设备ID(主键), 名称... 传感器状态数据表: 测量时间, 设备ID(参考传感器表.设备ID), 状态值...
第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化    1.1 什么是持久化     1.1.1 关系数据     1.1.2 理解SQL     1.1.3 在Java中使用SQL     1.1.4 面向对象应用程序中的持久化    1.2 范式不匹配     1.2.1 粒度问题     1.2.2 子类型问题     1.2.3 同一性问题     1.2.4 与关联相关的问题     1.2.5 数据导航的问题     1.2.6 不匹配的代价    1.3 持久层和其他层 显示全部信息第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化    1.1 什么是持久化     1.1.1 关系数据     1.1.2 理解SQL     1.1.3 在Java中使用SQL     1.1.4 面向对象应用程序中的持久化    1.2 范式不匹配     1.2.1 粒度问题     1.2.2 子类型问题     1.2.3 同一性问题     1.2.4 与关联相关的问题     1.2.5 数据导航的问题     1.2.6 不匹配的代价    1.3 持久层和其他层     1.3.1 分层架构     1.3.2 用SQL/JDBC手工编写持久层     1.3.3 使用序列化     1.3.4 面向对象的数据系统     1.3.5 其他选项    1.4 ORM     1.4.1 什么是ORM     1.4.2 一般的ORM问题     1.4.3 为什么选择ORM     1.4.4 Hibernate、EJB 3和JPA简介    1.5 小结   第2章 启动项目    2.1 启动Hibernate项目     2.1.1 选择开发过程     2.1.2 建立项目     2.1.3 Hibernate配置和启动     2.1.4 运行和测试应用程序    2.2 启动Java Persistence项目     2.2.1 使用Hibernate Annotations     2.2.2 使用Hibernate EntityManager     2.2.3 引入EJB组件     2.2.4 切换到Hibernate接口    2.3 反向工程遗留数据     2.3.1 创建数据配置     2.3.2 定制反向工程     2.3.3 生成Java源代码    2.4 与Java EE服务整合     2.4.1 与JTA整合     2.4.2 JNDI绑定的SessionFactory     2.4.3 JMX服务部署    2.5 小结   第3章 领域模型和元数据    3.1 CaveatEmptor应用程序     3.1.1 分析业务领域     3.1.2 CaveatEmptor领域模型    3.2 实现领域模型     3.2.1 处理关注点渗漏     3.2.2 透明和自动持久化     3.2.3 编写POJO和持久化实体类     3.2.4 实现POJO关联     3.2.5 把逻辑添加到访问方法    3.3 ORM元数据     3.3.1 XML中的元数据     3.3.2 基于注解的元数据     3.3.3 使用XDoclet     3.3.4 处理全局的元数据     3.3.5 运行时操作元数据    3.4 其他实体表示法     3.4.1 创建动态的应用程序     3.4.2 表示XML中的数据    3.5 小结  第二部分 映射概念和策略  第4章 映射持久化类    4.1 理解实体和值类型     4.1.1 细粒度的领域模型     4.1.2 定义概念     4.1.3 识别实体和值类型    4.2 映射带有同一性的实体     4.2.1 理解Java同一性和等同性     4.2.2 处理数据同一性     4.2.3 数据主键    4.3 类映射选项     4.3.1 动态的SQL生成     4.3.2 使实体不可变     4.3.3 给查询命名实体     4.3.4 声明包名称     4.3.5 用引号把SQL标识符括起来     4.3.6 实现命名约定    4.4 细粒度的模型和映射     4.4.1 映射基础属性     4.4.2 映射组件    4.5 小结   第5章 继承和定制类型    5.1 映射类继承     5.1.1 每个带有隐式多态的具体类一张表     5.1.2 每个带有联合的具体类一张表     5.1.3 每个类层次结构一张表     5.1.4 每个子类一张表     5.1.5 混合继承策略     5.1.6 选择策略    5.2 Hibernate类型系统     5.2.1 概述实体和值类型     5.2.2 内建的映射类型     5.2.3 使用映射类型    5.3 创建定制的映射类型     5.3.1 考虑定制的映射类型     5.3.2 扩展点     5.3.3 定制映射类型的案例     5.3.4 创建UserType     5.3.5 创建CompositeUserType     5.3.6 参数化定制类型     5.3.7 映射枚举    5.4 小结   第6章 映射集合和实体关联    6.1 值类型的set、bag、list和map     6.1.1 选择集合接口     6.1.2 映射set     6.1.3 映射标识符bag     6.1.4 映射list     6.1.5 映射map     6.1.6 排序集合和有序集合  6.2 组件的集合     6.2.1 编写组件类     6.2.2 映射集合     6.2.3 启用双向导航     6.2.4 避免非空列    6.3 用注解映射集合     6.3.1 基本的集合映射     6.3.2 排序集合和有序集合     6.3.3 映射嵌入式对象的集合    6.4 映射父/子关系     6.4.1 多样性     6.4.2 最简单的可能关联     6.4.3 使关联双向     6.4.4 级联对象状态    6.5 小结   第7章 高级实体关联映射    7.1 单值的实体关联     7.1.1 共享的主键关联     7.1.2 一对一的外键关联     7.1.3 用联结表映射    7.2 多值的实体关联     7.2.1 一对多关联     7.2.2 多对多关联     7.2.3 把列添加到联结表     7.2.4 映射map    7.3 多态关联     7.3.1 多态的多对一关联     7.3.2 多态集合     7.3.3 对联合的多态关联     7.3.4 每个具体类一张多态表    7.4 小结   第8章 遗留数据和定制SQL    8.1 整合遗留数据     8.1.1 处理主键     8.1.2 带有公式的任意联结条件     8.1.3 联结任意的表     8.1.4 使用触发器    8.2 定制SQL     8.2.1 编写定制CRUD语句     8.2.2 整合存储过程和函数    8.3 改进Schema DDL     8.3.1 定制SQL名称和数据类型     8.3.2 确保数据一致性     8.3.3 添加领域约束和列约束     8.3.4 表级约束     8.3.5 数据约束     8.3.6 创建索引     8.3.7 添加辅助的DDL    8.4 小结  第三部分 会话对象处理  第9章 使用对象    9.1 持久化生命周期     9.1.1 对象状态     9.1.2 持久化上下文    9.2 对象同一性和等同性     9.2.1 引入对话     9.2.2 对象同一性的范围     9.2.3 脱管对象的同一性     9.2.4 扩展持久化上下文    9.3 Hibernate接口     9.3.1 保存和加载对象     9.3.2 使用脱管对象     9.3.3 管理持久化上下文    9.4 JPA     9.4.1 保存和加载对象     9.4.2 使用脱管的实体实例    9.5 在EJB组件中使用Java Persistence     9.5.1 注入EntityManager     9.5.2 查找EntityManager     9.5.3 访问EntityManagerFactory    9.6 小结   第10章 事务和并发    10.1 事务本质     10.1.1 数据和系统事务     10.1.2 Hibernate应用程序中的事务     10.1.3 使用Java Persistence的事务    10.2 控制并发访问     10.2.1 理解数据级并发     10.2.2 乐观并发控制     10.2.3 获得额外的隔离性保证    10.3 非事务数据访问     10.3.1 揭开自动提交的神秘面纱     10.3.2 使用Hibernate非事务地工作     10.3.3 使用JTA的可选事务    10.4 小结   第11章 实现对话    11.1 传播Hibernate Session     11.1.1 Session传播的用例     11.1.2 通过线程局部传播     11.1.3 利用JTA传播     11.1.4 利用EJB传播    11.2 利用Hibernate的对话     11.2.1 提供对话保证     11.2.2 利用脱管对象的对话     11.2.3 给对话扩展Session    11.3 使用JPA的对话     11.3.1 Java SE中的持久化上下文传播     11.3.2 在对话中合并脱管对象     11.3.3 在Java SE中扩展持久化上下文    11.4 使用EJB 3.0的对话     11.4.1 使用EJB的上下文传播     11.4.2 利用EJB扩展持久化上下文    11.5 小结   第12章 有效修改对象    12.1 传播性持久化     12.1.1 按可到达性持久化     12.1.2 把级联应用到关联     12.1.3 使用传播性状态     12.1.4 利用JPA的传播性关联    12.2 大批量和批量操作     12.2.1 使用HQL和JPA QL的大批量语句     12.2.2 利用批量处理     12.2.3 使用无状态的会话    12.3 数据过滤和拦截     12.3.1 动态数据过滤     12.3.2 拦截Hibernate事件     12.3.3 内核事件系统     12.3.4 实体监听器和回调    12.4 小结   第13章 优化抓取和高速缓存    13.1 定义全局抓取计划     13.1.1 对象获取选项     13.1.2 延迟的默认抓取计划     13.1.3 理解代理     13.1.4 禁用代理生成     13.1.5 关联和集合的即时加载     13.1.6 通过拦截延迟加载    13.2 选择抓取策略     13.2.1 批量预抓取数据     13.2.2 通过子查询预抓取集合     13.2.3 通过联结即时抓取     13.2.4 给二级表优化抓取     13.2.5 优化指导方针    13.3 高速缓存基本原理     13.3.1 高速缓存策略和范围     13.3.2 Hibernate高速缓存架构    13.4 高速缓存实践     13.4.1 选择并发控制策略     13.4.2 理解高速缓存区域     13.4.3 设置本地的高速缓存提供程序     13.4.4 设置重复的高速缓存     13.4.5 控制二级高速缓存    13.5 小结   第14章 利用HQL和JPA QL查询    14.1 创建和运行查询     14.1.1 准备查询     14.1.2 执行查询     14.1.3 使用具名查询    14.2 基本的HQL和JPA QL查询     14.2.1 选择     14.2.2 限制     14.2.3 投影    14.3 联结、报表查询和子查询     14.3.1 联结关系和关联     14.3.2 报表查询     14.3.3 利用子查询    14.4 小结   第15章 高级查询选项    15.1 利用条件和示例查询     15.1.1 基本的条件查询     15.1.2 联结和动态抓取     15.1.3 投影和报表查询     15.1.4 按示例查询    15.2 利用原生的SQL查询     15.2.1 自动的结果集处理     15.2.2 获取标量值     15.2.3 Java Persistence中的原生SQL    15.3 过滤集合    15.4 高速缓存查询结果     15.4.1 启用查询结果高速缓存     15.4.2 理解查询高速缓存     15.4.3 什么时候使用查询高速缓存     15.4.4 自然标识符高速缓存查找    15.5 小结   第16章 创建和测试分层的应用程序    16.1 Web应用程序中的Hibernate     16.1.1 用例简介     16.1.2 编写控制器     16.1.3 OSIV模式     16.1.4 设计巧妙的领域模型    16.2 创建持久层     16.2.1 泛型的数据访问对象模式     16.2.2 实现泛型CRUD接口     16.2.3 实现实体DAO     16.2.4 利用数据访问对象    16.3 命令模式简介     16.3.1 基础接口     16.3.2 执行命令对象     16.3.3 命令模式的变形    16.4 利用EJB 3.0设计应用程序     16.4.1 利用有状态的bean实现会话     16.4.2 利用EJB编写DAO     16.4.3 利用依赖注入    16.5 测试     16.5.1 理解不同种类的测试     16.5.2 TestNG简介     16.5.3 测试持久层     16.5.4 考虑性能基准    16.6 小结   第17章 JBoss Seam简介    17.1 Java EE 5.0编程模型     17.1.1 JSF详解     17.1.2 EJB 3.0详解     17.1.3 用JSF和EJB 3.0编写Web应用程序     17.1.4 分析应用程序    17.2 用Seam改善应用程序     17.2.1 配置Seam     17.2.2 将页面绑定到有状态的Seam组件     17.2.3 分析Seam应用程序    17.3 理解上下文组件     17.3.1 编写登录页面     17.3.2 创建组件     17.3.3 给上下文变量起别名     17.3.4 完成登录/注销特性    17.4 验证用户输入     17.4.1 Hibernate Validator简介     17.4.2 创建注册页面     17.4.3 用Seam实现国际化    17.5 利用Seam简化持久化     17.5.1 实现对话     17.5.2 让Seam管理持久化上下文    17.6 小结  附录A SQL基础知识  附录B 映射快速参考
一. 系统要求:Windows NT4/2000/XP/2003 二. 功能简介: 采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等二十几个大类。对于多数已知漏洞,我们给出了相应的漏洞描述、解决方案及详细描述链接,其它漏洞资料正在进一步整理完善中,您也可以通过本站的"安全文摘"和"安全漏洞"栏目查阅相关说明。 三. 所需文件: xscan_gui.exe -- X-Scan图形界面主程序 xscan.exe -- X-Scan命令行主程序 checkhost.exe -- 插件调度主程序 update.exe -- 在线升级主程序 *.dll -- 主程序所需动态链接库 使用说明.txt -- X-Scan使用说明 /dat/language.ini -- 多语言配置文件,可通过设置"LANGUAGE\SELECTED"项进行语言切换 /dat/language.* -- 多语言数据文件 /dat/config.ini -- 用户配置文件,用于保存待检测端口列表、CGI漏洞检测的相关设置及所有字典文件名称(含相对路径) /dat/config.bak -- 备份配置文件,用于恢复原始设置 /dat/cgi.lst -- CGI漏洞列表 /dat/iis_code.ini -- IIS编码漏洞列表 /dat/port.ini -- 用于保存已知端口的对应服务名称 /dat/*_user.dic -- 用户名字典文件,用于检测弱口令用户 /dat/*_pass.dic -- 密码字典,用于检测弱口令用户 /dat/p0f*.fp -- 识别远程主机操作系统所需的操作系统特征码配置文件(被动识别) /dat/nmap-os-fingerprints -- 识别远程主机操作系统所需的操作系统特征码配置文件(主动识别) /dat/wry.dll -- "IP-地理位置"地址查询数据文件 /dat/*.nsl -- 经过整理的NASL脚本列表 /plugins -- 用于存放所有插件(后缀名为.xpn) /scripts -- 用于存放所有NASL脚本(后缀名为.nasl) /scripts/desc -- 用于存放所有NASL脚本多语言描述(后缀名为.desc) 注:xscan_gui.exe与xscan.exe共用所有插件及数据文件,但二者之间没有任何依赖关系,均可独立运行。 四. 准备工作: X-Scan是完全免费软件,无需注册,无需安装(解压缩即可运行),需要WinPCap驱动程序支持(WinPCap 2.3以上版本)。 五. 注意事项: 1.未安装WinPCap驱动虽然可以正常使用X-Scan,但一些需要定制数据包的检测功能将完全失效。 2.端口扫描中的SYN方式和被动主机操作系统识别功能在NT4系统下无法使用,在windows 2000等系统下使用时必须拥有管理员权限。 3.在"X-Scan"中内置的密码字典仅为简单示范,使用者如果希望软件有更强的密码猜解能力,应该自己编辑密码字典文件。 4.命令行方式检测过程中,按"[空格]"键可以查看各线程状态及扫描进度,按"q"键保存当前数据后提前退出程序,按""强行关闭程序。 5."X-Scan"所使用的地址查询数据为"追捕"软件的数据,并且得到作者许可。在此对"追捕"软件作者及所有为建立此数据作出贡献的朋友表示感谢。由于没有考虑和将来"追捕"数据的兼容问题,不能保证能正确使用以后版本的"追捕"数据。在"追捕"数据文件格式没有改变的情况下,可以将新版本的数据文件"wry.dll"拷贝到/dat目录下替换旧版本文件,但建议在覆盖前备份旧文件. 六. 命令行方式运行参数说明: 1.命令格式: xscan -host [-] [其他选项] xscan -file [其他选项] 其中 含义如下: -active : 检测目标主机是否存活 -port : 检测常用服务的端口状态(可通过\dat\config.ini文件的"PORT-SCAN-OPTIONS\PORT-LIST"项定制待检测端口列表); -sql : 检测SQL-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件); -ftp : 检测FTP弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件); -ntpass : 检测NT-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件); -smtp : 检测SMTP-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件); -pop3 : 检测POP3-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件); -smb : 检测NT-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件); -cgi : 检测CGI漏洞(可通过\dat\config.ini文件的"CGI-ENCODE\encode_type"项设置编码方案); -iis : 检测IIS编码/解码漏洞(可通过\dat\config.ini文件的"CGI-ENCODE\encode_type"项设置编码方案); -nasl : 加载Nessus攻击脚本; -all : 检测以上所有项目; [其他选项] 含义如下: -v: 显示详细扫描进度 -p: 跳过没有响应的主机 -o: 跳过没有检测到开放端口的主机 -t : 指定最大并发线程数量和并发主机数量, 默认数量为100,10 * cgi及iis参数中"编码方案"含义: 1.用"HEAD"替换"GET" 2.用"POST"替换"GET" 3.用"GET / HTTP/1.0\r\nHeader:" 替换 "GET" 4.用"GET /[filename]?param=" 替换 "GET"(可通过\dat\config.ini文件的"CGI-ENCODE\encode4_index_file"项设置[filename]) 5.用"GET " 替换 "GET" 6.多个"/"或"\" 7."/"与"\"互换 8.用"替换"" 注:各变形方案若不冲突则可以同时使用,如"-cgi 1,6,8"表示同时使用第1、6、8号方案对HTTP请求进行变形。 2.示例: xscan -host xxx.xxx.1.1-xxx.xxx.255.255 -all -active -p 含义:检测xxx.xxx.1.1-xxx.xxx.255.255网段内主机的所有漏洞,跳过无响应的主机; xscan -host xxx.xxx.1.1-xxx.xxx.255.255 -port -smb -t 150 -o 含义:检测xxx.xxx.1.1-xxx.xxx.255.255网段内主机的标准端口状态,NT弱口令用户,最大并发线程数量为150,跳过没有检测到开放端口的主机; xscan -file host.lst -port -cgi -t 200,5 -v -o 含义:检测"host.lst"文件中列出的所有主机的标准端口状态,CGI漏洞,最大并发线程数量为200,同一时刻最多检测5台主机,显示详细检测进度,跳过没有检测到开放端口的主机; 七. 插件接口: /* 该函数在初始化插件时被调用,用于获取插件基本信息。 返回值含义:TRUE--插件初始化成功;FALSE--插件初始化失败。*/ extern "C" __declspec(dllexport) BOOL __stdcall GetPluginInfo(PLUGIN_INFO *); /* 该函数在检测主机时被调用,传入主机基本信息及必要参数,返回扫描结果。 返回值含义:TRUE--存在漏洞;FALSE--不存在漏洞。*/ extern "C" __declspec(dllexport) BOOL __stdcall PluginFunc(VOID *); 插件应导出上述两个函数,xscan.exe将分别在初始化和扫描时调用。编译后将最终生成的.dll程序重命名为.xpn文件,并保存在xscan.exe所在目录的"plugin"子目录内。示例插件程序见“/plugins/XScan_Pub_Plugin_{by_Enfis}.rar”。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧