搜档网
当前位置:搜档网 › MongoDB安全防护V20170905

MongoDB安全防护V20170905

MongoDB安全防护V20170905
MongoDB安全防护V20170905

MongoDB安全防护

一.背景说明

经检测发现部分用户存在MongoDB数据库未授权访问漏洞,漏洞危害严重,可以导致数据库数据泄露或被删除勒索,从而造成严重的生产事故。为保证您的业务和应用的安全,请根据以下修复漏洞指导方案加固MongoDB服务安全。

二.漏洞危害

开启MongoDB服务后,如不添加任何参数,默认是没有权限验证的。登录的用户可以通过默认端口无需密码对数据库进行任意操作(包括增、删、改、查等高危动作),而且可以远程访问数据库。三.漏洞成因

安装完MongoDB服务后默认有一个admin数据库,此时admin数据库是空的,没有记录任何权限相关的信息。当https://www.sodocs.net/doc/0d16226289.html,ers一个用户都没有时,即使MongoDB启动时添加了—auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否以—auth 参数启动),直到在https://www.sodocs.net/doc/0d16226289.html,ers中添加一个用户。加固的核心方案是实现只有在https://www.sodocs.net/doc/0d16226289.html,ers中添加用户之后,MongoDB的认证、授权服务才能生效。

四.漏洞自查

如果您是MongoDB管理员,也可以使用以下方式检查是否有进一步的入侵行为:

(1)查看MongoDB的日志是否完整,并确认执行删除数据库的源IP地址和时间、行为。

(2)检查MongoDB帐户,查看是否没有添加admin用户的密码(使用https://www.sodocs.net/doc/0d16226289.html,ers.find()命令)。

(3)检查GridFS,查看是否存储任何文件(使用db.fs.files.find()命令)。

(4)检查日志文件,查看有哪些用户访问了MongoDB(使用show log global命令)。

五.防护方法

重要提示:如果您需要自己搭建MongoDB数据库,强烈推荐您使用yum rpm方式安装MongoDB Server 服务。

1.修改默认端口

修改默认的MongoDB 端口(默认为:TCP 27017)为其他端口。

2.不要把MongoDB服务器直接部署在互联网或者DMZ上

使用安全组防火墙或本地操作系统防火墙对访问源IP进行控制,如果仅对内网服务器提供服务,建议禁止将MongoDB服务发布到互联网。

3.使用—bind_ip选项

该选项可以限制监听接口IP。当在启动MongoDB的时候,使用--bind_ip 192.168.0.1表示启动IP地址绑定,数据库实例将只监听192.168.0.1的请求。

4.启动基于角色的登录认证功能

在admin数据库中创建用户,如用户名supper,密码supWDxsf67%H(此处为举例说明,请勿使用此账号密码)。

第一步:在未开启认证的环境下,登录到数据库

[mongodb@rac3 bin]$ ./mongo 127.0.0.1:27028 (此处修改了默认端口)

MongoDB shell version: 2.0.1

connecting to: 127.0.0.1:27028/test

第二步:切换到admin数据库

> use admin

switched to db admin

>

第三步:创建管理员账号

> db.addUser("supper", "supWDxsf67%H")或

>db.createUser({user:"supper",pwd:"supWDxsf67%H",roles:["r oot"]})

{ "n" : 0, "connectionId" : 4, "err" : null, "ok" : 1 }

{

"user" : "supper",

"readOnly" : false,

"pwd" : "51a481f72b8b8218df9fee50b3737c44",

"_id" : ObjectId("4f2bc0d357a309043c6947a4")

}

管理员账号将在https://www.sodocs.net/doc/0d16226289.html,ers中

> db.getCollectionNames()

[ "system.indexes", "https://www.sodocs.net/doc/0d16226289.html,ers", "system.version" ]

说明:

(1)MongoDB从V3版本开始取消使用addUser方法,采用db.createUser方法创建用户。

(2)账号不要设置为常见账号,密码需要满足一定的复杂度,长度至少八位以上,并包括大小写字母、数字、特殊字符混合体,不要使用生日、姓名、身份证编号等常见密码。

第四步:验证用户是否创建成功

> db.auth("supper","supWDxsf67%H")

> exit

bye

第五步:结束进程,重启MongoDB服务

./mongod --dbpath=/path/mongodb --bind_ip=192.168.0.1 --port=27028 --fork=true logpath=/path/mongod.log &

说明:

(1)https://www.sodocs.net/doc/0d16226289.html,ers中将会保存比在其它数据库中设置的用户权限更大的用户信息,拥有超级权限,也就是说在admin中创建的用户可以对mongodb中的其他数据库数据进行操作。

(2)MongoDB系统中,数据库是由超级用户来创建的,一个数据库可以包含多个用户,一个用户只能在一个数据库下,不同数据库中的用户可以同名。

(3)特定数据库(比如DB1)的用户User1,不能够访问其他数据库DB2,但是可以访问本数据库下其他用户创建的数据。

(4)不同数据库中同名的用户不能够登录其他数据库,比如DB1、DB2都有user1,以user1登录DB1后,不能够登录到DB2进行数据库操作。

(5)在admin数据库创建的用户具有超级权限,可以对mongodb系统内的任何数据库的数据对象进行操作。

(6)使用db.auth()可以对数据库中的用户进行验证,如果验证成功则返回1,否则返回0。db.auth()只能针对登录用户所属的数据库的用户信息进行验证,不能验证其他数据库的用户信息。

更多选项说明请参见MongoDB – Add Users and Authenticate。

5.禁用HTTP和REST端口

MongoDB自身带有一个HTTP服务和并支持REST接口(在V2.6以后这些接口默认是关闭的)。MongoDB默认使用默认端口监听Web服务,一般不需要通过Web方式进行远程管理,建议禁用。

修改配置文件或在启动的时候选择–nohttpinterface参数即可。nohttpinterface = false

6.开启日志审计功能。

审计功能可以用来记录用户对数据库的所有相关操作。这些记录可以让系统管理员在需要的时候分析数据库在什么时段发生了什么事情。

7.使用SSL加密功能。

MongoDB集群之间以及从客户端连接到MongoDB实例的连接应该使用SSL。使用SSL对性能没有影响并且可以防范类似于man-in-the-middle的攻击。

注意MongoDB社区版默认并不支持SSL。您可以选用MongoDB 企业版(支持SSL),或者从源码重新编译MongoDB并使用—ssl 选项来获得SSL功能。具体请参见Configure mongod and mongos for TLS/SSL。

以上所有配置,推荐以配置文件形式保存配置。

(1)[mongodb@rac3 bin]$ vim /path/mongod.conf

(2)port=27028-------端口。默认为27017端口,MongoDB 的默认服务TCP端口,监听客户端连接。要是端口设置小于1024,比如1021,则需要root权限启动,不能用mongodb帐号启动,(普通帐号即使是27017也起不来)否则报错:[mongo

--port=1021 连接]

(3)bind_ip=192.168.0.1------绑定地址。默认127.0.0.1,只能通过本地连接。进程绑定和监听来自这个地址上的应用连接。要是需要给其他服务器连接,则需要注释掉这个或则把IP改成本机地址,如192.168.200.201[其他服务器用mongo

--host=192.168.200.201 连接] ,可以用一个逗号分隔的列表绑定多个IP地址。

(4)logpath=/path/mongod.log------开启日志审计功能,此项为日志文件路径,可以自定义指定。

(5)pidfilepath=/path/mongod.pid------进程ID,没有指定则启动时候就没有PID文件。

(6)auth=true------用户认证,默认false。不需要认证。当设置为true时候,进入数据库需要auth验证,当数据库里没有用户,则不需要验证也可以操作。直到创建了第一个用户,之后操作都需要验证。

(7)logappend=true------写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。

(8)fork=true------是否后台运行,设置为true 启动进程在后台运行的守护进程模式。默认false。

(9)nohttpinterface = false------是否禁止http接口,即28017 端口开启的服务。默认false,支持。

然后,启动MongoDB服务时加载配置文件。

[mongodb@rac3 bin]$ ./mongod -f /path/mongod.conf 8.对业务关键敏感数据进行加密存储。

建议您梳理业务数据,对关键的敏感数据加密后入库,例如:账号、密码、邮箱地址、手机号码、身份ID等其他数据。加密算法推荐选择国际通用加密算法和多次加盐组合自定义算法,防止加密算法被破解。即使黑客获取数据后,也查看不了数据,通过“看不懂”的数据加密方式将损失降到最低。

9.对数据进行本地异地备份。

完善的备份策略是保证数据安全的最后一根救命稻草。

推荐:可靠的本地备份+远程备份存储方案

本地备份

MongoDB备份方式

(1)>mongodump -h dbhost -d dbname -o dbdirectory (2)-h:

(3)MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

(4)-d:

(5)需要备份的数据库实例,例如:test

(6)-o:

(7)备份的数据存放位置,例如:c:\data\dump,该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test 目录,这个目录里面存放该数据库实例的备份数据。

MongoDB数据恢复

(1)mongodb使用mongorestore 命令来恢复备份的数据。

(2)语法

(3)mongorestore命令脚本语法如下:

(4)>mongorestore -h dbhost -d dbname

--directoryperdb dbdirectory

(5)-h:

(6)MongoDB所在服务器地址

(7)-d:

(8)需要恢复的数据库实例,例如:test,这个名称也可以和备份时候的不一样,比如test2。

(9)--directoryperdb:

(10)备份数据所在位置,例如:c:\data\dump\test。

(11)--drop:

(12)恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用!

Mongodump命令可选参数列表如下所示。

备份策略

全量备份:可以最快的时间快速恢复所有数据,缺点是备份成本大,时间长。

全量备份+增量备份:可以较快的恢复所有数据,缺点是恢复时间长,如果增量数据有问题,无法恢复所有数据。

搭建从库:直接切换到从库,前提是从库的数据安全可靠。

mongodb学习总结

MongoDB学习文档 一、NoSQL简介 1、什么是NoSQL? NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。 NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。 2、NoSQL的优点/缺点 优点: 高可扩展性。 分布式计算。 低成本。 架构的灵活性,半结构化数据。 没有复杂的关系。

缺点: 没有标准化。 有限的查询功能(到目前为止)。 最终一致是不直观的程序。 3、NoSQL 数据库分类 类型部分代表特点 列存储Hbase Cassandra Hypertable 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 文档存储MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 key-value存储Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) 图存储Neo4J FlockDB 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 对象存储db4o 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。

结构化数据和非结构化数据

相对于结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等等。 字段可根据需要扩充,即字段数目不定,可称为半结构化数据,例如Exchange存储的数据。 非结构化数据库 在信息社会,信息可以划分为两大类。一类信息能够用数据或统一的结构加以表示,我们称之为结构化数据,如数字、符号;而另一类信息无法用数字或统一的结构表示,如文本、图像、声音、网页等,我们称之为非结构化数据。结构化数据属于非结构化数据,是非结构化数据的特例 数据清洗从名字上也看的出就是把“脏”的“洗掉”。因为数据仓库中的数据是面向某一主题的数据的集合,这些数据从多个业务系统中抽取而来而且包含历史数据,这样就避免不了有的数据是错误数据、有的数据相互之间有冲突,这些错误的或有冲突的数据显然是我们不想要的,称为“脏数据”。我们要按照一定的规则把“脏数据”“洗掉”,这就是数据清洗.而数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。 (1)不完整的数据 这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。 (2)错误的数据 这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。 (3)重复的数据 对于这一类数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。 数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正一般要求客户确认,对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有

win7环境变量设置

windows7下java环境变量配置方法: 1.用鼠标右击“我的电脑”->属性 选择左边导航的“高级系统设置”选项,然后这回熟悉了吧?

继续选择右下角的“环境变量”选项2.进行win7下Java环境变量配置

在"系统变量"下进行如下配置: (1)新建->变量名:JA V A_HOM E 变量值:D:\Java\jdk1.6.0_12(这只是我的JDK安装路径) (2)编辑->变量名:Path 在变量值的最前面加上:%JA V A_HOME%\bin;%JA V A_HOME%\jre\bin (3)新建->变量名:CLASSPATH 变量值:.;%JA V A_HOME%\lib;%JAV A_HOME%\lib\dt.jar;%JAV A_HOME%\lib\tools.jar (4)编辑->变量名:JA V A_HOME,变量值:D:\Java\jdk1.6.0_10 也可以直接把path设置成:D:\java\jdk1.6.0_12\bin 把classpath设置成:D:\java\jdk1.6.0_12\lib 只要你把这两个环境变量设置成了指向你的安装的地方就ok了,这样机器就会根据这个路径来找需要的*.dll,*.exe等文件了 注意:当设置的变量在末尾时,不要加上“;”。 3.测试下环境变量是否设置成功 在左下角的搜索框中键入 cmd 或者按下“WIN+R”键,“WIN”键就是"CTRL"和“AL T””中间那个微软图标那个键; 分别输入java,javac,java -version 命令

如果出现如下信息:

4.你的Java环境变量配置成功! 注意: 若出现 'javac' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 说明此次Java环境变量配置出错了,仔细检查下吧!

非结构化数据管理系统

非结构化数据管理系统 1 范围 本标准规定了非结构化数据管理系统的功能性要求和质量要求。 本标准适用于非结构化数据管理系统产品的研制、开发和测试。 2 符合性 对于非结构化数据管理系统是否符合本标准的规定如下: a)非结构化数据管理系统若满足本标准基本要求中的所有要求,则称其满足本标准的基本要求; b)非结构化数据管理系统在满足所有基本要求的前提下,若满足某部分扩展要求,则称其满足本 标准的基本要求和该部分扩展要求; c)非结构化数据管理系统若满足本标准基本要求和扩展要求中的所有要求,则称其满足本标准的 所有要求。 3 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 GB 18030—2005 信息技术中文编码字符集 GB/T AAAAA-AAAA 非结构化数据访问接口规范 4 术语和定义 下列术语和定义适用于本文件。 4.1 非结构化数据unstructured data 没有明确结构约束的数据,如文本、图像、音频、视频等。 4.2 非结构化数据管理系统unstructured data management system 对非结构化数据进行管理、操作的大型基础软件,提供非结构化数据存储、特征抽取、索引、查询等管理功能。 5 缩略语 下列缩略语适用于本文件。 IDF:逆向文件频率 (Inverse Document Frequency) MFCC:梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient)

PB:千万亿字节(Peta Byte) SIFT:尺度不变特征转换(Scale-invariant Feature Transform) TF:词频 (Term Frequency) 6 功能性要求 6.1 总体要求 非结构化数据管理系统的总体要求如下: a)应包括存储与计算设施、存储管理、特征抽取、索引管理、查询处理、访问接口、管理工具七 个基本组成部分; b)宜包括转换加载、分析挖掘、可视展现三个扩展组成部分。 6.2 存储与计算设施 6.2.1 基本要求 存储与计算设施基本要求如下: a)应支持磁盘、磁盘阵列、内存存储、键值存储、关系型存储、分布式文件系统等一种或多种存 储设施; b)应支持单机、并行计算集群、分布式计算集群等一种或多种计算设施。 6.2.2 扩展要求 无。 6.3 存储管理 6.3.1 基本要求 存储管理基本要求如下: a)应提供涵盖原始数据、基本属性、底层特征、语义特征的概念层存储建模功能; b)应提供逻辑层的存储建模功能; c)支持整型、浮点型、布尔型、字符串、日期、日期时间、二进制块等基本数据类型; d)支持向量、矩阵、关联等数据类型; e)应支持根据建好的逻辑层存储模型创建存储实例; f)应支持在创建好的存储实例上插入、修改、删除非结构化数据; g)应支持删除存储实例; h)应支持非结构化数据操作的原子性。 6.3.2 扩展要求 存储管理扩展要求如下: a)应支持全局事务的定义并保证事务的原子性、一致性、隔离性和持久性; b)应支持数据类型的多值结构和层次结构; c)应支持在不同的存储设施上创建存储实例并实现自动映射; d)应支持PB级数据存储。 6.4 特征抽取

MongoDB 使用手册-中文版

MongoDB 使用手册-中文版

目录 第1章MONGODB简介 (4) 1.1功能特点 (4) 1.2适用范围 (4) 第2章MONGODB下载及安装 (5) 2.1下载地址 (5) 2.2安装方法 (5) 第3章MONGODB语法 (6) 3.1基本命令 (6) 3.1.1.启动mongodb (6) 3.1.2.停止mongodb (6) 3.2SQL语法 (7) 3.2.1.基本操作 (7) 3.2.2.数据集操作 (8) 第4章JAVA操作MONGODB (10) 4.1正在整理中 (10) 第5章其它 (10) 5.1正在整理中 (10)

第1章MongoDB简介 1.1功能特点 官方网址:https://www.sodocs.net/doc/0d16226289.html,/ MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。 它的特点是可扩展,高性能,易使用,模式自由,存储数据非常方便等,主要功能特性有: ◆面向文档存储:(类JSON数据模式简单而强大)。 ◆高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。 ◆复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从 模式及服务器之间的相互复制。 ◆Auto-Sharding自动分片支持云级扩展性(处于早期alpha阶段):自动分片功 能支持水平的数据库集群,可动态添加额外的机器。 ◆动态查询:它支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻 易查询文档中内嵌的对象及数组。 ◆全索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达 式,并生成一个高效的查询计划。 ◆支持RUBY,PYTHON,JA V A,C++,PHP等多种语言。 1.2适用范围 适用场景: ◆适合实时的插入,更新与查询,并具备应用程序实时数据存储所需的复制及高 度伸缩性。 ◆适合作为信息基础设施的持久化缓存层。 ◆适合由数十或数百台服务器组成的数据库。因为Mongo已经包含对 MapReduce引擎的内置支持。 ◆Mongo的BSON数据格式非常适合文档化格式的存储及查询。 不适用场景: ◆高度事务性的系统。 ◆传统的商业智能应用。 ◆级为复杂的SQL查询。

非结构化数据的资产管理系统构建与实现

非结构化数据的资产管理系统构建与实现 摘要:办公室的文本,PDF文件,图片,网页,音频、视频等非结构化数据正逐渐成为业务流程的一个重要来源继续快速增长,传统的数据结构的数据库管理应用的模式已经不适应现在企业信息化的需要,企业要的为很多的信息管理与业务流程深度结合的基础之上对于各种的非结构化数据模式,提供具有收集、整理、归档以及安全储存、快速应用的管理模式。 这样模式的形成,是需要在三年的时间里面各个的部分进行深入的研究,在结合计算机软件技术、网络技术以及数据库技术的条件下面,利用程序设计概念,三层体系结构作为一个模型系统,含有的具体开发环境。对于NET框架以及SQL Server2008进行利用,作为C #的基本后台数据库开发基础,设计并建成了资产管理系统的非结构化数据模式。 具有三个层次的结构体系,含有订单的采购、资产的管理、信息管理等很多的模块,这个里面办公用品的采购申请模式、资产管理模式是这个系统的核心部分。前者可以提供对于新购资产的申请、审批以及采购活动,利用这样的模式对于原有企业具有的各种数据库进行分析与提出,建立完成统一的数据库模式,实现部门之间有效的配置与更新操作。 关键词:数据库;非结构化数据; 企业资产管理系统 第 1 章绪论 在很多的企业里面,数据被看作为价值最高的无形资产,依据其含有的类型 可以分为结构化的数据与非结构化数据。非结构化数据是指数据类型的二维表结 构表示,包括办公文档,文本,图像,XML,HTML以及各种形式的报表、图像以 及音频等文件。一个企业逐渐的建立信息化过程里面,它可以用来构建结构化的 数据,这对企业数据的相关数据。不过对于其他的非结构化的数据不能完全的用 来处理这些关系数据库。科学管理与合理应用这些非结构话数据已经成为正确的 决策与提供核心竞争力的主要问题。Gartner在前几年的专题分析报告里面明确 的提出:“在未来的10年内,信息的有效性非常的必要,其将企业和全球经济 的主导地位的负担难以承受的信息爆炸,企业识别”。Gartner,AIIM(美国信 息图形学会),维基百科和其他部门企业非结构化数据管理的定义是在采集,管 理,存储,使用,保管和组织发布内容和文档,过程相结合的策略,方法和工具,

关于电脑中环境变量的解释

关于电脑中环境变量的解释 基本定义 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等。这点有点类似于DOS时期的默认路径,当你运行某些程序时除了在当前文件夹中寻找外,还会到设置的默认路径中去查找。简单地说这里的“Path”就是一个变量,里面存储了一些常用命令所存放的目录路径。 环境变量相当于给系统或用户应用程序设置的一些参数, 具体起什么作用这当然和具体的环境变量相关. 比如path, 是告诉系统, 当要求系统运行一个程序而没有告诉它程序所在的完整路径时, 系统除了在当前目录下面寻找此程序外, 还应到哪些目录下去寻找; 再如tc或vc++中, set include=path1;path2; 是告诉编译程序到哪里去找.h类型的文件; 当然不仅仅是指定什么路径, 还有其它的作用的, 如set dircmd=/4 设置一个环境变量的作用是在使用dir 命令时会把/4作为缺省的参数添加到你的dir命令之后, 就像你的每个命令都加了/4参数, 它实际上是给命令解释程序command设置的一个环境变量, 并且是给dir这个内部命令设置的。 DWORDGetEnvironmentVariable(LPCSTR lpName, LPSTR lpBuffer, DWORD dSize), 参数lpName 是你要求查询的环境变量的名, lpBuffer是返回你所指定的环境变量的值的, dSize是告诉这个函数lpBuffer可以存放多少个字节. 分析本地故障时原因很可能就是因为环境变量中的默认路径被删除的结果,默认路径一经设置,当前系统如有程序运行时需要某些DLL或EXE文件,以及Active控件时就会到所有默认路径中去查找,如果在这些目录中查找到相应的程序则自动加载,查找不到则报告缺少某某文件的错误信息。 环境变量 解决双系统的软件共用问题 很多朋友会在自己的计算机上安装双系统,例如C盘安装Windows XP,D盘安装Windows 7。可是某些软件往往只在Windows XP系统中安装,Windows 7系统中是无法正常使用的,比较麻烦却有效的方法是再安装一遍。当我们了解了环境变量中的用途后就可以很好解决双系统的软件共用问题。 解决系统运行问题 为什么在Windows XP中安装了的软件在Windows 7下无法运行呢(绿色软件除外)?原因是安装软件时往往须要向系统目录中复制某些文件,而使用另外一个系统时会由于缺少这些文件而无法运行。因此,我们可以通过设置环境变量的方法来解决这个问题。 常见环境变量 %ALLUSERSPROFILE% 局部返回所有“用户配置文件”的位置。 %APPDATA% 局部返回默认情况下应用程序存储数据的位置。

(完整版)非结构化存储方案

非结构化数据存储方案 一、存储类型体系: 1.1 存储类型体系结构图 1.2 存储类型体系描述 (1)块存储:将存储区域划分为固定大小的小块,是传统裸存设备的存储空间对外暴露方式。块存储系统将大量磁盘设备通过SCSI/SAS或FC SAN与存储服务器连接,服务器直接通过SCSI/SAS或FC协议控制和 访问数据。主要包括DAS和SAN两种存储方式。对比如下图:

(2) 分布式文件存储:文件存储以标准文件系统接口形式向应用系统提供 海量非结构化数据存储空间。分布式文件系统把分布在局域网内各个计算机上的共享文件夹集合成一个虚拟共享文件夹,将整个分布式文件资源以统一的视图呈现给用户。它对用户和应用程序屏蔽各个节点计算机底层文件系统的差异,提供用户方便的管理资源的手段和统一 的访问接口。主要包括NAS 和HDFS 两种存储方式。 a) 网络附加存储NAS 结构如图:

b)HDFS分布式文件系统存储结构如图: (3)对象存储:对象存储为海量非结构化数据提供Key-Value这种通过键-值查找数据文件的存储模式,提供了基于对象的访问接口,有效地合并了NAS和SAN的存储结构优势,通过高层次的抽象具有NAS的跨平台共享数据优点,支持直接访问具有SAN的高性能和交换网络结 构的可伸缩性。主要包括swift和ceph两种实现形式。 a)Swift,OpenStack Object Storage(Swift)是OpenStack项目的子项目 之一,被称为对象存储。它构建在比较便宜的标准硬件存储基础设 施之上,无需采用RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可 用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解 决非结构化数据存储问题。 b)ceph,Linux下PB级分布式文件系统,可轻松扩展PB容量,提供了 对多种工作负载的高性能和高可靠性。它大致分为四部分:客户端 (数据用户),元数据服务器(缓存和同步分布式元数据),一个对 象存储集群(包括数据和元数据),以及最后的集群监视器(执行监 视功能)。

Windows 环境变量

Windows System Environment Variables These system environment variables are automatically created by Windows upon boot-up in Windows Registry key HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Session Manager\ Environment Variable Sample Typical Value %SystemDrive% C: %SystemRoot% C:\WINDOWS C:\WINNT %WinDir% C:\WINDOWS C:\WINNT %SystemDirectory% C:\WINDOWS\System32 C:\WINNT\System32 %ComSpec% C:\WINDOWS\system32\cmd.exe The path including the command interpreter program. %programfiles% C:\WINDOWS\Program Files %Temp% C:\Users\W\AppData\Local\Temp on Windows Vista & 2008 C:\DOCUME~1\Usr\LOCALS~1\Temp (compressed form of) C:\Documents and Settings\Usr\Local Settings\Temp %Tmp% %HOMEDRIVE% C: The drive letter associated with the user's home directory %HOMEPATH% The path to the user's home directory as defined in UMD/AD (excluding drive): \Users\ on Windows Vista & 2008 \Documents and Settings\Guest on Windows XP %OS% Windows_NT (even on Windows Vista & XP machines The operating system the user is running %USERDOMAIN% The name of the domain that contains the user's account. On a stand-alone machine, the same as the machine name. %USERNAME% The user's name %USERPROFILE% C:\Users\ — The user's root folder %USERPROFILE%\Desktop The user's desktop folder If you have the permissions, invoke, then open my DOS batch file 1envvars.bat which lists the values of these variables on your computer Windows resolves commands typed in the start/run box first from files in %SYSTEMDRIVE%, then files in %SYSTEMROOT%. This is regardless of the systemdrive (such as E:) being later in the path. This means that a rogue file can be invoked instead of a good file (such as cmd.exe) if it's in the %SYSTEMDRIVE%. Below are dynamic environment variables:

Mongodb集群搭建的三种方式

Mongodb集群搭建的三种方式 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 Mongodb的存储方式是文档式存储,并不是Key-Value形式。 Mongodb的三种集群方式的搭建:Replica Set、Sharding、Master-Slaver。 1、Replica Set(副本集) 简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致。如下图: Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。 默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设

置叫做Read Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。 仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。 2、Sharding 和Replica Set类似,都需要一个仲裁节点,但是Sharding还需要配置节点和路由节点。就三种集群搭建方式来说,这种是最复杂的。部署图如下:

非结构化数据管理:ERP力不从心 ECM接力

对于国内相当多的企业来说,ECM这个概念还比较陌生,但提起ERP,很多人都耳熟能详。 事实上,ERP是以数据库管理为核心的,而ECM是以非结构化数据管理为核心。凯德云M-Files是由美国M-Files公司开发的软件产品,主要用于企业内容管理(ECM)、文档管理(EDM)、质量管理、知识管理、项目协同。 调查显示,企业中80%的数据是以非结构化的形式存在的,例如电子邮件、报表、办公文档、扫描文件、网页等,而这些非结构化数据往往散落在企业的各种应用系统中,无法得到统一的管理,更惶谈从中挖掘出价值。 ERP与ECM的关联 在廖强(EMC中国区副总裁、内容管理及归档事业部大中华区总经理)看来,现在非结构化数据的管理需求产生了,实际上就是一个很自然的过程,跟以前ERP比较的话,内容管理与ERP同等重要,内容管理是管着80%的非结构化信息,ERP管理着20%的结构化信息。其次从复杂性来讲,因为ERP牵涉了管理的方方面面,内容管理却没有那么复杂。从投资来讲,大家都在讲收益率,企业现在实际上逐渐地认识到内容管理的重要性。这几年内容管理逐渐地跟ERP、CRM,包括银行的核心系统,包括电信的计费系统等成为企业信息化的新重点。也就是说,随着内容管理逐渐地深入客户的核心业务,对企业的工作效率、收益、信息安全等都将得到提高。 ECM已进入第三代 IDC在2008年上半年针对中国企业所做的一项调查显示,在受调查的434个最终用户中,接近60%的用户表示有计划投资内容管理软件。而在2007年的类似调查中,这一比例还只有30%多。这一结果表示,内容管理在组织中的优先级大大提高。IDC分析认为,用户渴望投资内容管理解决方案,主要有两方面的原因:一是日益增长的法规要求;二是通过内容管理功能更好地优化、自动化纸质业务流程。 廖强分析说,综合当今内容管理市场,内容管理解决方案可以分为三代。 第一代是小型供应商提供单点解决方案,主要用于解决零碎的业务问题,例如光盘系统管理、记录管理、Web内容管理、数字资产管理、工作流/BPM管理等。第一代内容管理的特点是有众多小型技术公司,每个公司都使用专门构建的应用程序解决一些零碎的业务问题。 第二代是中型供应商在单点解决方案的基础上,提供较为全面的内容管理功能套件。第二代内容管理是由整合驱动的,在这一阶段,中型公司纷纷展开收购,并开始构建成套的内容管理应用程序。这是一个从单点产品到内容管理套件的变化过程,许多公司都是从点入手,而逐渐架构起较为完善的内容管理解决方案。但在这个过程中,内容管理底层平台的健壮性和面向应用的灵活性及可扩展性往往被忽视。 前两代内容管理带来的问题是:各个系统之间往往会形成信息孤岛的现象。而且,当应用出现变化时,需要对各个单点产品逐一修改,不能快速满足应用变化速度。 在第三代内容管理中,内容管理正逐渐成为企业信息基础架构的一部分;企业对内容管理的需求,已并不满足于应用某些点的产品去实现特定业务的管理,而是需要一个高性能、高可扩展性、能支持企业业务快速发展并能满足企业业务变化需求的内容管理平台。 开放性成长 任何一个软件公司的理想是要做到能够尽量满足客户的最终需要,但这很难实现,主要原因是需求的复杂度,很难有一个企业所提供的软件产品能够适应各式各样的不同需求。 廖强介绍说,Documentum平台一直以来就不是自行运转,Documentum平台一定跟结构化结合在一起。比如在国内某银行的应用,像有一套贷款审批,因为它要审核你的原始的资质,你的房产证等,这些都需要EPR系统与Documentum。从我们整个的发展方向来看,ECM是关注着技术性、扩展性、高性能,可对接性,希望把自己的开发能力提供给整个社

MongoDB应用

MongoDB数据库 一、MongoDB简介 MongoDB是一个面向文档的数据库系统。使用C++编写,不支持SQL,但有自己功能强大的查询语法。 MongoDB使用BSON作为数据存储和传输的格式。BSON是一种类似JSON的二进制序列化文档,支持嵌套对象和数组。 MongoDB很像MySQL,document对应MySQL的row,collection对应MySQL的table。 二、Wind ows下MongoDB操作 MongoDB在Windows上的安装运行很方便。直接下载、解压,然后运行bin/mongod 即可启动服务器,运行bin/mongo 即可运行命令行客户端。 2-1、下载与解压 官方网站:https://www.sodocs.net/doc/0d16226289.html,/downloads。 下载对于版本,解压并抽取相关的bin目录到C:\MongoDB下(这个任意选择)。 在启动MongoDB之前,我们必须新建一个存放mongoDB数据和日志的目录。数据库目录:C:\MongoDB\data\db\,日志目录:C:\MongoDB\data\。 2-2、运行服务端 打开CMD窗口,进入到C:\MongoDB\bin目录下,运行服务端mongod.exe。 C:\>cd C:\MongoDB\bin C:\MongoDB\bin>mongod.exe --dbpath=C:\MongoDB\data\db --directoryperdb --logpath

=C:\MongoDB\data\logs --logappend 注: 日志文件为C:\MongoDB\data\logs,以及添加方式记录(追加)。 数据目录为C:\MongoDB\data\db,并且每个数据库将储存在一个单独的目录(--directoryperdb)。 服务端要一直运行。Ctrl+C可中断。 2-3、运行客户端 再打开一个CMD窗口,进入到C:\MongoDB\bin目录下,运行客户端mongo.exe来登录MongoDB。(要保持服务端mongod.exe的窗口不关闭) 2-4、测试操作 MongoDB使用GridFS来储存大文件。每个BSON对象大小不能超过4MB。 字段名限制:不能以“$”开头;不能包含“.”;“_id”是系统保留的字段,但用户可以自己储存唯一性的数据在字段中。 MongoDB为每个数据库分配一系列文件。每个数据文件都会被预分配一个大小,第一个文件名字为“.0”,大小为64MB,第二个文件“.1”为128MB,依此类推,文件大小上限为2GB。 MongoDB没有新建数据库或者collection的命令,只要进行insert或其它操作,MongoDB 就会自动帮你建立数据库和collection。当查询一个不存在的collection时也不会出错,Mongo会认为那是一个空的collection。 一个对象被插入到数据库中时,如果它没有ID,会自动生成一个“_id”字段,为24位16进制数。 MongoDB命令行客户端的脚本语法有些类似MySQL的: > show dbs // 列出所有数据库 > use memo // 使用数据库memo。即使这个数据库不存在也可以执行,但该数据库不会立刻被新建,要等到执行了insert等的操作时,才会建立这个数据库。

windows环境变量简介

1. 什么是环境变量? 要回答这个问题,首先得说说什么是windows的cmdshell。因为,环境变量从来都不是普通PC用户关心的内容,绝大多数时候,环境变量都是因为cmdshell 才显得重要。 cmdshell --“命令外壳”,其实是windows的命令解释器,它负责把户输入的cmd(可以简单地理解为DOS命令,虽说很狭义,不准确),对应到一个DOS命令的执行,或者一支程序的开启。帮助用户以更快的速度运行windows的常见操作,比如浏览、管理文件,执行应用程序等,完全摆脱缓慢的鼠标操作。这对于普通用户而言,确实没有多少吸引力,但是对于工作于windows下的程序员而言,却相当重要。 我们从开始菜单-->运行-->cmd打开的命令提示符窗口,很多人称它为“XP的DOS”,不够专业,却也无伤大雅。它就像linux的Terminal一样,是cmdshell 和用户交流的窗口。在这里,用户键入cmd给shell,shell负责执行相应的命令或者程序,并且把执行的返回信息即时地显示在窗口上。 现在,关于什么是cmdshell,想必您已有所了解,它跟linux的shell(bsh, csh, tcsh, ksh等),在功能和外边上,都是极其相似的。下面我们言归正传,接着来看什么是环境变量。 在cmdshell当中,我们要打开一支程序(通常是.exe文件),需要把这个程序的完整路径写在命令行上(提示符之后),比如”F:\Program Files\Microsoft Office\OFFICE11\winword.exe",然后回车,即可打开word程序。这里,我们很容易发现,输入这样一行命令,是件很费精力的事情,特别是对于喜欢简单和高效程序员来说,如此费力的事情太可怕了,简直就是不可想象的!

简述结构化数据、非结构化数据、半结构化数据

在数据分析中,我们会接触到很多的数据,而这些数据都是有类别之分的。这些数据根据结构分类被划分为三种,它们分别是结构化数据、非结构化数据、半结构化数据。在这篇文章中我们就简单地给大家介绍一下这三种数据的相关知识。 首先我们说一下结构化数据,结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。能够用数据或统一的结构加以表示,我们称之为结构化数据,如数字、符号。传统的关系数据模型、行数据,存储于数据库,可用二维表结构表示。而结构化的数据的存储和排列是很有规律的,这对查询和修改等操作很有帮助。 然后我们说一下半结构化数据,半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。半结构化数据,属于同一类实体可以有不同的属性,即使他们被组合在一起,这些属性的顺序并不重要。所谓半结构化数据,就是介于完全结构化数据和完全无结构的数据之间的数据,XML、HTML文档就属于半结构化数据。它一般是自描述的,数据的结构和内容混在一起,没有明显的区分。而不同的半结构化数据的属性的个数是不一定一样的。有些人说半结构化数据是以树或者图的数据结构存储的数据,怎么理解呢?

最后我们给大家介绍一下非结构化数据,非结构化数据顾名思义,就是没有固定结构的数据。各种文档、图片、视频、音频等都属于非结构化数据。对于这类数据,我们一般直接整体进 行存储,而且一般存储为二进制的数据格式。非结构化数据库是指其字段长度可变,并且每 个字段的记录又可以由可重复或不可重复的子字段构成的数据库,用它不仅可以处理结构化 数据而且更适合处理非结构化数据。 在这篇文章中我们简单地给大家介绍了结构化数据、非结构化数据以及半结构化数据的知识,其实现在很多的数据分析师都开始加大对非结构化数据的研究。由此可见,非结构化数据的 前景还是十分明朗的。

MongoDB入门经典

第一讲MongDB数据库的基本安装文件 https://www.sodocs.net/doc/0d16226289.html,/display/DOCS/Home MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo 使用C++开发。Mongo的官方网站地址是:https://www.sodocs.net/doc/0d16226289.html,/ 首先下载数据库的基本软件安装包,下载地址:https://www.sodocs.net/doc/0d16226289.html,/download 第二,新建目录“D:\MongoDB”,解压下载到的安装包,找到bin目录下面全部.exe文件,拷贝到刚创建的目录下。 第三,在“D:\MongoDB”目录下新建“data”文件夹,它将会作为数据存放的根文件夹。 配置Mongo服务端: https://www.sodocs.net/doc/0d16226289.html,/scotthernandez/mongo-seattle-java-development 打开CMD窗口,按照如下方式输入命令: > d: > cd D:\MongoDB > mongod --dbpath D:\MongoDB\data

就基本成功了 然后在浏览器中输入http://localhost:27017/ 显示以下网页You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number 然后就OK啦 第二讲关于在java平台下的mongodb的使用的操作 首先下载mongodb在java中的驱动库文件,下载地址分别为 https://https://www.sodocs.net/doc/0d16226289.html,/KentBeck/junit/downloads https://https://www.sodocs.net/doc/0d16226289.html,/mongodb/mongo-java-driver/downloads 第二部新建java工程添加库文件如图所示

WIN7 64位默认环境变量

WIN7 64位默认环境变量ALLUSERSPROFILE=C:\\ProgramData APPDATA=C:\\Users\\用户名\\AppData\\Roaming CommonProgramFiles=C:\\Program Files\\Common Files CommonProgramFiles(x86)=C:\\Program Files (x86)\\Common Files CommonProgramW6432=C:\\Program Files\\Common Files COMPUTERNAME=PC ComSpec=C:\\Windows\\system32\\cmd.exe FP_NO_HOST_CHECK=NO HOMEDRIVE=C: HOMEPATH=\\Users\\用户名 LOCALAPPDATA=C:\\Users\\用户名\\AppData\\Local LOGONSERVER=\\\\PC NUMBER_OF_PROCESSORS=2 OS=Windows_NT Path=C:\\ProgramFiles(x86)\\PHP\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\ System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files(x86)\\Windows7Master;C:\\ProgramFiles(x86)\\CommonFiles\\ThunderNetwork\\Ka nKan\\Codecs PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PHPRC=C:\\Program Files (x86)\\PHP\\ PROCESSOR_ARCHITECTURE=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 15 Stepping 13, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=0f0d ProgramData=C:\\ProgramData ProgramFiles=C:\\Program Files ProgramFiles(x86)=C:\\Program Files (x86) ProgramW6432=C:\\Program Files PROMPT=$P$G PSModulePath=C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\ PUBLIC=C:\\Users\\Public SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\\Windows TEMP=C:\\Users\\用户名\\AppData\\Local\\Temp TMP=C:\\Users\\用户名\\AppData\\Local\\Temp USERDOMAIN=pc USERNAME=用户名 USERPROFILE=C:\\Users\\用户名 windir=C:\\Windows

非结构化数据存储解决方案

1.非结构化数据存储 在上图中,描述了非结构化数据存储架构的基本组成部分,其中: 1. 文件存取统一接口,封装了对数据中心所以非结构化数据的读写操作接口。 2. Hadoop HDFS 负责对大文件的存储,以HDFS:为文件协议标准 3. HBase 通过维护一张文件表完成对小文件的存储,以HBase:为文件协议标识1.1文件存取统一接口 1.1.1 文件存储接口 对文件进行存储前,接口根据文件的大小和HDFS文件分块的配置大小进行比较,当文件超过设定大小时,接口认为该文件是大文件,直接分配到HDFS文件存储接口进行写入;否则当文件小与块大小时,根据系统维护的Hbase小文件存储通用存储表进行存储管理。

1. 对直接存储到HDFS的文件,则文件路径以HDFS为中心存储文件协议头,文件路径则根据该文件的业务属性做完文件的路径,文件名称保留原有名称,例如:HDFS://aaa/bbb.zip 2. 对通过Hbase管理的小文件,则文件路径以HBASE为中心存储文件协议头,文件路径不需要分文件夹,直接以文件的唯一标识标识即可,例如:HBASE://uuid 1.1.2 文件读取接口 文件读取时,通过识别URL,确定文件的存储方式,然后找到对应的存储接口获取文 件。

1.1Had oop HDFS存储接口 完成大文件的存储与读取接口操作。 1.2Hbase存储接口 文件通用存储表结构: 表存在两个列簇,default列簇负责存储基础属性信息,用一个单独的列簇存储图片内容。 HBase是采用面向列的存储模型,按列簇来存储和处理数据,即同一列簇的数据会连续存储。HBase在存储每个列簇时,会以Key-Value的方式来存储每行单元格(Cell)中的数据,形成若干数据块,然后把数据块保存到HFile中,最后把HFile保存到后台的HDFS 上。由于用单元格 (Cell)存储图片小文件的内容,上述存储数据的过程实际上隐含了把图片小文件打包的过程。默认情况下,HBase数据块限制为64KB。由于图片内容作为单元格(Cell)的值保存,其大小受制于数据块的大小。在应用中需根据最大图片大小对HBase数据

相关主题