如果您想了解noSQL数据库相关软件介绍和大数据存储时候,必须使用的知识,那么本篇文章将是您的不二之选。我们将深入剖析noSQL数据库相关软件介绍的各个方面,并为您解答大数据存储时候,必须使用的疑在这
如果您想了解noSQL数据库相关软件介绍和大数据存储时候,必须使用的知识,那么本篇文章将是您的不二之选。我们将深入剖析noSQL数据库相关软件介绍的各个方面,并为您解答大数据存储时候,必须使用的疑在这篇文章中,我们将为您介绍noSQL数据库相关软件介绍的相关知识,同时也会详细的解释大数据存储时候,必须使用的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- noSQL数据库相关软件介绍(大数据存储时候,必须使用)(nosql数据库在大数据技术体系中的作用是什么)
- AVAYA AEP运维之PostgreSQL数据库相关
- cmd 操作mysql数据库相关问题
- MFC 对MYSQL数据库相关操作
- MySQL数据库怎么实现存储时间
noSQL数据库相关软件介绍(大数据存储时候,必须使用)(nosql数据库在大数据技术体系中的作用是什么)
目前图数据库软件七种较为流行:Neo4J,Infinite Graph,DEX,InfoGrid,HypergraphDB,Trinity,AllegroGraph(http://tech.it168.com/a2012/0112/1302/000001302117_all.shtml)
• Neo4j - 开源的Java属性图形模型
• AllegroGraph,闭源,RDF-QuadStore
• HyergraphDB - 开源的Java超图模型
此外还有
• Sones - 闭源,关注于.NET
• Virtuoso - 闭源,关注于RDF
• Others like Filament、FlockDB等。
要想选择Nosql数据库,首先需要对其类型有所了解,目前Nosql数据库主要分析四大类型:文档型数据库、键值存储、列式存储和图数据库。作为Nosql数据库,它们都具备扩展性强、动态的数据库设计等特点。但每种类型又都有各自的特性。Gartner分析师Nick Heudecker表示:“要选择一种Nosql数据库,你需要先了解自己的数据,其次了解你的应用需要如何使用这些数据。”
文档数据库适合多种数据类型
例如,文档数据库经常用于内容管理系统,收集和处理来自网页和移动应用的数据,比如应用监控。顾名思义,文档数据库以类似文档的结构存储数据,可以采用无模式的形式。MongoDB、CouchDB、Couchbase Server和MarkLogic是典型的文档数据库。
Simone介绍到,花旗集团使用MongoDB解决了网络金融应用的数据复制问题。最开始,这一应用是建立在关系型数据库上的,但是由于数据结构多种多样,所以关系型数据库处理起来特别慢,而且经常出错。“我们很快认识到,数据格式已经成为一种挑战。”
而对于高速演进的应用程序,MongoDB特别适合支持这种动态模式。Simone表示使用MongoDB以后,他们可以对任何数据进行建模。而且,建模速度也快了很多。开发团队只需要4个月就可以构建出预生产模型。
键值数据库简化IT
诸如Redis、Aerospike和Riak等键值数据库是形式最简单的Nosql软件。数据中的每一个值都有专门的键(key)与之匹配,能够实现针对相对简单数据集的超快应用性能。美国咨询和技术服务供应商Caserta Concepts总裁Joe Caserta表示:“键值存储是轻量级的,用户可以实现秒级的浏览和查询。”
Flywheel软件公司是国外提供打车软件的公司,它采用Basho开发Riak软件支持移动应用。Flywheel的前首席架构师Cuyler Jones介绍到,他还在任的时候,数据库还可以通过扩展应对峰值,不过因为Riak的高可用性和对持续的数据访问的支持,公司已经采用了Riak。
列式数据库应对海量数据
列式存储在拥有大量列的表中存储数据,在处理大数据集的时候,就可以具备更高的性能和扩展性。通常应用于互联网搜索、其他大规模的网页应用和PB级的分析应用,典型的列式数据库包括Accumulo、Cassandra和HBase
2012年,Ancestry.com推出的DNA匹配应用采用的就是列式存储。开发经理Jeremy Pollack介绍到,公司是家族历史数据的线上供应商,公司在计算DNA的时候采用的HBase+Hadoop的架构,顾客可以通过他们网站追溯自己的家族背景、地理起源,并且寻找亲属。
Pollack说到,HBase应用起来很麻烦(+本站微信networkworldweixin),要想获得理想的性能,需要大量的调试。HBase有上百万个按钮,根本就是个体力活。不过,应用了Nosql技术,Ancestry能够快速匹配70万新数据,并存储了大量的DNA样本。
图数据库表现数据关系
图数据库,以InfiniteGraph和Neo4j为代表,以类似于图的结构存储数据,便于探索数据之间的联系,可应用于产品推荐和社交网络。英国医疗网站HealthUnlocked的技术负责人Alex Trofymenko表示,图数据库可以用来匹配不同人之间和人与兴趣之间的关系。
Trofymenko表示,公司使用的是Neo技术公司提供的Neo4j。“我们可以从图数据库中获得很多信息,比如某个用户更关注糖尿病问题还是更关注体育锻炼”这对于网站来说很重要,我们可以在成百上千的搜索记录中找到用户和相关健康问题的关系,搭建一个数据平台,帮助用户找到合适的治疗方法和保健服务。
转自网界网:http://software.cnw.com.cn/software-database/htm2014/20140817_310141.shtml
AVAYA AEP运维之PostgreSQL数据库相关
由于AEP EPM所有相关的报表数据(应用运行日志,呼叫清单,会话清单),配置信息等都存在本地Postgresql上,了解Postgresql的相关基本使用方法,有助于日常运维能力的提升。本篇主要总结如何开启本地登陆,开启远端登陆,基本命令,数据备份和清理。
如何开启本地和远端登陆
在EPM安装的过程中,会把Postgresql也一并安装掉,过程中会提示输入用户名postgres的密码,以及创建一个报表用户。当时当你本地使用Postgresql去登陆数据库时,始终登陆不上;通过Postgresql客户端也始终登陆不上,需要进行如下操作来开启本地和远端登陆。
[root@vp142VP-Tools]#su-postgres -bash-4.1$ls 9.0datapgstartup.logsqlscripts -bash-4.1$cddata/ -bash-4.1$vipg_hba.conf//找到如下部分,修改第一条记录(运行本地登陆)以及新增一条记录(运行远端登陆,记得先备份该配置文件)
改完后:wq保存,然后重启Postgresql服务。
-bash-4.1$exit logout [root@vp142VP-Tools]#servicepostgresqlrestart
本地和远端登陆验证
[root@vp142VP-Tools]#psql-h127.0.0.1-Upostgres-dVoicePortal Passwordforuserpostgres: psql(9.0.15) Type"help"forhelp. VoicePortal=#//本地登陆成功
远端登陆:下载Postgresql客户端,配置
登陆成功:
Postgresql 常用命令
VoicePortal-#\l//输出所有数据库 listofdatabases Name|Owner|Encoding|Collation|Ctype|Accessprivil eges -------------+----------+----------+-------------+-------------+---------------- ------- VoicePortal|postgres|UTF8|en_US.UTF-8|en_US.UTF-8| postgres|postgres|UTF8|en_US.UTF-8|en_US.UTF-8| template0|postgres|UTF8|en_US.UTF-8|en_US.UTF-8|=c/postgres VoicePortal-#\cpostgres//切换到postgres库 YouareNowconnectedtodatabase"postgres". postgres-# VoicePortal-#\d//显示当前库有哪些表 listofrelations Schema|Name|Type|Owner --------+-------------------------------+----------+---------- public|alarmcode|table|postgres public|alarmcodelistenerlink|table|postgres public|alarmcodelistenerlinkdefault|table|postgres public|alarmhistory|table|postgres public|alarmlistener|table|postgres public|alarmnotify|table|postgres 。。。。。。 VoicePortal-#\dcdr//查看cdr表的结构 Table"public.cdr" Column|Type|Modifi ers --------------------+-----------------------------+----------------------------- --------------------------- calltimestamp|timestampwithouttimezone| recordid|integer| sessionid|charactervarying| callid|charactervarying| ucid|charactervarying| portid|integer| 创建数据库: createdatabase[数据库名]; 删除数据库: dropdatabase[数据库名]; *重命名一个表: altertable[表名A]renameto[表名B]; *删除一个表: droptable[表名]; *在已有的表里添加字段: altertable[表名]addcolumn[字段名][类型]; *删除表中的字段: altertable[表名]dropcolumn[字段名]; *重命名一个字段: altertable[表名]renamecolumn[字段名A]to[字段名B]; *给一个字段设置缺省值: altertable[表名]altercolumn[字段名]setdefault[新的默认值]; *去除缺省值: altertable[表名]altercolumn[字段名]dropdefault; 在表中插入数据: insertinto表名([字段名m],[字段名n],......)values([列m的值],[列n的值],......); 修改表中的某行某列的数据: update[表名]set[目标字段名]=[目标值]where[该行特征]; 删除表中某行数据: deletefrom[表名]where[该行特征]; deletefrom[表名];--删空整个表 创建表: createtable([字段名1][类型1];,[字段名2][类型2],......<,primarykey(字段名m,字段名n,...)>;); \copyright显示Postgresql的使用和发行条款 \encoding[字元编码名称] 显示或设定用户端字元编码 \h[名称]sql命令语法上的说明,用*显示全部命令 \prompt[文本]名称 提示用户设定内部变数 \password[USERNAME] securelychangethepasswordforauser \q退出psql
数据库备份与恢复
Postgresql数据备份: [root@vp142VP-Tools]#pg_dump-UpostgresVoicePortal>/cpic/craft/postgresdata .20160425.sql Password://输入完密码后,等待备份完毕。 [root@vp142VP-Tools]#ll/cpic/craft/postgresdata.20160425.sql//查看备份文件 -rw-r--r--1rootroot4007564Apr2516:57/cpic/craft/postgresdata.20160425.sql Postgresql数据恢复: 先清空数据库: [root@vp142VP-Tools]#bashPurgeReportDataLocalDB Doyouwishtopurgeallyourreportdata? Pressentertocontinue,orpresscontrol-Ctoabortthisutility PurgingSDRtable... PurgingCDRtable... PurgingVPAppLogtable... PurgingVPPerformancetable... Purgingcompleted! ----------------------------------------------------- 开始恢复数据: [root@vp142VP-Tools]#psql-UpostgresVoicePortal</cpic/craft/postgresdata.20160425.sql Passwordforuserpostgres: lowrite --------- 535 (1row) lo_close ---------- 0 (1row) COMMIT 。。。。。。
cmd 操作mysql数据库相关问题
mysqlcmd操作数据库
输入show database 不是应该显示所有数据库么,为什么下面只出现箭头?大神求解!
MFC 对MYSQL数据库相关操作
记得看过有人说,现在的软件基本上都是连着数据库的,如果一个软件没有跟数据库相连,基本没什么作用。虽然这种说法略显片面,但数据库之于软件的重要也是毋庸置疑的。 MFC连接数据库应该不算是什么新鲜的命题了,方法是有好几种的,本人试了下,感觉利用MyS
记得看过有人说,现在的软件基本上都是连着数据库的,如果一个软件没有跟数据库相连,基本没什么作用。虽然这种说法略显片面,但数据库之于软件的重要也是毋庸置疑的。
MFC连接数据库应该不算是什么新鲜的命题了,方法是有好几种的,本人试了下,感觉利用MySQL提供的C语言API来进行操作蛮方便的,所以在此记录下相关的操作。
要用MySQL提供的C语言API,首先要包含API的头文件目录,也就是在MFC工程属性中的“包含目录”下添加MySQL安装目录的“include”文件夹。因为API是以动态链接库的形式打包的,所以还要在MFC工程属性中的“库目录”下添加MySQL安装目录的“lib”文件夹,结果如下图所示:
因为是动态链接库,所以在做完上面的配置后,要将MySQL安装目录下的lib
#include "winsock.h"//因为数据库是通过网络连接的,必须包含网络相关头文件 #include "mysql.h"//这个没什么好说的,mysql头文件自然要包含 #pragma comment(lib,"libmySQL.lib")//附加依赖项,也可以在工程属性中设置
做完上面的配置,我们已经可以正常的使用MySQL提供的API了,下面分门别类的来讲讲具体的操作。
连接数据库:
MYSQL m_sqlCon; MYSQL_RES* res;//记录函数返回 MYSQL_ROW row;//记录行数 mysql_init(&m_sqlCon);//初始化数据库对象 if (!mysql_real_connect(&m_sqlCon, "localhost", "root", "123", "test", 3306, NULL, 0))//localhost:服务器地址,可以直接填入IP;root:账号;123:密码;test:数据库名;3306:网络端口 { AfxMessageBox(_T("数据库连接失败!")); return; } else//连接成功则继续访问数据库,之后的相关操作代码基本是放在这里面的 { AfxMessageBox(_T("数据库连接成功!")); } mysql_close(&m_sqlCon);//关闭Mysql连接
得到数据库中表数据:
mysql_query(&m_sqlCon, "SET NAMES ''GB2312''");//设置数据库字符格式,解决中文乱码问题 if (mysql_real_query(&m_sqlCon, "select * from 物料属性", (unsigned long)strlen("select * from 物料属性")))// 查询数据库中的"物料属性"表 {return;} res = mysql_store_result(&m_sqlCon);//得到存储结果集 if (NULL == res)//如果为空则返回 { return; } int listrow = 0; while (row = mysql_fetch_row(res))//重复读取行,把数据放入列表中,直到row为NULL { for (int rols = 0; rols InsertItem(listrow, myreaddata);//添加第一个* } else { list->SetItemText(listrow, rols, myreaddata); } } listrow++; }
mysql_query(&m_sqlCon, "SET NAMES ''GB2312''");//设置数据库字符格式,解决中文乱码问题 char *mysqlstatements = "DELETE 物料属性.*FROM 物料属性";//sql操作语句 mysql_real_query(&m_sqlCon, mysqlstatements, (unsigned long)strlen(mysqlstatements));//清空"物料属性"表
插入数据表内容:
sprintf_s(mysqlstatements, "INSERT INTO 物料属性(物料编号,物料名称,所属类别,计量单位,样品单价,批量单价) value(''%s'', ''%s'', ''%s'', ''%s'', ''%s'', ''%s'')", mysqlinsertpoint[0], mysqlinsertpoint[1], mysqlinsertpoint[2], mysqlinsertpoint[3], mysqlinsertpoint[4], mysqlinsertpoint[5]); //sql操作语句 mysql_real_query(&m_sqlCon, mysqlstatements, (unsigned long)strlen(mysqlstatements));//插入数据到"物料属性"表
MySQL数据库怎么实现存储时间
1.切记不要用字符串存储日期
字符串占用的空间更大!
字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。
2.Datetime 和 Timestamp 之间抉择
Datetime 和 Timestamp 是 MySQL 提供的两种比较相似的保存时间的数据类型。
他们两者究竟该如何选择呢?
通常我们都会首选 Timestamp
2.1 DateTime 类型没有时区信息的
DateTime 类型是没有时区信息的(时区无关)
当你的时区更换之后,比如你的服务器更换地址或者更换客户端连接时区设置的话,就会导致你从数据库中读出的时间错误。
Timestamp 和时区有关。
Timestamp 类型字段的值会随着服务器时区的变化而变化,自动换算成相应的时间,说简单点就是在不同时区,查询到同一个条记录此字段的值会不一样。
下面实际演示一下!
建表 SQL 语句:
CREATE TABLE `time_zone_test` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `date_time` datetime DEFAULT NULL, `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入数据:
INSERT INTO time_zone_test(date_time,time_stamp) VALUES(NOW(),NOW());
查看数据:
select dsqlate_time,time_stamp from time_zone_test;
结果:
+---------------------+---------------------+| date_time | time_stamp |+---------------------+---------------------+| 2020-01-11 09:53:32 | 2020-01-11 09:53:32 |+---------------------+---------------------+
修改当前会话的时区:
set time_zone='+8:00';
再次查看数据:
+---------------------+---------------------+
| date_time | time_stamp |
+---------------------+---------------------+
| 2020-01-11 09:53:32 | 2020-01-11 17:53:32 |
+---------------------+---------------------+
扩展: 一些关于 MySQL 时区设置的一个常用 sql 命令
1. 查看当前会话时区
SELECT @@session.time_zone;
2. 设置当前会话时区
SET time_zone = 'Europe/Helsinki'; SET time_zone = "+00:00";
3. 数据库全局时区设置
SELECT @@global.time_zone;
4. 设置全局时区
SET GLOBAL time_zone = '+8:00'; SET GLOBAL time_zone = 'Europe/Helsinki';
2.2 DateTime 类型耗费空间更大
Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗费 8 个字节的存储空间。然而,这种方法也引发了一个问题,即 Timestamp 的时间范围更为有限。
DateTime :1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
Timestamp: 1970-01-01 00:00:01 ~ 2037-12-31 23:59:59
Timestamp 在不同版本的 MySQL 中有细微差别。
3.再看 MySQL 日期类型存储空间
下图是 MySQL 5.6 版本中日期类型所占的存储空间:
可以看出 5.6.4 之后的 MySQL 多出了一个需要 0 ~ 3 字节的小数位。DataTime和Timestamp在存储时会占用不同的存储空间。
为了方便,本文我们还是默认 Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗费 8 个字节的存储空间。
4.数值型时间戳是更好的选择吗?
很多时候,我们也会使用 int 或者 bigint 类型的数值也就是时间戳来表示时间。
这种存储方式的具有 Timestamp 类型的所具有一些优点,并且使用它的进行日期排序以及对比等操作的效率会更高,跨系统也很方便,毕竟只是存放的数值。缺点也很明显,就是数据的可读性太差了,你无法直观的看到具体时间。
时间戳的定义如下:
时间戳的定义是从一个基准时间开始算起,这个基准时间是「1970-1-1 00:00:00 +0:00」,从这个时间开始,用整数表示,以秒计时,随着时间的流逝这个时间整数不断增加。这样一来,我只需要一个数值,就可以完美地表示时间了,而且这个数值是一个绝对数值,即无论的身处地球的任何角落,这个表示时间的时间戳,都是一样的,生成的数值都是一样的,并且没有时区的概念,所以在系统的中时间的传输中,都不需要进行额外的转换了,只有在显示给用户的时候,才转换为字符串格式的本地时间。
数据库中实际操作:
mysql> select UNIX_TIMESTAMP('2020-01-11 09:53:32'); +---------------------------------------+ | UNIX_TIMESTAMP('2020-01-11 09:53:32') | +---------------------------------------+ | 1578707612 | +---------------------------------------+ 1 row in set (0.00 sec) mysql> select FROM_UNIXTIME(1578707612); +---------------------------+ | FROM_UNIXTIME(1578707612) | +---------------------------+ | 2020-01-11 09:53:32 | +---------------------------+ 1 row in set (0.01 sec)
5.总结
推荐 Timestamp,原因是数值表示时间不够直观
每种方式都有各自的优势,根据实际场景才是王道。下面再对这三种方式做一个简单的对比,以供大家实际开发中选择正确的存放时间的数据类型:
6.设置mysql date类型字段默认值支持0000格式
[mysqld] sql-mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
以上就是MySQL数据库怎么实现存储时间的详细内容,更多请关注php中文网其它相关文章!
关于noSQL数据库相关软件介绍和大数据存储时候,必须使用的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于AVAYA AEP运维之PostgreSQL数据库相关、cmd 操作mysql数据库相关问题、MFC 对MYSQL数据库相关操作、MySQL数据库怎么实现存储时间的相关知识,请在本站寻找。
本文标签: