• 关于

    网络 速度 算快的

    的搜索结果

回答

Re回7楼ustccyf的帖子 不至于几亿条数据就跑不起来。小看大伙们的机器了。哈哈 引用第10楼一婷于2014-04-25 13:47发表的 回 7楼(ustccyf) 的帖子 : 亲,如果down下几亿条数据,你本机跑不起来的哈 ------------------------- 回13楼算者的帖子 几亿条数据的规模不至于要上升到所有云服务提供商吧。如果单看运算速度,当然是你们的速度快了。如果加上网络环境因素、编码等问题,谁快就不好说了。 可能的话,给参赛者多些选择。毕竟外部连你们服务器,远不如你们内部来的快,卡是必然的。
数据分析 2019-12-02 03:10:12 0 浏览量 回答数 0

回答

硬盘读写速度现在怎么都达不到千兆, ssd读也达不到。(特殊设备除外,貌似看到新闻说有实验室的产品读写速度可以过G) 不过可以采取,写入缓冲的方式,数据先保存在内存,再写入到硬盘,不过缺点怕掉电。 读的话,采取分布式的读,可以达到很高的吞吐量。 网络传输的话,问题在于怎么保证传输稳定和不出错######这对内存的要求很高啊,而且还不能耽误其他程序对内存的使用,这个内存我觉得应该很大吧###### 引用来自“十一文”的答案 硬盘读写速度现在怎么都达不到千兆, ssd读也达不到。(特殊设备除外,貌似看到新闻说有实验室的产品读写速度可以过G) 不过可以采取,写入缓冲的方式,数据先保存在内存,再写入到硬盘,不过缺点怕掉电。 读的话,采取分布式的读,可以达到很高的吞吐量。 网络传输的话,问题在于怎么保证传输稳定和不出错 这么说来, 在顺序存取方面 , 网络传输速度相对与硬盘 io 速度还是有优势的,不知道这么理解是否成立。 因为机放内部设备间千兆网卡很常见,传输速度相当快,并且成本相对硬盘少许多。 ######看贴不跟帖,帖子要沉了。需要顶。 无论对错。发表点个人观点也好。不能让它沉。 ###### "千兆网卡很常见", 這裡 “ 千兆” 是指1000M bits, 大概也就100M Bytes。 Intel SSD 520 Sequential Read 已经可高达550M Bytes per second, 顺序写可高达275M Bytes per second.######回复 @十一文 : 现在的HBA卡4G的已经很通用了,好像12G的都出来了,一般服务器都有好几个接口的,再来个负载均很啥的,网络传输不是问题######汗 查了哈 还真是这样。擦我out了!######网络允许帮定双网卡。所以,网络传输可以更快点,相对来说,速度提升技术性难度小点。 磁盘阵列是否回更好? 光线通讯用的网卡是否会更快点。 ###### 顺便提点应用。 是这样的, 排序在信息处理方面很常见。 无论用什么算法。都是在一个相对平等的环境中。 现实中应用,比如1g内容的排序和1T内容排序难点还是数据交换上。 1g可以全部加载进内存玩。1T就要涉及到信息交换了。如果一个系统界面,把存储信息部分扩展到近乎无限空间大小。 就好比内存数据交换比磁盘数据交换要快许多。 比如1T大小数据做排序。 只要一个设备顺序读取数据,按照开头部分把数据通过网络分发给N 台机器,处理除了开头部分数据,后面的数据排序。这样就可以N多设备协同工作。效率达到 1+1 > 2 的目的。 否则如果是1台设备需要 加载数据,排序, 临时存储, 加载另外数据,处理,临时存储,加载.... 汇总分结果,获得总结果。 1台设备这么处理,做了很多重复劳动。如果网络够快 多台设备 避免了重复加载。 达到 1+1>2######回复 @十一文 : 差不多的意思。######hadoop是把数据分成分成多个部分,每部分各自处理结果,然后汇总处理。即把你的1t的数据分成n份,然后每份分发给不同机器处理。然后汇总结果。不知道适用你的场景不?######貌似这中数据分析,现在流行用hadoop。楼主可以调研哈######这么说不好理解。形象一点说一下:假设有1000个数据样本,每个样本里有1T条数据内容。 一知每个样本内数据条目重复率为0.001%.目的,找出这1000个样本内,每个样本中重复的样本。并统计所有样本中重复的次数。 这个如果算复杂运算,不如说是大数据处理。 假设 每个设备 一次能加载1G条数据。######硬盘技术感觉好多年都在原地踏步没有质的飞跃啊###### @johnzhang68 毕竟转速有影响######磁性硬盘在容量方面还是有明显的飞跃。速度方面提高得慢一些。######或许未来,存储虚拟化是条路子。  数据处理和数据交互关系密切。 以数据处理为目的,建立多系统群集方式在处理上或许会比高计算系统群集更有优势。 ######又没落了。顶起 ######没有试过,关注一下######再看了哈貌似你真的很需要hadoop
kun坤 2020-06-07 22:18:40 0 浏览量 回答数 0

问题

服务器1M带宽同时能承受多少人在线

下面根据影响因素计算下1M带宽能同时承受多少人在线(以网络状况良好为前提) 1、 打开网站8秒原则; 2、 评判的只是:用户从云服务器下载文件的速度; 3、 页面的标...
bcaiwa 2019-12-01 21:52:15 13405 浏览量 回答数 10

问题

【云服务器分享】网站访问速度快才是硬道理

                                                                         本文章摘自站长之家          当我们精心设计网站页面,然后一字一句认真...
dreamdoo 2019-12-01 20:29:01 84108 浏览量 回答数 23

问题

最新进展——也许还是虚拟机惹的祸

继续说抱歉!今天虽然在访问次高峰期访问速度表现不错,但是在访问最高峰期还是没扛得住。 继续努力解决问题!这是我们唯一的选择。“他说风雨中这点痛算什么,擦干泪,不要问为...
cnblogs 2019-12-01 21:11:52 11797 浏览量 回答数 13

回答

Re为什么要对我的服务器的网络进行限速? 我靠!多谢二位提醒!算错了! 应该128KBytes/s才是对的! 阿里云,还我带宽来!偷了我95%的带宽,我靠! ------------------------- Re为什么要对我的服务器的网络进行限速? 阿里!你们自称富可敌国!可还偷我这点带宽!说出去不怕别人笑话吗? ------------------------- Re为什么要对我的服务器的网络进行限速? qilu, 照这么说我如果上传,应该网速应该没有限制,更快才对是吧?可是我才有12KB/s呀? ------------------------- Re为什么要对我的服务器的网络进行限速? qilu,我是昨天用ftp工具上传我的程序到服务器的时候发现这个问题的,照你这么说,这种上传根本就不会有限制,应该更快才对!我今晚就用一些专业工具测试一下我家中的PC和服务器连接的速度,包括上传和下载。到时候把图贴出来,我家里的宽带是100Mbps,主要是现实结果和所宣称的差距太夸张了 ------------------------- Re为什么要对我的服务器的网络进行限速? kideny,我是自己的服务器,现在在上班忙,晚上再给你们更充足的数据。多谢 ------------------------- Re为什么要对我的服务器的网络进行限速? qilu, kideny, 今晚又使用了一下,并且用工具测了一下,速度明显比昨天晚上有了很大的提高。并且测试出来的结果和你们宣称的结果是一样的。从服务器下载的速度确实是准确的1Mbps,同时上传的速度略快。今晚上传程序的速度明显感觉比昨晚快,单线程可以达到500kbps,昨晚是50kpbs呀! 下面是我的测试工具的输出结果: [ ID] Interval           Transfer     Bandwidth [  4]   0.00-1.00   sec  35.4 KBytes   290 Kbits/sec                   [  6]   0.00-1.00   sec  25.5 KBytes   208 Kbits/sec                   [  8]   0.00-1.00   sec  25.5 KBytes   208 Kbits/sec                   [ 10]   0.00-1.00   sec  25.5 KBytes   208 Kbits/sec                   [ 12]   0.00-1.00   sec  25.5 KBytes   208 Kbits/sec                   [SUM]   0.00-1.00   sec   137 KBytes  1.12 Mbits/sec                   - - - - - - - - - - - - - - - - - - - - - - - - - [  4]   1.00-2.00   sec  24.0 KBytes   197 Kbits/sec                   [  6]   1.00-2.00   sec  29.7 KBytes   243 Kbits/sec                   [  8]   1.00-2.00   sec  29.7 KBytes   243 Kbits/sec                   [ 10]   1.00-2.00   sec  29.7 KBytes   243 Kbits/sec                   [ 12]   1.00-2.00   sec  17.0 KBytes   139 Kbits/sec                   [SUM]   1.00-2.00   sec   130 KBytes  1.07 Mbits/sec                   - - - - - - - - - - - - - - - - - - - - - - - - - [  4]   2.00-3.00   sec  33.9 KBytes   278 Kbits/sec                   [  6]   2.00-3.00   sec  36.8 KBytes   301 Kbits/sec                   [  8]   2.00-3.00   sec  17.0 KBytes   139 Kbits/sec                   [ 10]   2.00-3.00   sec  17.0 KBytes   139 Kbits/sec                   [ 12]   2.00-3.00   sec  32.5 KBytes   266 Kbits/sec                   [SUM]   2.00-3.00   sec   137 KBytes  1.12 Mbits/sec                   - - - - - - - - - - - - - - - - - - - - - - - - - [  4]   3.00-4.00   sec  36.8 KBytes   301 Kbits/sec                   [  6]   3.00-4.00   sec  25.5 KBytes   209 Kbits/sec                   [  8]   3.00-4.00   sec  24.0 KBytes   197 Kbits/sec                   [ 10]   3.00-4.00   sec  21.2 KBytes   174 Kbits/sec                   [ 12]   3.00-4.00   sec  15.6 KBytes   127 Kbits/sec                   [SUM]   3.00-4.00   sec   123 KBytes  1.01 Mbits/sec                   每次是五个线程跑,单位时间内总共的下传速度几乎都是1Mbits/s。我不奢求你们多给我带宽,但是也不要偷走我的带宽,我会随时进行测试的,呵呵! 多谢了! ------------------------- 回14楼chengwei的帖子 还行!只要没有偷走带宽的现象发生,我的1Mbps的速度也很快 ------------------------- 回15楼holdb的帖子 跑多线程可以测出网络带宽的上限 ------------------------- 回18楼零云科技的帖子 我自己的是100Mbps ------------------------- 回20楼cowere的帖子 我在国外,光纤100Mbps,实测上传70/90Mbps,下载90Mbps
钟clock 2019-12-01 23:36:30 0 浏览量 回答数 0

回答

回 2楼(ivmmff) 的帖子 版主在哪个省,我在湖南,正好就是PING值140ms那个地方,网站打开很慢很慢 ------------------------- 请湖南、湖北、四川、陕西的朋友帮我测试一下,这几个省的PING值都特别高 ------------------------- 回 6楼(ivmmff) 的帖子 浙江是阿里核心区,不慢是正常的,我现在在湖南,好慢的,话说湖南和广东是邻省,网络咋这么慢呢 ------------------------- 回 6楼(ivmmff) 的帖子 我就一个多小时前网站打开速度飞快,首页打开才0.4-0.5s,现在我在湖南到服务器PING值140ms左右,慢得龟速 ------------------------- 回 11楼(新手站长20) 的帖子 你也是深圳地域的服务器吗? ------------------------- 回 17楼(ivmmff) 的帖子 提交工单处理中,版主的网站还可以,可能网页比较简洁吧 这次好像是网络故障,带宽需求大的网站,打开就极慢了 ------------------------- 凌晨1点太困了,就睡了,工程师还在努力检查中...今早起来网站就恢复了,全国PING值都恢复正常了 ------------------------- 回 21楼(ivmmff) 的帖子 恢复正常了,速度很快,不过现在准备换机房了,深圳机房不稳定,感觉是不成熟的产品拿来把用户当小白鼠,工程师说线路还要优化,但是不给任何赔偿,态度强硬,所以决定换到杭州机房去,线路不稳定就不会是首选,准备买深圳地域ECS的朋友谨慎入手,还是建议入手最早最成熟的杭州地域ECS ------------------------- 回 23楼(ivmmff) 的帖子 不用深圳机房是对的,因为现在深圳杭州价格是一样的,但是深圳机房线路不成熟,刚开始深圳机房售卖时打折,骗新用户进入,实际新机房并没有杭州机房成熟,但阿里云没有说明,让重视稳定性的用户没有注意到,深圳线路没有杭州线路优化,我是湖南的,本来湖南和广东是邻省,别家广东机房到湖南的PING值是20ms+,而阿里云深圳到湖南是30ms+,我怀疑线路是绕到杭州再到湖南的(杭州到阿里云深圳PING值是20ms+),而不是广东直接连到湖南 我的网站本身打开速度就很快,0.5s已经是算快的速度了 ------------------------- 回 27楼(oec.liao) 的帖子 我两台深圳ECS都申请退款了,准备买杭州的,新上线的上海也在考虑,就是怕新产品不成熟
一如繁星 2019-12-02 03:13:48 0 浏览量 回答数 0

回答

国内防泄密系统常用的加密算法有三种,IDEA 算法、RSA算法、AES算法,加密强度来讲,AES算法加密强度最高。IDEA算法IDEA算法属于对称加密算法,对称加密算法中,数据加密和解密采用的都是同一个密钥,因而其安全性依赖于所持有密钥的安全性。 目前最常见的对称加密算法为数据加密标准DES算法,但传统的DES算法由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。欧洲数据加密标准IDEA等,目前加密强度最高的对称加密算法是128位的DES加密算法。对称加密算法的主要优点是加密和解密速度快,加密效率高,且算法公开.缺点是实现密钥的秘密分发困难,在大量用户的情况下密钥管理复杂,而且无法完成身份认证等功能,不便于应用在网络开放的环境中。 由于加密算法是公开的,所以被破解的风险比较高。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高、被破解风险高。RSA算法RSA算法是非对称加密算法,非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适用于对少量数据进行加密。对称加密算法、非对称加密算法和不可逆加密算法可以分别应用于数据加密、身份认证和数据安全传输。RSA算法是建立在大数分解和素数检测的理论基础上。RSA密钥的产生过程:独立地选取两个互异的大素数p和q(保密)。计算n=p×q(公开),则ф(n)=(p-1)*(q-1)(保密)随机选取整数e,使得1<e<ф(n)并且gcd(ф(n),e)=1(公开)计算d,d=e-1mod(ф(n))保密。RSA私有密钥由{d,n},公开密钥由{e,n}组成RSA的加密/解密过程:首先把要求加密的明文信息M数字化,分块;然后,加密过程:C=Me(mod n)解密过程:M=Cd(mod n)非对称密钥加密体制的优点与缺点:解决了密钥管理问题,通过特有的密钥发放体制,使得当用户数大幅度增加时,密钥也不会向外扩散;由于密钥已事先分配,不需要在通信过程中传输密钥,安全性大大提高;具有很高的加密强度。与对称加密体制相比,非对称加密体制的加密、解密的速度较慢、被破解风险较小。AES加密算法AES加密算法属于对称加密算法, 对称加密算法的特征是加密过程中需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据需要密钥才能解密。1997年4月15日,美国国家标准和技术研究所NIST发起了征集AES算法的活动,并成立了专门的AES工作组,目的是为了确定一个非保密的,公开披露的,全球免费使用的分组密码算,法用于保护下一世纪政府的敏感信息,并希望成为秘密和公开部门的数据加密标准.1997年9月12日,在联邦登记处公布了征集AES候选算法的通告.AES的基本要求是比三重DES快而且至少和三重DES一样安全,分组长度128比特,密钥长度为128/192/256比特.1998年8月20日,NIST召开了第一次候选大会,并公布了15个候选算法.1999年3月22日举行了第二次AES候选会议,从中选出5个.AES将成为新的公开的联邦信息处理标准(FIPS--Federal Information Processing Standard),用于美国政府组织保护敏感信息的一种特殊的加密算法.美国国家标准技术研究所(NIST)预测AES会被广泛地应用于组织,学院及个人.入选AES的五种算法是MARS,RC6,Serpent,Twofish,Rijndael.2000年10月2日,美国商务部部长NormanY. Mineta宣布,经过世界著名密码专家之间的竞争,Rijndael数据加密算法最终获胜.为此而在全球范围内角逐了数年的激烈竞争宣告结束.这一新加密标准的问世将取代DES、RSA数据加密标准,成为21世纪保护国家敏感信息的高级算法。与DES、RSA加密算法相比,AES加密算法的优点为加解密的速度更快、加密强度最高、且不占用硬件资源。 随着信息化的高速发展,人们对信息安全的需求接踵而至,人才竞争、市场竞争、金融危机、敌特机构等都给企事业单位的发展带来巨大风险,内部窃密、黑客攻击、无意识泄密等窃密手段成为了人与人之间、企业与企业之间、国与国之间的安全隐患。市场的需求、人的安全意识、环境的诸多因素促使着我国的信息安全高速发展,信息安全经历了从传统的单一防护如防火墙到信息安全整体解决方案、从传统的老三样防火墙、入侵检测、杀毒软件到多元化的信息安全防护、从传统的外部网络防护到内网安全、主机安全等。传统数据加密技术分析信息安全传统的老三样(防火墙、入侵检测、防病毒)成为了企事业单位网络建设的基础架构,已经远远不能满足用户的安全需求,新型的安全防护手段逐步成为了信息安全发展的主力军。例如主机监控、慧点科技文档加密等技术。在新型安全产品的队列中,主机监控主要采用外围围追堵截的技术方案,虽然对信息安全有一定的提高,但是因为产品自身依赖于操作系统,对数据自身没有有效的安全防护,所以存在着诸多安全漏洞,例如:最基础的手段拆拔硬盘、winpe光盘引导、USB引导等方式即可将数据盗走,而且不留任何痕迹;此技术更多的可以理解为企业资产管理软件,单一的产品无法满足用户对信息安全的要求。文档加密是现今信息安全防护的主力军,采用透明加解密技术,对数据进行强制加密,不改变用户原有的使用习惯;此技术对数据自身加密,不管是脱离操作系统,还是非法脱离安全环境,用户数据自身都是安全的,对环境的依赖性比较小。市面上的文档加密主要的技术分为磁盘加密、应用层加密、驱动级加密等几种技术,应用层加密因为对应用程序的依赖性比较强,存在诸多兼容性和二次开发的问题,逐步被各信息安全厂商所淘汰。当今主流的两大数据加密技术我们所能常见到的主要就是磁盘加密和驱动级解密技术:全盘加密技术是主要是对磁盘进行全盘加密,并且采用主机监控、防水墙等其他防护手段进行整体防护,磁盘加密主要为用户提供一个安全的运行环境,数据自身未进行加密,操作系统一旦启动完毕,数据自身在硬盘上以明文形式存在,主要靠防水墙的围追堵截等方式进行保护。磁盘加密技术的主要弊端是对磁盘进行加密的时间周期较长,造成项目的实施周期也较长,用户一般无法忍耐;磁盘加密技术是对磁盘进行全盘加密,一旦操作系统出现问题。需要对数据进行恢复也是一件让用户比较头痛的事情,正常一块500G的硬盘解密一次所需时间需要3-4个小时;磁盘加密技术相对来讲真正要做到全盘加密还不是非常成熟,尤其是对系统盘的保护,至今市面上的主要做法是对系统盘不做加密防护,而是采用外围技术进行安全访问控制,大家知道操作系统的版本不断升级,微软自身的安全机制越来越高,人们对系统的控制力度越来越低,尤其黑客技术层层攀高,一旦防护体系被打破,所有一切将暴露无疑。另外,磁盘加密技术是对全盘的信息进行安全管控,其中包括系统文件,对系统的效率性能将大大影响。驱动级技术是当今信息加密的主流技术,采用进程+后缀的方式进行安全防护,用户可以根据企事业单位的实际情况灵活配置,对重要的数据进行强制加密,大大提高了系统的运行效率。驱动级加密技术与磁盘加密技术的最大区别就是驱动级技术会对用户的数据自身进行保护,驱动级加密采用透明加解密技术,用户感觉不到系统的存在,不改变用户的原有操作,数据一旦脱离安全环境,用户将无法使用,有效提高了数据的安全性;另外驱动级加密技术比磁盘加密技术管理可以更加细粒度,有效实现数据的全生命周期管理,可以控制文件的使用时间、次数、复制、截屏、录像等操作,并且可以对文件的内部进行细粒度的授权管理和数据的外出访问控制,做到数据的全方位管理。驱动级加密技术在给用户的数据带来安全的同时,也给用户的使用便利性带来一定的问题,驱动级加密采用进程加密技术,对同类文件进行全部加密,无法有效区别个人文件与企业文件数据的分类管理,个人电脑与企业办公的并行运行等问题。
聚小编 2019-12-02 01:26:37 0 浏览量 回答数 0

回答

密码学简介 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施 了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提 高,近期又出现了AES、ECC等。 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 二. 加密算法介绍 根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高; AES 2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。 Rijndael被选中成为将来的AES。 Rijndael是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。 美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16 字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相 同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据 AES与3DES的比较 算法名称 算法类型 密钥长度 速度 解密时间(建设机器每秒尝试255个密钥) 资源消耗 AES 对称block密码 128、192、256位 高 1490000亿年 低 3DES 对称feistel密码 112位或168位 低 46亿年 中 非对称算法 常见的非对称加密算法如下: RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准); ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。 ECC 在1976年,由于对称加密算法已经不能满足需要,Diffie 和Hellman发表了一篇叫《密码学新动向》的文章,介绍了公匙加密的概念,由Rivet、Shamir、Adelman提出了RSA算法。 随着分解大整数方法的进步及完善、计算机速度的提高以及计算机网络的发展,为了保障数据的安全,RSA的密钥需要不断增 加,但是,密钥长度的增加导致了其加解密的速度大为降低,硬件实现也变得越来越难以忍受,这对使用RSA的应用带来了很重的负担,因此需要一种新的算法来 代替RSA。 1985年N.Koblitz和Miller提出将椭圆曲线用于密码算法,根据是有限域上的椭圆曲线上的点群中的离散对数问题ECDLP。ECDLP是比因子分解问题更难的问题,它是指数级的难度。 算法原理——椭圆曲线上的难题 椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。 将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的密码体制。 例如,对应Diffie-Hellman公钥系统,我们可以通过如下方式在椭圆曲线上予以实现:在E上选取生成元P,要 求由P产生的群元素足够多,通信双方A和B分别选取a和b,a和b 予以保密,但将aP和bP公开,A和B间通信用的密钥为abP,这是第三者无法得知 的。 对应ELGamal密码系统可以采用如下的方式在椭圆曲线上予以实现: 将明文m嵌入到E上Pm点,选一点B∈E,每一用户都选一整数a,0<a<N,N为阶数已知,a保密,aB公开。欲向A 送m,可送去下面一对数偶:[kB,Pm+k(aAB)],k是随机产生的整数。A可以从kB求得k(aAB)。通过:Pm+k(aAB)- k(aAB)=Pm恢复Pm。同样对应DSA,考虑如下等式: K=kG [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数] 不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。 这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k(k<n,n为基点G的阶)称为私有密钥(privte key),K称为公开密钥(public key)。 ECC与RSA的比较 ECC和RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面: Ø 抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。 Ø 计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。 Ø 存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。 Ø 带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。 ECC的这些特点使它必将取代RSA,成为通用的公钥加密算法。比如SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。 下面两张表示是RSA和ECC的安全性和速度的比较: 攻破时间 (MIPS年) RSA/DSA (密钥长度) ECC 密钥长度 RSA/ECC 密钥长度比 104 512 106 5:1 108 768 132 6:1 1011 1024 160 7:1 1020 2048 210 10:1 1078 21000 600 35:1 RSA和ECC安全模长得比较 功能 Security Builder 1.2 BSAFE 3.0 163位ECC(ms) 1,023位RSA(ms) 密钥对生成 3.8 4,708.3 签名 2.1(ECNRA) 228.4 3.0(ECDSA) 认证 9.9(ECNRA) 12.7 10.7(ECDSA) Diffie—Hellman密钥交换 7.3 1,654.0 RSA和ECC速度比较 散列算法 散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结 果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有 相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。 单向散列函数一般用于产生消息摘要,密钥加密等,常见的有: Ø MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法。 Ø SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值; SHA-1 在1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公布;1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1。SHA-1是基于MD4算法的,并且它的设计在很大程度上是模仿MD4的。现在已成为公认的最安全的散列算法之一,并 被广泛使用。 算法原理 SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。 单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码 的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或 信息摘要的输出。 该算法输入报文的最大长度不超过264位,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。 通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的 明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表 示明文未被改动,如果不一致表示明文已被篡改。 MAC (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码的合法性。MAC的产生参见下图。 输入信息 密码 散列函数 信息认证代码 SHA-1与MD5的比较 因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同: Ø 对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。这样,SHA-1对强行攻击有更大的强度。 Ø 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。 Ø 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。 对称与非对称算法比较 以上综述了两种加密方法的原理,总体来说主要有下面几个方面的不同: Ø 在管理方面:公钥密码算法只需要较少的资源就可以实现目的,在密钥的分配上,两者之间相差一个指数级别(一个是n一个是n2)。所以私钥密码算法不适应广域网的使用,而且更重要的一点是它不支持数字签名。 Ø 在安全方面:由于公钥密码算法基于未解决的数学难题,在破解上几乎不可能。对于私钥密码算法,到了AES虽说从理论来说是不可能破解的,但从计算机的发展角度来看。公钥更具有优越性。 Ø 从速度上来看:AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍,如果用硬件来实现的话这个比值将扩大到1000倍。 三. 加密算法的选择 前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种比较好呢。 我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。 对称加密算法不能实现签名,因此签名只能非对称算法。 由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。 在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。 如果在选定了加密算法后,那采用多少位的密钥呢。一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。 四. 密码学在现代的应用 随着密码学商业应用的普及,公钥密码学受到前所未有的重视。除传统的密码应用系统外,PKI系统以公钥密码技术为主,提供加密、签名、认证、密钥管理、分配等功能。 保密通信:保密通信是密码学产生的动因。使用公私钥密码体制进行保密通信时,信息接收者只有知道对应的密钥才可以解密该信息。 数字签名:数字签名技术可以代替传统的手写签名,而且从安全的角度考虑,数字签名具有很好的防伪造功能。在政府机关、军事领域、商业领域有广泛的应用环境。 秘密共享:秘密共享技术是指将一个秘密信息利用密码技术分拆成n个称为共享因子的信息,分发给n个成员,只有 k(k≤n)个合法成员的共享因子才可以恢复该秘密信息,其中任何一个或m(m≤k)个成员合作都不知道该秘密信息。利用秘密共享技术可以控制任何需要多 个人共同控制的秘密信息、命令等。 认证功能:在公开的信道上进行敏感信息的传输,采用签名技术实现对消息的真实性、完整性进行验证,通过验证公钥证书实现对通信主体的身份验证。 密钥管理:密钥是保密系统中更为脆弱而重要的环节,公钥密码体制是解决密钥管理工作的有力工具;利用公钥密码体制进行密钥协商和产生,保密通信双方不需要事先共享秘密信息;利用公钥密码体制进行密钥分发、保护、密钥托管、密钥恢复等。 基于公钥密码体制可以实现以上通用功能以外,还可以设计实现以下的系统:安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票系统等。 公钥密码体制的产生是密码学由传统的政府、军事等应用领域走向商用、民用的基础,同时互联网、电子商务的发展为密码学的发展开辟了更为广阔的前景。 五. 加密算法的未来 随着计算方法的改进,计算机运行速度的加快,网络的发展,越来越多的算法被破解。 在2004年国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做的破译MD5、HAVAL-128、MD4和RIPEMD算法的报告,令在场的国际顶尖密码学专家都为之震惊,意味着这些算法将从应用中淘汰。随后,SHA-1也被宣告被破解。 历史上有三次对DES有影响的攻击实验。1997年,利用当时各国 7万台计算机,历时96天破解了DES的密钥。1998年,电子边境基金会 (EFF)用25万美元制造的专用计算机,用56小时破解了DES的密钥。1999年,EFF用22小时15分完成了破解工作。因此。曾经有过卓越贡献的 DES也不能满足我们日益增长的需求了。 最近,一组研究人员成功的把一个512位的整数分解因子,宣告了RSA的破解。 我们说数据的安全是相对的,可以说在一定时期一定条件下是安全的,随着硬件和网络的发展,或者是另一个王小云的出现,目前的常用加密算法都有可能在 短时间内被破解,那时我们不得不使用更长的密钥或更加先进的算法,才能保证数据的安全,因此加密算法依然需要不断发展和完善,提供更高的加密安全强度和运 算速度。 纵观这两种算法一个从DES到3DES再到AES,一个从RSA到ECC。其发展角度无不是从密钥的简单性,成本的低廉性,管理的简易性,算法的复 杂性,保密的安全性以及计算的快速性这几个方面去考虑。因此,未来算法的发展也必定是从这几个角度出发的,而且在实际操作中往往把这两种算法结合起来,也 需将来一种集两种算法优点于一身的新型算法将会出现,到那个时候,电子商务的实现必将更加的快捷和安全。
liujae 2019-12-02 01:26:38 0 浏览量 回答数 0

回答

回到今天看互联网、计算机与智能技术的发展,我认为第一个真正被验证过的就 是搜索,互联网的发展拉动了搜索技术的发展。搜索是第一个实现算力、数据规模化 的软件,它依然满足冯诺依曼架构的设想。其实,搜索最开始被提出来的时候就是为 了解决海量数据的计算效率问题,最早由雅虎发明,后来 Google 通过 PageRank 算法做了改良,以更好的体验创造了巨大的市场。正是因为在互联网广告领域发现了 巨大的市场需求,才使得源源不断技术投入到搜索领域。正是因为对于搜索技术的沉 淀,使得算力和数据的规模化问题得以更好地解决,也就形成了云计算和大数据。 传统思路无法思考新技术的估值问题,对于创新的技术,很难对它形成正确的估值,因为技术迭代速度非常快。比如当蒸汽机出现之后,很快又出现了铁路、轮船, 因此对蒸汽机进行估值时,很难想象后面会出现多大的市场,对世界和社会形成多大 的改变,这就是创新的力量。所以说只有技术创新才是在创造新的财富,因为它增加 了产能,再通过资本的投入不断扩大规模。因此,在研究技术的变化、迭代时,很难 想象一个新技术出来之后会创造怎样的新需求,所以难以通过一套成熟的方法评估一 项新技术未来的潜力空间。 今天,如果想要在企业的竞争中具有更好的竞争力,需要从资源角度去思考对每 项新技术的看法。比如在工业时代,其实出现了一次自然资源的大发现,英国最早使 用木材作为生产生活的主要燃料,后来因为木材减少才开始使用煤炭,但直到蒸汽机 发明之后,煤炭才被大量开采出来。工业革命诞生在英国还有一个很重要的原因是英 国的煤炭比较多并且方便开采,离海岸线近,比较容易运输。在古代中国,煤矿主要 在内陆,而经济最发达的地方在长三角,在没有铁路、轮船的情况下,将煤炭运输到 沿海地区的成本很高,所以煤炭没有成为古代中国经济发展的重要材料。当蒸汽机出 现之后,煤炭成为了重要的战略资源。同样的事情也发生在石油出现之后,美国克利 夫兰因为附近的油田从小城镇发展成为一个工业化城市,也正是在这里洛克菲勒拿到 了第一桶金。电力发展上也一样,1886 年,美国决定在尼亚加拉瀑布上建设一个水 电站,输送十万马力的电能到距离 26 英里外的布法罗市。瀑布在电力发明之前,只 能被当做壮观的自然景观,而当电力系统发明之后,就会发现瀑布的水落差是非常重 要的自然资源,而谁占有了这样的资源,谁就拥有了巨大的财富。对于自然资源的垄 断或攫取,能够让企业或者国家在竞争上处于优势位置,因此有必要从自然资源的角 度重新看待新技术的发展。当一项新技术出现之后,创新实际上是需要讲究市场规模 的。而对于时代的改变来说,创新的规模才是最关键、最本质的事情。 回到计算机的发展,最开始的电子管还会发光发热,存在巨大的能耗问题。后来 发明了晶体管,硅就成为了一种新的自然资源,而这种材料在地球上到处都是,使得 新造晶体管比维修电子管更加便宜,这就导致了商业模式的重构。由此可见,自然资 源会决定很多事情。 对于计算机、AI 的发展而言,算力和数据都是重要的生产资料。算力涉及到晶 体管、存储网络等,而数据则需要当做一个新的自然资源重新思考。在信息时代,计 算机的发展就是出现了各种各样的数据库,通过计算机取代了许多需要人工的填表工 作。而在智能时代,一些低门槛、低复杂度的事情都可以被计算机自动完成。回过头 来看,计算机在信息时代对算力和数据利用的规模都比较小,PC 时代所使用的算力 和数据可能仅仅来源于自身,但在智能时代的软件操作,利用的可能是云计算海量的 数据和算力。因此,今天新的软件才能解决不一样的问题,它对效率的提升会是信息 时代的无数倍。云计算有效地完成了算力的规模化,数据的规模化曾经期望通过大数 据来完成,但目前大数据并没有得到充分应用,各行各业依然在处理小数据。今天我 们谈论机器智能到底应该设计成什么样的软件,其实应该看这个智能软件到底消耗多 少算力和数据,从规模上来判断。如果一个智能软件没有消耗非常多的算力与数据, 很难想象它能够提升非常高的产能。 要实现数据的规模化,其实最重要的就是 IoT。今天,通过大量的 IoT 设备,会 源源不断地采集海量的数据,数据规模远远大于人工填表时代所产生的数据规模。人 工填表采集的数据依然认为是信息时代采集的数据,而 IoT 设备采集的数据则是满足 智能时代所需数据规模的基础。数据要想成为自然资源,规模很重要。 对于数据的成本而言,AI 的成本高是因为数据成本非常高。算力成本通过晶体 管、集成电路、云计算已经有效地实现了规模经济,可以在实现路径中逐渐收敛,并 且符合摩尔定律。而数据成本依旧非常高,这主要有几点原因:第一,对很多 AI 算 法而言,数据打标的成本非常高,往往需要人工参与,因此整个学界和产业界都在思 考如何让机器自动打标签,进而有效降低数据成本。第二,IoT 设备以及全链路数据 采集的成本过高。IoT 设备不生产数据,而是采集数据,通过 3G/4G/5G 的发展降 低了设备数据采集链路的成本。数据采集之后,还需要考虑如何存储和加工,需要综 合考量成本,也需要和上层的应用软件形成互动,所以人工数据治理也浪费了大量时 间。只要需要人工参与,效率一定不高,成本也会上升。因此,学术界和产业界也在 思考如何让机器自动进行数据治理,解决数据的质量问题。当这些全部完成之后,才能让数据成为在智能时代能够被有效使用的自然资源。
Lee_tianbai 2020-12-31 18:01:00 0 浏览量 回答数 0

回答

Re阿里云的IO太烂太烂,要是不能解决请退款吧 妈的后台监控图都不出来一个。搞个毛线 ------------------------- Re阿里云的IO太烂太烂,要是不能解决请退款吧 测试命令都不正确。 我靠,参数都不加,测试的cache写入 ------------------------- Re阿里云的IO太烂太烂,要是不能解决请退款吧 技术不给力啊。客服还是积极。不能处理,=000000000啊 ------------------------- Re阿里云的IO太烂太烂,要是不能解决请退款吧 OSS? rds?速度很快? 1.备份是肯定要有的 备份就要读写一起 2.安全扫描文件,也是要做的,读 这个是。 3.日志文件写入这个必须保留的。 写多 我还是希望阿里云做的更好!更快! 现在服务器10M左右的网络流量。目前IO还算可以,还有空闲。上午确实很慢。 要是将高配阿里云主机和低配主机进行分池,分群集存放。就好了 毕竟这个是弹性计算 按需分配,不能乱78遭的搅在一起。全部写在分布式文件系统上。 ------------------------- Re阿里云的IO太烂太烂,要是不能解决请退款吧 ap6214f2r 就是个托。我的帖子,你不要回复。 2B 1个 你拉一碗屎,难道你只吃了一碗饭? 太2b了 ------------------------- 回10楼kideny的帖子 你也是个托。。这是客户自己买的。 你太2B了,要是我推荐,会用阿里云?
zhengweisk 2019-12-01 23:15:48 0 浏览量 回答数 0

问题

《三体》里的超级计算机,我们今天能造出来吗?

                  在科幻巨作《三体》里,刘慈欣有这么一段描述:                        每秒500万亿次浮点运算的计算机,出现在“面壁计划”里。这是...
宝惜 2019-12-01 21:17:16 6348 浏览量 回答数 6

回答

Re小白来问几个问题 插件少的可怜.....,而且都是第三方的,出问题或者不更新,不支持你用的程序新版,或者不支持他们最新的青岛节点,他们都不负责!他们会说他们有SDK让你自己开发....对于主流程序的插件以及基础工具(比如数据迁移等等),他们都交给第三方的做法我只能说无语了! ------------------------- 回4楼顺德神父的帖子 我一直在用又拍云的,不过你如果发图片或者附件的话,需要从ECS传输到又拍,这个需要一个过程,但是对于你来说,你不是做论坛的,自己发文章应该问题不大,只是比如你上传的附件有8M,那么你点完发帖后需要等待ECS传输到又拍云,又拍那边不限制你上传带宽,但是你的ECS是有固定带宽的,所以就算你是5M带宽,也要10秒多的时间才能传到又拍云,只要传过去了,那以后下载速度肯定不是问题了~下载速度很快,这个我用了快10个月了没有问题! 我其实也是在纠结这个从ECS到upyun的数据传递时间的,因为如果我上传文件有20M,那我可能要等待35秒种的时间帖子才能发出来,如果我用ECS对应的青岛节点OSS,那这个传输时间可以大大减少,大概10秒以内就可以上传完毕! 只是OSS这边只管自己的底层技术,API,SDK,以及培养第三方生态环境,却没有考虑到基础工具的必要性以及实时性,upyun那边好就好在插件什么的都会在第一时间开发出来,而且是免费的!数据迁移也有FTP可以用,分了电信和网通2个IP你可以自己选择使用! ------------------------- 回6楼顺德神父的帖子 30万pv,那ip也很多啊,就算你用ecs,成本只会更贵,按照你这个数据我去ecs选型计算器里算了一下,35万pv,首页面大小1500k(虽然你说有5张700k图片,但首页应该没这么大),就这样计算结果是你需要114M的带宽,一个月就是1万多,一年就10万多,如果你用oss,或者upyun,每天流量1T,每天就700元左右,一年也要25万,如果你不用oss,upyun,假设你只是图片多,你可以ecs,硬盘买大一些,存放图片,带宽不用太高,把所有静态图片都用CDN服务应该更好,这样流量费用要比oss,upyun少30%。 ------------------------- Re小白来问几个问题 你也可以开通oss,然后在oss里开通cdn加速图片的服务,这样只要是图片就大部分走cdn流量(这个看命中率,基本上80%左右,也许你的更高),等于你用oss做存储,流量费用大部分走CDN,而CDN的流量费用是oss价格的60% ------------------------- 回10楼顺德神父的帖子 我好像算错价格了~OSS的流量是每G0.7元,一天1T,一天就700多,一年就20多万!如果是CDN是每G0.45元,一天450,一年也要16万! ------------------------- 回11楼huangjinshe的帖子 无论是不是阿里云,做视频站我觉得重点在于带宽吧,因为如果看视频的人多了,带宽不足肯定就卡壳了,而阿里云ECS在5M带宽以上就很贵了~如果你用OSS,流量费估计你也是扛不住的~CDN的流量费用要比oss便宜一些!你自己看能不能承受价格吧~ 那个配置计算器是阿里云自己的,他是利用你每天PV以及首页文件大小来计算配置! ------------------------- 回14楼huangjinshe的帖子 主要是他的每天PV高啊,每天30万PV是一个什么概念,一个页面5张图片,每张700k,一个页面就3.5M.这个页面被查看30万次,那一天就是1000G的流量啊那肯定不管用CDN还是OSS还是用ECS,他这么庞大的访问量都不会太便宜哦,他如果投放一些广告,每天收入都不得了! ------------------------- 回17楼mayle的帖子 差不多就这个意思~upyun的单价在0.6元,我也是在想他如果真有35万PV每天的话,流量1T也真的挺吓人,如果如你所说流量在300G每天,那他的OSS费用每天也有225元,一年也是8万多,如果是用CDN的话每天大概也接近135元,一年也是4万9,不过算来算去还是CDN划算啊,我现在就是OSS+CDN,流量几乎都是走的CDN,速度也很快,流量还便宜(就是因为听你说你没用OSS用CDN我就也尝试了一下,果然划算),OSS就相当于我一个网络硬盘帮我存储附件了! ------------------------- 回16楼mayle的帖子 他这个阶梯价格是一天之内才阶梯,第二天又重新开始是吗? 比如OSS他第一天开始第一个用的500G是0.75元的单价,第二个500G就是0.7元的单价 那第二天他再用第一个500G单价到底是0.7元?还是0.75元?如果第二天他一共又用了1000G 那他第三天是不是再用就是0.65的单价?,我是在想,他这个流量单价是不是累积全部的?那样的话,流量越用越便宜,还是不错的!同样道理CDN的流量价格体系是不是也这样? ------------------------- 回21楼huangjinshe的帖子 就是说流量是阶梯的,意思就是说如果你用OSS一个月内流量进行累积,比如某一个月从1号开始到10号的时候你用了500G流量,这10天你每G流量费用是0.75从第11天开始你的流量就会超过500G,这时候你再使用每G流量费用就是0.7元,假设到了20号你的累积流量一共用了2T,那么从21号开始您再使用的流量的每G流量费用又变成了0.65元.这就是阶梯价格,是在一个月内进行统计!下个月重新计算! CDN也是一样的一个月内500G流量0.45,超过500G-2T是0.42
solidedge 2019-12-02 03:00:19 0 浏览量 回答数 0

回答

GPS都是不耗流量的,GPS是接受美国GPS卫星信号定位的,谁来计算你的流量。卫星。还是美国移动。GPS的话,就算SIM卡不放进手机,照样可以进行。 A-GPS(Assisted GPS)即辅助GPS技术,它可以提高 GPS 卫星定位系统的性能。通过移动通信运营基站它可以快速地定位,广泛用于含有GPS功能的手机上。 A-GPS由于需要基站辅助定位,因此是要消耗数据流量的。-------------------------乐phone启用A-GPS设置:进入系统设置-安全与定位设置-启用GPS卫星设置(A-GPS默认开启); 即使用导航时会产生流量; 如不想产生流量,导航时,直接进入系统设置-无线网络设置-关闭移动网络数据服务,启用GPS卫星设置不做操作即可; 导航过程中一般下载星历数据、基站辅助定位等都会产生流量; 定位精度:GPS=A-GPS>基站定位 定位速度:基站定位>A-GPS>GPS GPS原理 GPS 导航系统的基本原理是测量出已知位置的卫星到用户接收机之间的距离,然后综合多颗卫星的数据就可知道接收机的具体位置。要达到这一目的,卫星的位置可以根据星载时钟所记录的时间在卫星星历中查出。而用户到卫星的距离则通过纪录卫星信号传播到用户所经历的时间,再将其乘以光速得到(由于大气层电离层的干扰,这一距离并不是用户与卫星之间的真实距离,而是伪距(PR):当GPS卫星正常工作时,会不断地用1和0二进制码元组成的伪随机码(简称伪码)发射导航电文。GPS系统使用的伪码一共有两种,分别是民用的C/A码和军用的P(Y)码。C/A码频率1.023MHz,重复周期一毫秒,码间距1微秒,相当于 300m;P码频率10.23MHz,重复周期266.4天,码间距0.1微秒,相当于30m。而Y码是在P码的基础上形成的,保密性能更佳。导航电文包括卫星星历、工作状况、时钟改正、电离层时延修正、大气折射修正等信息。它是从卫星信号中解调制出来,以50b/s调制在载频上发射的。导航电文每个主帧中包含5个子帧每帧长6s。前三帧各10个字码;每三十秒重复一次,每小时更新一次。后两帧共15000b。导航电文中的内容主要有遥测码、转换码、第 1、2、3数据块,其中最重要的则为星历数据。当用户接受到导航电文时,提取出卫星时间并将其与自己的时钟做对比便可得知卫星与用户的距离,再利用导航电文中的卫星星历数据推算出卫星发射电文时所处位置,用户在WGS-84大地坐标系中的位置速度等信息便可得知。   可见GPS导航系统卫星部分的作用就是不断地发射导航电文。然而,由于用户接受机使用的时钟与卫星星载时钟不可能总是同步,所以除了用户的三维坐标x、y、z外,还要引进一个Δt即卫星与接收机之间的时间差作为未知数,然后用4个方程将这4个未知数解出来。所以如果想知道接收机所处的位置,至少要能接收到4个卫星的信号。   GPS接收机可接收到可用于授时的准确至纳秒级的时间信息;用于预报未来几个月内卫星所处概略位置的预报星历;用于计算定位时所需卫星坐标的广播星历,精度为几米至几十米(各个卫星不同,随时变化);以及GPS系统信息,如卫星状况等。   GPS接收机对码的量测就可得到卫星到接收机的距离,由于含有接收机卫星钟的误差及大气传播误差,故称为伪距。对0A码测得的伪距称为UA码伪距,精度约为20米左右,对P码测得的伪距称为P码伪距,精度约为2米左右。   GPS接收机对收到的卫星信号,进行解码或采用其它技术,将调制在载波上的信息去掉后,就可以恢复载波。严格而言,载波相位应被称为载波拍频相位,它是收到的受多普勒频移影响的卫星信号载波相位与接收机本机振荡产生信号相位之差。一般在接收机钟确定的历元时刻量测,保持对卫星信号的跟踪,就可记录下相位的变化值,但开始观测时的接收机和卫星振荡器的相位初值是不知道的,起始历元的相位整数也是不知道的,即整周模糊度,只能在数据处理中作为参数解算。相位观测值的精度高至毫米,但前提是解出整周模糊度,因此只有在相对定位、并有一段连续观测值时才能使用相位观测值,而要达到优于米级的定位 精度也只能采用相位观测值。   按定位方式,GPS定位分为单点定位和相对定位(差分定位)。单点定位就是根据一台接收机的观测数据来确定接收机位置的方式,它只能采用伪距观测量,可用于车船等的概略导航定位。相对定位(差分定位)是根据两台以上接收机的观测数据来确定观测点之间的相对位置的方法,它既可采用伪距观测量也可采用相位观测量,大地测量或工程测量均应采用相位观测值进行相对定位。   在GPS观测量中包含了卫星和接收机的钟差、大气传播延迟、多路径效应等误差,在定位计算时还要受到卫星广播星历误差的影响,在进行相对定位时大部分公共误差被抵消或削弱,因此定位精度将大大提高,双频接收机可以根据两个频率的观测量抵消大气中电离层误差的主要部分,在精度要求高,接收机间距离较远时(大气有明显差别),应选用双频接收机。 A-GPS原理 AGPS(AssistedGPS:辅助全球卫星定位系统)是结合GSM/GPRS与传统卫星定位,利用基地台代送辅助卫星信息,以缩减GPS芯片获取卫星信号的延迟时间,受遮盖的室内也能借基地台讯号弥补,减轻GPS芯片对卫星的依赖度。和纯GPS、基地台三角定位比较,AGPS能提供范围更广、更省电、速度更快的定位服务,理想误差范围在10公尺以内,日本和美国都已经成熟运用AGPS于LBS服务(locetionBasedService,适地性服务)。   AGPS技术是一种结合了网络基站信息和GPS信息对移动台进行定位的技术,可以在GSM/GPRS、WCDMA和CDMA2000网络中使用。该技术需要在手机内增加GPS接收机模块,并改造手机天线,同时要在移动网络上加建位置服务器、差分GPS基准站等设备。   AGPS解决方案的优势主要在首次捕获GPS信号的时间一般仅需几秒,不像GPS的首次捕获时间可能要2~3分钟。 基站定位原理   基站定位一般应用于手机用户,它是通过电信移动运营商的网络(如GSM网)获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务,例如目前中国移动动感地带提供的动感位置查询服务等。其大致原理为:移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(Time of Arrival,到达时刻),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出移动电话的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。
马铭芳 2019-12-02 01:16:50 0 浏览量 回答数 0

问题

【阿里云产品评测】个人WP站的云体验

1 ECS 首先来说说我自己,一直对计算机颇有兴趣,高中的时候就开始研究了些PHP的东西, 05年上大二的时候,注册了自己的域名www.cnsjw.cn  ,并开通了自己...
cnsjw 2019-12-01 20:54:27 22207 浏览量 回答数 25

回答

本文档介绍如何将开源HDFS的数据平滑地迁移到文件存储HDFS。 背景信息 当前业界有很多公司是以Hadoop技术构建数据中心,而越来越多的公司和企业希望将业务顺畅地迁移到云上。文件存储HDFS可以帮助您实现将开源HDFS的数据迁移到云上,并允许您在云上就像在Hadoop分布式文件系统中管理和访问数据。 适用范围 非阿里云Hadoop集群中的数据迁移到文件存储HDFS。 阿里云ECS自建Hadoop集群中的数据迁移到文件存储HDFS。 准备工作 在阿里云ECS创建Hadoop集群。 如果您目前的Hadoop集群是搭建在阿里云VPC网络上的阿里云ECS集群,则无需在阿里云ECS上创建新的Hadoop集群。 创建和挂载文件系统至阿里云ECS上的Hadoop集群,并将文件存储HDFS设置为fs.defaultFS,详情请参见文件存储HDFS快速入门。 验证文件系统和计算节点之间的连通性。 执行以下命令,在文件存储HDFS上创建目录(如:/dfs_links)。 hadoop fs -mkdir /dfs_links 执行以下命令,验证连通性。 hadoop fs -ls dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/dfs_links 其中f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为文件存储HDFS挂载点域名,请根据您的实际情况进行修改。 如果命令正常执行无输出结果,则表示连通成功。如果连通失败,请参见创建文件系统实例后,为什么无法访问文件存储HDFS?进行排查。 准备迁移工具。 您可以通过Hadoop社区标准的Distcp工具实现全量或增量的HDFS数据迁移,详细的Distcp工具使用说明请参见Hadoop Distcp 工具官方说明文档。 说明 使用Distcp命令将旧集群数据迁移至文件存储HDFS时,请注意文件存储HDFS不支持以下参数,其它参数使用和Hadoop Distcp 工具官方说明文档一致。文件存储HDFS及命令行存在限制的详细信息请参见使用限制。 参数 描述 状态 -p[rbpax] r:replication,b:block-size,p:permission,a:ACL,x:XATTR 不可用 非阿里云自建Hadoop集群数据迁移 非阿里云自建Hadoop集群数据迁移到文件存储HDFS包括以下两种情况。 非阿里云自建Hadoop集群与文件存储HDFS可以实现网络互通时, 请按照以下方法进行数据迁移。 使用阿里云高速通道产品建立原集群和文件存储HDFS所在VPC网络的连通,详情请参见专线上云方案介绍。 新旧集群实现网络互通后,执行以下命令迁移数据。 hadoop distcp -m 1000 -bandwidth 30 hdfs://oldclusterip:8020/user/hive/warehouse dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/hive/warehouse 其中oldclusterip为原自建Hadoop集群namenode的IP地址或者域名,f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为文件存储HDFS挂载点域名,请根据您的实际情况进行修改。 说明 为减轻现有集群资源压力,建议确保新旧集群网络连通后,在新挂载文件系统的阿里云Hadoop集群上执行数据迁移命令。 非阿里云自建Hadoop集群与文件存储HDFS无法实现网络互通时,请按照以下方法进行数据迁移。 将非阿里云自建Hadoop集群数据迁移到对象存储OSS,详情请参见离线迁移教程。 将对象存储OSS数据迁移到文件存储HDFS,详情请参见文件存储HDFS和对象存储OSS双向数据迁移。 阿里云ECS自建Hadoop集群数据迁移 阿里云ECS自建Hadoop集群数据迁移到文件存储HDFS时,包括以下两种情况: 阿里云ECS自建Hadoop集群处于经典网络环境时,请按照以下方法进行数据迁移。 通过阿里云ECS的ClassicLink建立ClassicLink连接,详情请参见建立 ClassicLink 连接。 执行以下命令迁移数据。 hadoop distcp -m 1000 -bandwidth 30 hdfs://oldclusterip:8020/user/hive/warehouse dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/hive/warehouse 其中oldclusterip为原自建Hadoop集群namenode的IP地址或者域名,f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为文件存储HDFS挂载点域名,请根据您的实际情况进行修改。 阿里云ECS自建Hadoop集群处于VPC网络环境时,请按照以下方法进行数据迁移。 阿里云ECS自建Hadoop集群处于VPC网络环境时,可以直接通过VPC网络迁移数据到文件存储HDFS。迁移命令如下所示: hadoop distcp -m 1000 -bandwidth 30 hdfs://oldclusterip:8020/user/hive/warehouse dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/user/hive/warehouse 其中oldclusterip为原自建Hadoop集群namenode的IP或者域名,f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为文件存储HDFS挂载点域名,请根据您的实际情况进行修改。 常见问题 整体迁移速度受Hadoop集群与文件存储HDFS之间的带宽、集群规模影响。同时文件越多,checksum需要的时间越长。如果迁移数据量大,建议先尝试迁移几个目录评估下整体时间。如果只能在指定时间段内迁移数据,可以将目录切为几个小目录,依次迁移。 一般全量数据同步时,需要一个短暂的业务停写过程,用来启用双写双算或直接将业务切换到新集群上。 迁移过程出现异常提示:Cannot obtain block length for LocatedBlock。 从原生的HDFS往对象存储OSS/文件存储HDFS迁移数据时,可能会遇到这个问题。遇到该问题时,请执行hdfs fsck / –openforwrite命令,检查当前是否有文件处于写入状态尚未关闭。 如果有处于写入状态的文件时,需判断文件是否有效。 如果文件无效,则直接删除文件。 hdfs rm 如果文件有效,则不能直接删除,请考虑恢复问题文件租约。 hdfs debug recoverLease -path -retries
1934890530796658 2020-03-31 02:36:06 0 浏览量 回答数 0

回答

Logistics Sci—Tech No.10,2008 · 军事物流· 物流科技2008年第1O期 摘 要:现代军事物流是信息化战争后勤保障的重要支 撑。随着信息技术的不断发展, 卫星定位系统逐渐应用于军 事物流领域,成为现代军队战斗力的倍增器。文章介绍了卫 星定位系统概况, 阐述了卫星定位系统在军事物流领域的应 用现状,对军事物流领域应用卫星定位系统的前景及思路进 行了探讨。 关键词:卫星定位系统;军事物流;应用 中图分类号:E075 文献标识码:A 文章编号:1002—3100 f2008) 10—0071—03 Abstract: Modern military logistics is one of the important pans of logistics under informationization war. Nowadays, satellite positioning system is applied in the field of military logistics gradually with the development of information technology. This paper introduces the general situation of satellite positioning system,analyses its current and future application in the field of military logistics, discusses the development ideaS of applying satellite positioning system in the field of military logistics. Key words:satellite positioning sy stem;military logistics;application 军事物流是指军事物资经由筹措、运输、储存、包装、维修保养、配送等环节,从供应地向部队用户有序流动的过程ll】。 卫星定位系统作为当今最先进的信息设施之一,是提高军事物流信息化建设水平,增强部队战斗力不可缺少的技术工具和手段 。 在现代军事物流活动中,重视这~ 技术的创新和推广应用,将快速实现对军事物流的实时监控,从而有效提高信息化战争的后 勤保障效能 1 卫星定位系统概况 卫星定位系统是利用多颗人造地球卫星、地面控制设备和信号接收设备,对地面静态或动态目标进行定位和导航的系统。 目前,全球正在运行或研制中的卫星定位系统有美国全球定位系统(Global Positioning System.GPS)、俄罗斯全球卫星导航系 统(GLONASS)、欧盟伽利略导航卫星系统计划(GALILEO)和中国“北斗一号” 卫星导航定位系统。 GPS是美国军方20世纪70年代研制的军民两用卫星定位系统,军用加密,民用降低定位精度后在全球使用,在用户数量 上处于霸主地位。GLONASS是由原苏联(现由俄罗斯)国防部独立研制和控制的第二代军用卫星导航系统, 其建立目的主要 是避免在军事上受制于美国。由于种种原因, 目前处于“半可用”状态,市场中GLONASS设备极少,产品多是内置GLONASS 和GPS两种接收装置, 以提高精度和可用性。同样出于避免受制于美国的目的.欧盟2003年也开始了GALILEO计划.建造世 界上第一个非军方控制和管理的民用』J星导航定位系统.预计2010年正式投入商业运行 这3个系统都是全球卫星导航定位 系统,导航范围覆盖全球。中国“北斗一号” 系统则是覆盖我国本土的区域导航定位系统, 目前拥有5颗导航卫星,除具有导 航功能外,还具有短报文通信和精密授时功能。在2008年南方抗击雨雪冰冻和四川特大地震灾害中初露锋芒.在北京奥运会 期间将为交通调度和场馆监控提供服务。 GPS导航系统是被动式伪码单向测距三维导航,采用的是无源定位。定位数据由用户设备独立解算, 因此不能提供通讯服 务。 “北斗” 系统是主动式双向测距二维导航,采用的是有源定位.定位数据由地面控制中心解算后提供给用户,用户需要通 过地面中心站联系及地面中心站的传输;因此可以提供通讯服务,通讯不必通过其他的通讯卫星.实现了一星多用。 GPS、GLONASS、GA[ ILEO和“北斗” 系统对比见表1 2 卫星定位系统在军事物流领域的应用现状 卫星定位系统的建立源于军事目的,美国GPS在近几场局部战争中应用于指挥控制、兵力投送、精确制导、目标侦察、战 场救援、军事物流等各个方面,成为美军战斗力的倍增器。尤其在伊拉克战争中,超大量战争物资运输保障,战时补给,大兵 团诸军兵种的专用装备保障,没有GPS 的导航和定位,军事物流则难以实现适时、快速、精确的保障,也就很难在短时间内 结束战斗并取得战斗的胜利 。近几年,我国加紧研发中国“北斗” 系统,引进对GPS的应用.逐渐将卫星定位系统应用于军 收稿日期:2008~06—24 作者简介: 白 娟(1973一),女,山东济南人,后勤指挥学院研究生五队硕士研究生,研究方向:军事物流信息化建设。 卫星定位系统在军事物流领域应用现状及前景探讨 表1 GPS、GLONASS、GALILEO和“北斗” 系统对比表 美国GPS 俄罗斯GL0NASS 欧盟GALILE0 中国“北斗” 系统 研制时间 20世纪70年代 20世纪70年代中期 1999年2月 2000生 卫星个数 28 24 30 5 轨道高度(KM) 20 186 l9 l00 23 222 36 0o0 运行周期 l1:15:44 l1:15:00 14:22:00 l1:58:00 民用单频CA码 民用单频CA码 CA码 调制码 军用双频P码 军用双频P码 P码 定位精度 CA码约l2米 水平方向约l6米 水平定位精度优于10米 约30米 P码小于10米 垂直方向约25米 覆盖范围 全球 全球 全球 中国及周边地区 主要功能 定位导航导航定位、短报文通信、 . 精密授时 定位导航,精密授时 定位导航.精密授时 精密授时 优点优点:投资小、用户设 : 全天候: 全球覆盖; 三维 由于GL0NASS卫星发 该系统提供三种导航定 备价廉 。定速定时高精度缺点: 不能覆 :快速省时高效 射的载波频率不同. 可 位信号 率: 免费信号、收 盖两极地区. 赤道附近 系统特点 : 应用广泛多功能。缺点:信 以防止整个卫星导航系 费加密信号 、号存在易损性和丢失性满足更高 定位精度差:不能满足 . 抗干扰 统同时被敌方干扰. 因 要求的收费加密信号 , 能力差高动态和保密的军事用 : 定位精度受美国军方限 而具有更强的抗干扰能 供各种不同的用户使用 户要求 . 书1 力 用户数量受一 定限制 民用领域: 用于航空/航海导航、 大地测量、石油勘探、地震测量、 由于种种原因. 目前处 野外救生、探险、森林防火、飞 于“半可用” 状态. 市 机播种、农田耕种、车辆自动导 场中GL0NASS设备极 2010年正式投入商业运 使用者基本是军队等国 应用现状 航监控、机场,港13'交通管理等诸 少, 而且多是美国产品, 行 家用户. 市面上很少有 多方面军用领域: 美军用于指挥 内置GL0NASS和GPS 北斗星的接收机出售 控制.兵力投送、精确制导、目 两种接收装置. 以提高 标侦察、战场救援、军事物流等 精度和可用性 方面 主动式双向测距二维导 定位原理 被动式伪码单向测距三维导航航。定位数据由地面控 , 定位数据由用户设备独立解算 制中心解算后提供给用 事物流领域,但仍处于初级阶段,其应用主要体现在以下几个方面 2.1 对军事物资运输的监控调度 通过将卫星定位系统的用户接收机安装在军用车辆、飞机、舰船上实现对军事物资运输的监控调度。利用卫星定位系统和 电子地图GIS可实时显示出运输工具的实际位置与轨迹,从而对其进行实时、有效的定位、监控和调度。实现方式是运输工具 通过终端接收导航定位信息,经处理后,将数据按一定格式由无线电收发机传送到指挥中心,指挥中心接收机将接收到的数据 输入计算机,经处理,在电子地图中显示运输工具和物资位置。 2.2 对军事运输路线的导航规划 选择正确、便捷的运输路线,是实现军事物流快速保障的前提条件。运用卫星定位系统的导航规划功能则充分满足了这一 需求。卫星导航系统的路线规划功能包括自动、手动和指令式3种。自动式路线规划是由驾驶员确定起点和终点,由计算机软 件按照要求自动设计最佳路线。手动式路线规划是驾驶员根据自己的目的地设计起点和终点等,系统在电子地图上设计路线, 同时显示运行途径和方向。指令式路线规划是指指挥中心对行驶站点的时间和路线能作出有效反应,提出路线的规划,并给运 输工具发出导航指令。实现方式是将卫星定位终端与计算机相连接,实现数据的实时传输,以电子地图的形式显示导航数据。 2-3 对需求信息的查询 在军事运输途中,卫星定位系统可以提供主要物标,在电子地图上根据需要进行查询,显示其位置。同时指挥中心可以利 用监测控制台对所在位置进行查询,车辆及物资信息则以数字形式在指挥中心的地图上显示出来。此外,利用卫星定位系统记 录和储存保障物资详细的运输内容和信息,消除了很多需要人工处理的环节,使得整个军事物流系统中所有程序及信息系统实 现信息传输的快速、准确、一致。 2 4 对险情、事故的紧急救援 72 {) ij¨P S t ~1 t lj 20~)g.{O 卫星定位系统在军事物流领域应用现状及前景探讨 通过卫星系统定位和监控管理系统可以对遇有险情或发生事故的地方进行紧急援助。监控台的电子地图显示求助信息和报 警目标,规划最优援助方案,并以报警声光提醒监控人员进行应急处理。我国自主研制的“北斗一号”卫星定位系统在四JIl汶 JIl地震救援中不仅实时监测到了救援部队的行进状态,而且在通信中断的情况下充分发挥了其短报文通信的功能,保障了救援 的顺利展开。 3 卫星定位系统在军事物流领域的应用前景 3.1 应用于建立网络化军事物流保障体系 军事物流保障网络化是信息化条件下一体化联合作战的要求,是指通过多种信息技术将各个物资保障网点(如物流中心、 后方基地、仓库等)集成为军事物流保障网,实现物流配送实体网络和信息网络的“无缝链接”,从而在战争中以实时的快速 反应、精确的投向投量和灵敏高效的指挥调度实现适时、适地、适量的后勤保障。卫星定位系统在军事物流网络化建设中具有 不可替代的作用,主要体现在功能多、精度高、覆盖面广,是构建网络的最佳技术设施和应用平台; 二是构筑在卫星定位系 统的网络公共平台,具有开放度高、资源共享程度高等优点,无地域性限制的信息获取,提高了定位系统的利用率。 3.2 应用于军事物流资产可视化管理 信息化条件下,战场透明度越来越高,物资储存和运输的可见性变得至关重要。物流资产可视化管理是依赖计算机技术、 网络技术、数据库技术、自动识别技术、卫星定位技术等多种信息技术,实现物资在储、在运、在处理全过程的数据跟踪可 视.使得部队指挥官可以不问断、可视化地掌握全部后勤资源的动态情况,全程跟踪“人员流”、 “装备流” 和“物资流”,并 指挥和控制其接收、分发和调换。在运资产通常是装载于某种运输工具,如火车、飞机、轮船、汽车等。实现在运资产可视 化,首先要掌握运输工具的实时位置,而掌握移动中的运输工具的实时位置离不开卫星定位系统。卫星定位系统在军事物流资 产可视化的应用,集中在两个主要方面:其~ 。卫星定位系统用于提供运输工具的位置数据。其二,卫星通信可使控制站和驾 驶员实现双向信息交流。有效运用卫星定位系统,形成有力的统一组织指挥中心,能够提高物流管理的透明度,为优质、高效 的物流保障提供坚实的技术平台。 3-3 应用于实现精确主动配送式保障模式 精确主动配送式保障是指在精确预测部队需求的前提下,打破过去那种逐级前送、被动等待的后勤保障运行机制,通过将 所需物资主动配送到战斗单位乃至士兵,使补给速度发生质的变化,是现代化军事物流保障模式的研究方向。物流配送的过程 是实物的空间位置转移过程,在物流配送过程中,涉及到货物的运输、仓储、装卸、送递等处理环节,对各个环节涉及的问题 如运输路线的选择、仓库位置的选择、仓库的容量设置、合理装卸策略、运输车辆的调度和投递路线的选择等进行有效的管理 和决策分析将有助于物流配送有效地利用现有资源, 降低消耗,提高效率。卫星定位系统解决了物流配送过程中运输车辆调度 和投递路线选择、精确定位部队用户等诸多问题,有利于提高物资的补给速度,从而实现精确主动配送式保障。 4 军事物流领域应用卫星定位系统的发展思路 目前.卫星定位系统在军事物流信息化建设的应用基本上还处于起步阶段,要实现这项技术的全面推广和运用.建立适应 我军后勤发展的军事物流系统,可以从以下几个方面着手: (1)加强卫星定位系统在军事物流领域推广应用的组织领导。由总部牵头统一组织规划、统一技术体制、统一信息标准、 统一软件开发,并与作战指挥系统兼容,从研究开始就杜绝卫星定位系统在军事物流领域应用中各自为政、互不统一、缺乏系 统集成等问题的出现。再就是加强军地合作,把军队的资源优势和地方的技术优势整合起来,共同研制、发展新技术,以保证 其在军事物流领域应用的有效性 (2)开展规划研究、突破关键技术。从顶层对研究项目进行规划设计,并根据我军现状确定当前及今后一段时期内卫星 定位系统在军事物流领域应用的重点和难点。必须立足于新技术引进后的自主开发和创新,形成自己的技术.组织科研力量协 力攻关,力争解决自主技术与外军技术相结合、抗干扰、精度限制、加密技术等关键难题,为卫星定位系统在军事物流信息化 建设中的进一步应用做好准备。 (3)研发基于卫星定位系统等先进信息技术的军事物流应用平台, 建设相关实验室,着眼未来信息化战争实际.跟踪国 内外、军内外卫星定位系统应用研究发展动态,积极探索卫星定位系统在我军军事物流领域的应用研究.以带动全军后勤信息 化的发展。 (4)在后勤保障部队试点后推广。选择部分后勤保障部队进行实验试点,使得卫星定位系统的应用真正与部队建设的实 际结合起来,通过解决实际中遇到的各种问题,不断完善卫星定位系统在军事物流建设的应用研究。从而最大限度地挖掘整个 军事物流系统的保障潜力,使我军后勤保障实现质的飞跃。 参考文献: [1】王宗喜,徐东.军事物流学[M].北京:清华大学出版,2007. 【2] 谭建中.物流信息技术【M】.北京: 中国物资出版社,2008. 【3】戢觉佑,王京海.美军后勤理论与实践【M】.天津:海军后勤学院,2003. f4】徐卫东.GPS+GLONASS+GALILEO三星跟踪技术【JJ_全球定位系统,2006(1):16—18 { 《' ;H s ( {l 200S {f) 73
管理贝贝 2019-12-02 01:16:43 0 浏览量 回答数 0

问题

【archsummit 回顾】阿里云章文嵩:构建大型云计算平台分布式技术的实践

演讲人:章文嵩博士,阿里集团的高级研究员与副总裁,主要负责基础核心软件研发和云计算产品研发、推进网络软硬件方面的性能优化、搭建下一代高可扩展低碳低成本电子商务基础设施。他也是开放源码及 Linux内...
云课堂 2019-12-01 21:03:36 14448 浏览量 回答数 9

回答

首先,我们先来聊聊各类数据模型。下列相关信息参考自Emil Eifrem的博文及NoSQL数据库说明。文档类数据库传承:受Lotus Notes启发而来。数据模型:文档汇总,包括键-值汇总。实例: CouchDB, MongoDB优势: 数据建模自然、程序员易于上手、开发流程短、兼容网页模式、便于达成CRUD(即添加、查询、更新及删除的简称)。图形类数据库传承:来自 Euler 及图形理论。数据模型:节点及关系,二者结合能够保持键-值间的成对状态实例: AllegroGraph, InfoGrid, Neo4j优势:轻松玩转复杂的图形问题、处理速度快关系类数据库传承:源自 E. F. Codd在大型共享数据库中所提出的数据关系模型理论数据模型:以关系组为基础实例: VoltDB, Clustrix, MySQL优势:性能强大、联机事务处理系统扩展性好、支持SQL访问、视图直观、擅长处理交易关系、与程序员间的交互效果优异面向对象类数据库传承:源自图形数据库方面的研究成果数据模型: 对象实例: Objectivity, Gemstone优势:擅长处理复杂的对象模型、快速的键-值访问及键-功能访问并且兼具图形数据库的各类功能键-值存储传承: Amazon Dynamo中的paper概念及分布式hash表数据模型:对成对键-值的全局化汇总实例: Membase, Riak优势:尺寸掌控得当、擅长处理持续的小规模读写需求、速度快、程序员易于上手BigTable Clones传承自:谷歌BigTable中的paper概念数据模型:纵列群,即在某个表格模型中,每行在理论上至少可以有一套单独的纵列配置实例: HBase, Hypertable, Cassandra优势:尺寸掌控得当、擅长应对大规模写入负载、可用性高、支持多数据中心、支持映射简化数据结构类服务传承: 不明实例: Redis数据模型: 执行过程基于索引、列表、集合及字符串值优势:为数据库应用引入前所未有的新鲜血液网格类数据库传承:源自数据网格及元组空间研究数据模型:基于空间的构架实例: GigaSpaces, Coherence优势:优良的性能表现及上佳的交易处理扩展性我们该为自己的应用程序选择哪套方案?选择的关键在于重新思考我们的应用程序如何依据不同数据模型及不同产品进行有针对性的协同工作。即用正确的数据模型处理对应的现实任务、用正确的产品解决对应的现实问题。要探究哪类数据模型能够切实为我们的应用程序提供帮助,可以参考“到底NoSQL能在我们的工作中发挥什么作用?”一文。在这篇文章中,我试着将各种不同特性、不同功能的常用创建系统中的那些非常规的应用实例综合起来。将应用实例中的客观需求与我们的选择联系起来。这样大家就能够逆向分析出我们的基础架构中适合引入哪些产品。至于具体结论是NoSQL还是SQL,这已经不重要了。关注数据模型、产品特性以及自身需要。产品总是将各种不同的功能集中起来,因此我们很难单纯从某一类数据模型构成方式的角度直接找到最合用的那款。对功能及特性的需求存在优先级,只要对这种优先级具备较为清晰的了解,我们就能够做出最佳选择。如果我们的应用程序需要…复杂的交易:因为没人愿意承受数据丢失,或者大家更倾向于一套简单易用的交易编程模式,那么请考虑使用关系类或网格类数据库。例如:一套库存系统可能需要完整的ACID(即数据库事务执行四要素:原子性、一致性、隔离性及持久性)。顾客选中了一件产品却被告知没有库存了,这类情况显然容易引起麻烦。因为大多数时候,我们想要的并不是额外补偿、而只是选中的那件货品。若是以扩展性为优先,那么NoSQL或SQL都能应对自如。这种情况下我们需要关注那些支持向外扩展、分类处理、实时添加及移除设备、负载平衡、自动分类及整理并且容错率较高的系统。要求持续保有数据库写入功能,则需要较高的可用性。在这种情况下不妨关注BigTable类产品,其在一致性方面表现出众。如有大量的小规模持续读写要求,也就是说工作负载处于波动状态,可以关注文档类、键-值类或是那些提供快速内存访问功能的数据库。引入固态硬盘作为存储媒介也是不错的选择。以社交网络为实施重点的话,我们首先想到的就是图形类数据库;其次则是Riak这种关系类数据库。具备简单SQL功能的常驻内存式关系数据库基本上就可以满足小型数据集合的需求。Redis的集合及列表操作也能发挥作用。如果我们的应用程序需要…在访问模式及数据类型多种多样的情况下,文档类数据库比较值得考虑。这类数据库不仅灵活性好,性能表现也可圈可点。需要完备的脱机报告与大型数据集的话,首选产品是Hadoop,其次则是支持映射简化的其它产品。不过仅仅支持映射简化还不足以提供如Hadoop一样上佳的处理能力。如果业务跨越数个数据中心,Bigtable Clone及其它提供分布式选项的产品能够应对由地域距离引起的延迟现象,并具备较好的分区兼容性。要建立CRUD应用程序,首选文档类数据库。这类产品简化了从外部访问复杂数据的过程。需要内置搜索功能的话,推荐Riak。要对数据结构中的诸如列表、集合、队列及发布/订阅信息进行操作,Redis是不二之选。其具备的分布式锁定、覆盖式日志及其它各种功能都会在这类应用状态下大放异彩。将数据以便于处理的形式反馈给程序员(例如以JSON、HTTP、REST、Javascript这类形式),文档类数据库能够满足这类诉求,键-值类数据库效果次之。如果我们的应用程序需要…以直观视图的形式进行同步交易,并且具备实时数据反馈功能,VoltDB算得上一把好手。其数据汇总以及时间窗口化的表现都非常抢眼。若是需要企业级的支持及服务水平协议,我们需要着眼于特殊市场。Membase就是这样一个例子。要记录持续的数据流,却找不到必要的一致性保障?BigTable Clone交出了令人满意的答卷,因为其工作基于分布式文件系统,所以可以应对大量的写入操作。要让操作过程变得尽可能简单,答案一定在托管或平台即服务类方案之中。它们存在的目的正是处理这类要求。要向企业级客户做出推荐?不妨考虑关系类数据库,因为它们的长项就是具备解决繁杂关系问题的技术。如果需要利用动态方式建立对象之间的关系以使其具有动态特性,图形类数据库能帮上大忙。这类产品往往不需要特定的模式及模型,因此可以通过编程逐步建立。S3这类存储服务则是为支持大型媒体信息而生。相比之下NoSQL系统则往往无法处理大型二进制数据块,尽管MongoDB本身具备文件服务功能。如果我们的应用程序需要…有高效批量上传大量数据的需求?我们还是得找点有对应功能的产品。大多数产品都无法胜任,因为它们不支持批量操作。文档类数据库或是键-值类数据库能够利用流畅的模式化系统提供便捷的上传途径,因为这两类产品不仅支持可选区域、添加区域及删除区域,而且无需建立完整的模式迁移框架。要实现完整性限制,就得选择一款支持SQL DLL的产品,并在存储过程或是应用程序代码中加以运行。对于协同工作极为依赖的时候就要选择图形类数据库,因为这类产品支持在不同实体间的迅速切换。数据的移动距离较短且不必经过网络时,可以在预存程序中做出选择。预存程序在关系类、网格类、文档类甚至是键-值类数据库中都能找到。如果我们的应用程序需要…键-值存储体系擅长处理BLOB类数据的缓存及存储问题。缓存可以用于应对网页或复杂对象的存储,这种方案能够降低延迟、并且比起使用关系类数据库来说成本也较低。对于数据安全及工作状态要求较高的话可以尝试使用定制产品,并且在普遍的工作范畴(例如向上扩展、调整、分布式缓存、分区及反规范化等等)之外一定要为扩展性(或其它方面)准备解决方案。多样化的数据类型意味着我们的数据不能简单用表格来管理或是用纵列来划分,其复杂的结构及用户组成(也可能还有其它各种因素)只有文档类、键-值类以及Bigtable Clone这些数据库才能应付。上述各类数据库都具备极为灵活的数据类型处理能力。有时其它业务部门会需要进行快速关系查询,引入这种查询方式可以使我们不必为了偶尔的查看而重建一切信息。任何支持SQL的数据库都能实现这类查询。至于在云平台上运行并自动充分利用云平台的功能——这种美好的愿望目前还只能是愿望。如果我们的应用程序需要…支持辅助索引,以便通过不同的关键词查找数据,这要由关系类数据库及Cassandra推出的新辅助索引系统共同支持才能实现。创建一套处于不断增长中的数据集合(真正天文数量级的数据)然而访问量却并不大,那么Bigtable Clone是最佳选择,因为它会将数据妥善安排在分布式文件系统当中。需要整合其它类型的服务并确保数据库提供延后写入同步功能?那最好的实现方式是捕捉数据库的各种变化并将其反馈到其它系统中以保障运作的一致性。通过容错性检查了解系统对供电中断、隔离及其它故障情况的适应程度。若是当前的某项技术尚无人问津、自己却感觉大有潜力可挖,不妨在这条路上坚持走下去。这种情况有时会带来意料之外的美好前景。尝试在移动平台上工作并关注CouchDB及移动版couchbase。哪种方案更好?25%的状态改善尚不足以让我们下决心选择NoSQL。选择标准是否恰当取决于实际情况。这类标准对你的方案有指导意义吗?如果你的公司尚处于起步阶段,并且需要尽快推出自己的产品,这时不要再犹豫不决了。无论是SQL还是NoSQL都可以作为参考。
a123456678 2019-12-02 03:00:14 0 浏览量 回答数 0

回答

大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。大数据技术,是指从各种各样类型的数据中,快速获得有价值信息的能力。适用于大数据的技术,包括大规模并行处理(MPP)数据库,数据挖掘电网,分布式文件系统,分布式数据库,云计算平台,互联网,和可扩展的存储系统。   大数据有四个基本特征:一、数据体量巨大(Vomule),二、数据类型多样(Variety),三、处理速度快(Velocity),四、价值密度低(Value)。   在大数据的领域现在已经出现了非常多的新技术,这些新技术将会是大数据收集、存储、处理和呈现最强有力的工具。大数据处理一般有以下几种关键性技术:大数据采集、大数据预处理、大数据存储及管理、大数据分析及挖掘、大数据展现和应用(大数据检索、大数据可视化、大数据应用、大数据安全等)。   大数据处理之一:采集。大数据的采集是指利用多个数据库来接收发自客户端(Web、App或者传感器形式等)的数据,并且用户可以通过这些数据库来进行简单的查询和处理工作。比如,电商会使用传统的关系型数据库MySQL和Oracle等来存储每一笔事务数据,除此之外,Redis和MongoDB这样的NoSQL数据库也常用于数据的采集。   在大数据的采集过程中,其主要特点和挑战是并发数高,因为同时有可能会有成千上万的用户来进行访问和操作,比如火车票售票网站和淘宝,它们并发的访问量在峰值时达到上百万,所以需要在采集端部署大量数据库才能支撑。并且如何在这些数据库之间进行负载均衡和分片的确是需要深入的思考和设计。   大数据处理之二:导入和预处理。虽然采集端本身会有很多数据库,但是如果要对这些海量数据进行有效的分析,还是应该将这些来自前端的数据导入到一个集中的大型分布式数据库,或者分布式存储集群,并且可以在导入基础上做一些简单的清洗和预处理工作。也有一些用户会在导入时使用来自Twitter的Storm来对数据进行流式计算,来满足部分业务的实时计算需求。   导入与预处理过程的特点和挑战主要是导入的数据量大,每秒钟的导入量经常会达到百兆,甚至千兆级别。   大数据处理之三:统计和分析。统计与分析主要利用分布式数据库,或者分布式计算集群来对存储于其内的海量数据进行普通的分析和分类汇总等,以满足大多数常见的分析需求,在这方面,一些实时性需求会用到EMC的GreenPlum、Oracle的Exadata,以及基于MySQL的列式存储Infobright等,而一些批处理,或者基于半结构化数据的需求可以使用Hadoop。   统计与分析这部分的主要特点和挑战是分析涉及的数据量大,其对系统资源,特别是I/O会有极大的占用。   大数据处理之四:挖掘。与前面统计和分析过程不同的是,数据挖掘一般没有什么预先设定好的主题,主要是在现有数据上面进行基于各种算法的计算,从而起到预测(Predict)的效果,从而实现一些高级别数据分析的需求。比较典型算法有用于聚类的Kmeans、用于统计学习的SVM和用于分类的NaiveBayes,主要使用的工具有Hadoop的Mahout等。该过程的特点和挑战主要是用于挖掘的算法很复杂,并且计算涉及的数据量和计算量都很大,常用数据挖掘算法都以单线程为主。   整个大数据处理的普遍流程至少应该满足这四个方面的步骤,才能算得上是一个比较完整的大数据处理。   大数据的处理方式大致分为数据流处理方式和批量数据处理方式两种。数据流处理的方式适合用于对实时性要求比较高的场合中。并不需要等待所有的数据都有了之后再进行处理,而是有一点数据就处理一点,更多地要求机器的处理器有较快速的性能以及拥有比较大的主存储器容量,对辅助存储器的要求反而不高。批量数据处理方式是对整个要处理的数据进行切割划分成小的数据块,之后对其进行处理。重点在于把大化小——把划分的小块数据形成小任务,分别单独进行处理,并且形成小任务的过程中不是进行数据传输之后计算,而是将计算方法(通常是计算函数——映射并简化)作用到这些数据块最终得到结果。   当前,对大数据的处理分析正成为新一代信息技术融合应用的节点。移动互联网、物联网、社交网络、数字家庭、电子商务等是新一代信息技术的应用形态,这些应用不断产生大数据。通过对不同来源数据的管理、处理、分析与优化,将结果反馈到上述应用中,将创造出巨大的经济和社会价值。大数据也是信息产业持续高速增长的新引擎。面对大数据市场的新技术、新产品、新业态会不断涌现。在硬件与集成设备领域,大数据将对芯片、存储产业产生重要影响,还将催生一体化数据存储处理服务器、内存计算等市场。在软件与服务领域,大数据将引发数据快速处理分析、数据挖掘技术和软件产品的发展。大数据利用将成为提高核心竞争力的关键因素。各行各业的决策正在从“业务驱动”转变为“数据驱动”。对大数据的分析可以使零售商实时掌握市场动态并迅速做出应对;可以为商家制定更加精准有效的营销策略提供决策支持;可以帮助企业为消费者提供更加及时和个性化的服务;在医疗领域,可提高诊断准确性和药物有效性;在公共事业领域,大数据也开始发挥促进经济发展、维护社会稳定等方面的重要作用。大数据时代科学研究的方法手段将发生重大改变。例如,抽样调查是社会科学的基本研究方法。在大数据时代,可通过实时监测,跟踪研究对象在互联网上产生的海量行为数据,进行挖掘分析,揭示出规律性的东西,提出研究结论和对策。   目前大数据在医疗卫生领域有广为所知的应用,公共卫生部门可以通过覆盖全国的患者电子病历数据库进行全面疫情监测。5千万条美国人最频繁检索的词条被用来对冬季流感进行更及时准确的预测。学术界整合出2003年H5N1禽流感感染风险地图,研究发行此次H7N9人类病例区域。社交网络为许多慢性病患者提供了临床症状交流和诊治经验分享平台,医生借此可获得院外临床效果统计数据。基于对人体基因的大数据分析,可以实现对症下药的个性化治疗。   在医药研发方面,大数据的战略意义在于对各方面医疗卫生数据进行专业化处理,对患者甚至大众的行为和情绪的细节化测量成为可能,挖掘其症状特点、行为习惯和喜好等,找到更符合其特点或症状的药品和服务,并针对性的调整和优化。在医药研究开发部门或公司的新药研发阶段,能够通过大数据技术分析来自互联网上的公众疾病药品需求趋势,确定更为有效率的投入产品比,合理配置有限研发资源。除研发成本外,医药公司能够优化物流信息平台及管理,更快地获取回报,一般新药从研发到推向市场的时间大约为13年,使用数据分析预测则能帮助医药研发部门或企业提早将新药推向市场。   在疾病诊治方面,可通过健康云平台对每个居民进行智能采集健康数据,居民可以随时查阅,了解自身健康程度。同时,提供专业的在线专家咨询系统,由专家对居民健康程度做出诊断,提醒可能发生的健康问题,避免高危病人转为慢性病患者,避免慢性病患者病情恶化,减轻个人和医保负担,实现疾病科学管理。对于医疗卫生机构,通过对远程监控系统产生数据的分析,医院可以减少病人住院时间,减少急诊量,实现提高家庭护理比例和门诊医生预约量的目标。武汉协和医院目前也已经与市区八家社区卫生服务中心建立远程遥控联系,并将在未来提供“从医院到家”的服务。在医疗卫生机构,通过实时处理管理系统产生的数据,连同历史数据,利用大数据技术分析就诊资源的使用情况,实现机构科学管理,提高医疗卫生服务水平和效率,引导医疗卫生资源科学规划和配置。大数据还能提升医疗价值,形成个性化医疗,比如基于基因科学的医疗模式。   在公共卫生管理方面,大数据可以连续整合和分析公共卫生数据,提高疾病预报和预警能力,防止疫情爆发。公共卫生部门则可以通过覆盖区域的卫生综合管理信息平台和居民信息数据库,快速监测传染病,进行全面疫情监测,并通过集成疾病监测和响应程序,进行快速响应,这些都将减少医疗索赔支出、降低传染病感染率。通过提供准确和及时的公众健康咨询,将会大幅提高公众健康风险意识,同时也将降低传染病感染风险。   在居民健康管理方面,居民电子健康档案是大数据在居民健康管理方面的重要数据基础,大数据技术可以促进个体化健康事务管理服务,改变现代营养学和信息化管理技术的模式,更全面深入地从社会、心理、环境、营养、运动的角度来对每个人进行全面的健康保障服务,帮助、指导人们成功有效地维护自身健康。另外,大数据可以对患者健康信息集成整合,在线远程为诊断和治疗提供更好的数据证据,通过挖掘数据对居民健康进行智能化监测,通过移动设备定位数据对居民健康影响因素进行分析等等,进一步提升居民健康管理水平。   在健康危险因素分析方面,互联网、物联网、医疗卫生信息系统及相关信息系统等普遍使用,可以系统全面地收集健康危险因素数据,包括环境因素(利用GIS系统采集大气、土壤、水文等数据),生物因素(包括致病性微生物、细菌、病毒、真菌等的监测数据),经济社会因素(分析经济收入、营养条件、人口迁徙、城镇化、教育就业等因素数据),个人行为和心理因素,医疗卫生服务因素,以及人类生物遗传因素等,利用大数据技术对健康危险因素进行比对关联分析,针对不同区域、人群进行评估和遴选健康相关危险因素及制作健康监测评估图谱和知识库也成为可能,提出居民健康干预的有限领域和有针对性的干预计划,促进居民健康水平的提高。 答案来源于网络
养狐狸的猫 2019-12-02 02:15:59 0 浏览量 回答数 0

回答

MongoDB ACID事务支持 这里要有一定的关系型数据库的事务的概念,不然不一定能理解的了这里说的事务概念。 下面说一说MongoDB的事务支持,这里可能会有疑惑,前面我们在介绍MongoDB时,说MongoDB是一个NoSQL数据库,不支持事务。这里又介绍MongoDB的事务。这里要说明一下MongoDB的事务支持跟关系型数据库的事务支持是两码事,如果你已经非常了解关系型数据库的事务,通过下面一副图对比MongoDB事务跟MySQL事务的不同之处。 MongoDB是如何实现事务的ACID? 1)MongoDB对原子性(Atomicity)的支持 原子性在Mongodb中到底是一个什么概念呢?为什么说支持但又说Mongodb的原子性是单行/文档级原子性,这里提供了一个MongoDB更新语句样例,如下图: MongoDB是如何实现事务的ACID? 更新“username”等于“tj.tang”的文档,更新salary、jobs、hours字段。这里对于这三个字段Mongodb在执行时要么都更新要么都不更新,这个概念在MySQL中可能你没有考虑过,但在MongoDB中由于文档可以嵌套子文档可以很复杂,所以Mongodb的原子性叫单行/文档级原子性。 对于关系型数据库的多行、多文档、多语句原子性目前Mongodb是不支持的,如下情况: MongoDB是如何实现事务的ACID? MongoDB更新条件为工资小于50万的人都把工资调整为50万,这就会牵扯到多文档更新原子性。如果当更新到Frank这个文档时,出现宕机,服务器重启之后是无法像关系型数据库那样做到数据回滚的,也就是说处理这种多文档关系型数据库事务的支持,但MongoDB不支持。那么怎么解决Mongodb这个问题呢?可以通过建模,MongoDB不是范式而是反范式的设计,通过大表和小表可以把相关的数据放到同一个文档中去。然后通过一条语句来执行操作。 2)MongoDB对一致性(consistency)的支持 对于数据一致性来说,传统数据库(单机)跟分布式数据库(MongoDB)对于数据一致性是不太一样的,怎么理解呢?如下图: MongoDB是如何实现事务的ACID? 对于传统型数据库来说,数据一致性主要是在单机上,单机的问题主要是数据进来时的规则检验,数据不能被破坏掉。而在分布式数据库上,因为他们都是多节点分布式的,我们讲的一致性往往就是讲的各个节点之间的数据是否一致。而MongoDB在这点上做的还是不错的,MongoDB支持强一致性或最终一致性(弱一致性),MongoDB的数据一致性也叫可调一致性,什么意思呢?如下图: MongoDB是如何实现事务的ACID? MongoDB的可调一致性,也就是可以自由选择强一致性或最终一致性,如果你的应用场景是前台的方式可以选择强一致性,如果你的应用场景是后台的方式(如报表)可以选择弱一致性。 一致性 上面我们讲到了通过将数据冗余存储到不同的节点来保证数据安全和减轻负载,下面我们来看看这样做引发的一个问题:保证数据在多个节点间的一致性是非常困难的。在实际应用中我们会遇到很多困难,同步节点可能会故障,甚至会无法恢复,网络可能会有延迟或者丢包,网络原因导致集群中的机器被分隔成两个不能互通的子域等等。在NoSQL中,通常有两个层次的一致性:第一种是强一致性,既集群中的所有机器状态同步保持一致。第二种是最终一致性,既可以允许短暂的数据不一致,但数据最终会保持一致。我们先来讲一下,在分布式集群中,为什么最终一致性通常是更合理的选择,然后再来讨论两种一致性的具体实现结节。 关于CAP理论 为什么我们会考虑削弱数据的一致性呢?其实这背后有一个关于分布式系统的理论依据。这个理论最早被Eric Brewer提出,称为CAP理论,尔后Gilbert和Lynch对CAP进行了理论证明。这一理论首先把分布式系统中的三个特性进行了如下归纳: 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。 分区容忍性(P):集群中的某些节点在无法联系后,集群整体是否还能继续进行服务。 而CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。 要保证数据强一致性,最简单的方法是令写操作在所有数据节点上都执行成功才能返回成功,也就是同步概念。而这时如果某个结点出现故障,那么写操作就成功不了了,需要一直等到这个节点恢复。也就是说,如果要保证强一致性,那么就无法提供7×24的高可用性。 而要保证可用性的话,就意味着节点在响应请求时,不用完全考虑整个集群中的数据是否一致。只需要以自己当前的状态进行请求响应。由于并不保证写操作在所有节点都写成功,这可能会导致各个节点的数据状态不一致。 CAP理论导致了最终一致性和强一致性两种选择。当然,事实上还有其它的选择,比如在Yahoo的PNUTS中,采用的就是松散的一致性和弱可用性结合的方法。但是我们讨论的NoSQL系统没有类似的实现,所以我们在后续不会对其进行讨论。 强一致性 强一致性的保证,要求所有数据节点对同一个key值在同一时刻有同样的value值。虽然实际上可能某些节点存储的值是不一样的,但是作为一个整体,当客户端发起对某个key的数据请求时,整个集群对这个key对应的数据会达成一致。下面就举例说明这种一致性是如何实现的。 假设在我们的集群中,一个数据会被备份到N个结点。这N个节点中的某一个可能会扮演协调器的作用。它会保证每一个数据写操作会在成功同步到W个节点后才向客户端返回成功。而当客户端读取数据时,需要至少R个节点返回同样的数据才能返回读操作成功。而NWR之间必须要满足下面关系:R+W>N 下面举个实在的例子。比如我们设定N=3(数据会备份到A、B、C三个结点)。比如值 employee30:salary 当前的值是20000,我们想将其修改为30000。我们设定W=2,下面我们会对A、B、C三个节点发起写操作(employee30:salary, 30000),当A、B两个节点返回写成功后,协调器就会返回给客户端说写成功了。至于节点C,我们可以假设它从来没有收到这个写请求,他保存的依然是20000那个值。之后,当一个协调器执行一个对employee30:salary的读操作时,他还是会发三个请求给A、B、C三个节点: 如果设定R=1,那么当C节点先返回了20000这个值时,那我们客户端实际得到了一个错误的值。 如果设定R=2,则当协调器收到20000和30000两个值时,它会发现数据不太正确,并且会在收到第三个节点的30000的值后判断20000这个值是错误的。 所以如果要保证强一致性,在上面的应用场景中,我们需要设定R=2,W=2 如果写操作不能收到W个节点的成功返回,或者写操作不能得到R个一致的结果。那么协调器可能会在某个设定的过期时间之后向客户端返回操作失败,或者是等到系统慢慢调整到一致。这可能就导致系统暂时处于不可用状态。 对于R和W的不同设定,会导致系统在进行不同操作时需要不同数量的机器节点可用。比如你设定在所有备份节点上都写入才算写成功,既W=N,那么只要有一个备份节点故障,写操作就失败了。一般设定是R+W = N+1,这是保证强一致性的最小设定了。一些强一致性的系统设定W=N,R=1,这样就根本不用考虑各个节点数据可能不一致的情况了。 HBase是借助其底层的HDFS来实现其数据冗余备份的。HDFS采用的就是强一致性保证。在数据没有完全同步到N个节点前,写操作是不会返回成功的。也就是说它的W=N,而读操作只需要读到一个值即可,也就是说它R=1。为了不至于让写操作太慢,对多个节点的写操作是并发异步进行的。在直到所有的节点都收到了新的数据后,会自动执行一个swap操作将新数据写入。这个操作是原子性和一致性的。保证了数据在所有节点有一致的值。 最终一致性 像Voldemort,Cassandra和Riak这些类Dynamo的系统,通常都允许用户按需要设置N,R,W三个值,即使是设置成W+R<= N也是可以的。也就是说他允许用户在强一致性和最终一致性之间自由选择。而在用户选择了最终一致性,或者是W 3)MongoDB对隔离性(isolation)的支持 在关系型数据库中,SQL2定义了四种隔离级别,分别是READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。但是很少有数据库厂商遵循这些标准,比如Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ隔离级别。而MySQL支持这全部4种隔离级别。每一种级别都规定了一个事务中所做的修改,哪些在事务内核事务外是可见的,哪些是不可见的。为了尽可能减少事务间的影响,事务隔离级别越高安全性越好但是并发就越差;事务隔离级别越低,事务请求的锁越少,或者保持锁的时间就越短,这也就是为什么绝大多数数据库系统默认的事务隔离级别是RC。 下图展示了几家不同的数据库厂商的不同事物隔离级别。 MongoDB是如何实现事务的ACID? MongoDB在3.2之前使用的是“读未提交”,这种情况下会出现“脏读”。但在MongoDB 3.2开始已经调整为“读已提交”。 下面说说每种隔离级别带来的问题: READ-UNCOMMITTED(读尚未提交的数据) 在这个级别,一个事务的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为“脏读(dirty read)”。这个级别会导致很多问题,从性能上来说,READ UNCOMMITTED不会比其他的级别好太多,但却缺乏其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。 READ-COMMITTED(读已提交的数据) 在这个级别,能满足前面提到的隔离性的简单定义:一个事务开始时,只能“看见”已经提交的事务所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫“不可重复读(non-repeatable read)”,因为两次执行同样的查询,可能会得到不一样的结果。 REPEATABLE-READ(可重复读) 在这个级别,保证了在同一个事务中多次读取统一记录的结果是一致的。MySQL默认使用这个级别。InnoDB和XtraDB存储引擎通过多版本并发控制MVCC(multiversion concurrency control)解决了“幻读”和“不可重复读”的问题。通过前面的学习我们知道RR级别总是读取事务开始那一刻的快照信息,也就是说这些数据数据库当前状态,这在一些对于数据的时效特别敏感的业务中,就很可能会出问题。 SERIALIZABLE(串行化) 在这个级别,它通过强制事务串行执行,避免了前面说的一系列问题。简单来说,SERIALIZABLE会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。实际应用中也很少在本地事务中使用SERIALIABLE隔离级别,主要应用在InnoDB存储引擎的分布式事务中。 4)MongoDB对持久性(durability)的支持 对于数据持久性来说,在传统数据库中(单机)的表现为服务器任何时候发生宕机都不需要担心数据丢失的问题,因为有方式可以把数据永久保存起来了。一般都是通过日志来保证数据的持久性。通过下图来看一下传统数据库跟MongoDB对于数据持久性各自所使用的方式。 MongoDB是如何实现事务的ACID? 从上图可以看出,MongoDB同样是使用数据进来先写日志(日志刷盘的速度是非常快)然后在写入到数据库中的这种方式来保证数据的持久性,如果出现服务器宕机,当启动服务器时会从日志中读取数据。不同的是传统数据库这种方式叫做“WAL” Write-Ahead Logging(预写日志系统),而MongoDB叫做“journal”。此外MongoDB在数据持久性上这点可能做的更好,MongoDB的复制默认节点就是三节点以上的复制集群,当数据到达主节点之后会马上同步到从节点上去。
景凌凯 2019-12-02 02:05:12 0 浏览量 回答数 0

问题

小试用,大学问菜鸟也要知道如何去试用之云服务器测评

        相信各位都知道云服务器的三大省,省时、省力、省钱。很多人转到云主机来,也是因为这个原因,独立主机的高昂费用,合租的不稳定,虚拟主机的不靠谱,...
universitylife 2019-12-01 21:15:34 33359 浏览量 回答数 19

问题

小试用,大学问菜鸟也要知道如何去试用之云服务器测评

        相信各位都知道云服务器的三大省,省时、省力、省钱。很多人转到云主机来,也是因为这个原因,独立主机的高昂费用,合租的不稳定,虚拟主机的不靠谱,...
universitylife 2019-12-01 21:31:33 15660 浏览量 回答数 10

问题

用JavaScript编写一个Java虚拟机?谈谈哗众取宠的BicaVM 400 请求报错 

http://www.cnbeta.com/articles/163172.htm 感谢鹏凌三千的投递 新闻来源:原创 今日目睹某网络新闻,开篇明义便包含如下几行文字【程序员Artur Ventura,这位超级大...
kun坤 2020-05-29 09:57:19 2 浏览量 回答数 1

回答

 TTS</B>是Text To Speech的缩写,即“从文本到语音”。它是同时运用语言学和心理学的杰出之作,在内置芯片的支持之下,通过神经网络的设计,把文字智能地转化为自然语音流。TTS技术对文本文件进行实时转换,转换时间之短可以秒计算。在其特有智能语音控制器作用下,文本输出的语音音律流畅,使得听者在听取信息时感觉自然,毫无机器语音输出的冷漠与生涩感。TTS语音合成技术即将覆盖国标一、二级汉字,具有英文接口,自动识别中、英文,支持中英文混读。所有声音采用真人普通话为标准发音,实现了120-150个汉字/秒的快速语音合成,朗读速度达3-4个汉字/秒,使用户可以听到清晰悦耳的音质和连贯流畅的语调。现在有少部分MP3随身听具有了TTS功能。   TTS是语音合成应用的一种,它将储存于电脑中的文件,如帮助文件或者网页,转换成自然语音输出。TTS可以帮助有视觉障碍的人阅读计算机上的信息,或者只是简单的用来增加文本文档的可读性。现在的TTL应用包括语音驱动的邮件以及声音敏感系统。TTS经常与声音识别程序一起使用。现在有很多TTS的产品,包括Read Please 2000, Proverbe Speech Unit,以及Next Up Technology的TextAloud。朗讯、 Elan、以及 AT&T都有自己的语音合成产品。   除了TTS软件之外,很多商家还提供硬件产品,其中包括以色列WizCom Technologies公司的 Quick Link Pen,它是一个笔状的可以扫描也可以阅读文字的设备;还有Ostrich Software公司的Road Runner,一个手持的可以阅读ASCII文本的设备;另外还有美国DEC公司的DecTalk TTS,它是可以替代声卡的外部硬件设备,它包含一个内部软件设备,可以与个人电脑自己的声卡协同工作。 TTS文语转换用途很广,包括电子邮件的阅读、IVR系统的语音提示等等,目前IVR系统已广泛应用于各个行业(如电信、交通运输等)。   TTS所用的关键技术就是语音合成(SpeechSynthesis)。早期的TTS一般采用专用的芯片实现,如德州仪器公司的TMS50C10/TMS50C57、飞利浦的PH84H36等,但主要用在家用电器或儿童玩具中。   而基于微机应用的TTS一般用纯软件实现,主要包括以下几部分:   ●文本分析-对输入文本进行语言学分析,逐句进行词汇的、语法的和语义的分析,以确定句子的低层结构和每个字的音素的组成,包括文本的断句、字词切分、多音字的处理、数字的处理、缩略语的处理等。   ●语音合成-把处理好的文本所对应的单字或短语从语音合成库中提取,把语言学描述转化成言语波形。   ●韵律处理-合成音质(Qualityof Synthetic Speech)是指语音合成系统所输出的语音的质量,一般从清晰度(或可懂度)、自然度和连贯性等方面进行主观评价。清晰度是正确听辨有意义词语的百分率;自然度用来评价合成语音音质是否接近人说话的声音,合成词语的语调是否自然; 连贯性用来评价合成语句是否流畅。   要合成出高质量的语音,所采用的算法是极为复杂的,因此对机器的要求也非常高。算法的复杂度决定了目前微机并发进行多通道TTS的系统容量。 在一般的CTI应用系统中,都会有IVR(交互式语音应答系统)。IVR系统是呼叫中心的重要组成部分,通过IVR系统,用户可以利用音频按健电话输入信息,从系统中获得预先录制的数字或合成语音信息。具有TTS功能的IVR可以加快服务速度,节约服务成本,使IVR为呼叫者提供7*24小时的服务。   目前常见的IVR系统大都是通用的工控机平台上插入语音板卡组成,并支持中文语音合成TTS等技术。   一个典型的包含TTS服务的电话服务流程可分为:   用户电话拨入,系统IVR响应,获得用户按键等信息。   IVR根据用户的按键信息,向数据库服务器申请相关数据。   数据库服务器返回文本数据给IVR。   IVR通过其TCP通讯接口,将需要合成的文本信息发送给TTS服务器。   TTS服务器将用户文本合成的语音数据分段通过TCP通讯接口发送给IVR服务器。   IVR服务器把分段语音数据组装成为独立的语音文件。   IVR播放相应的语音文件给电话用户。   一般的公网接入(IVR)大都采用工控机+语音板卡,而合成的语音数据则通过局域网传给IVR。这种结构只适用于简单的应用场合。 包括中文语音处理和语音合成,利用中文韵律等相关知识对中文语句进行分词、词性判断、注音、数字符号转换,语音合成通过查询中文语音库得到语音。目前中文TTS系统,比较著名的有:IBM,Microsoft,Fujitsu,科大讯飞,捷通华声等研究的系统。目前比较关键的就是中文韵律处理、符号数字、多音字、构词方面有较多的问题,需要不断研究,使得中文语音合成的自然化程度较高。  CTI技术使电信和计算机相互融合,克服了传统电信和计算机服务相对单一的缺点,将两者完美结合了起来。其应用领域非常广泛,任何需要语音、数据通信,特别是那些希望把计算机网与通信网结合起来完成语音数据信息交换的系统都会用到CTI技术。   TTS即语音合成技术(Text To Speech),它涉及声学、语言学、数学信号处理技术、多媒体技术等多个学科技术,是中文信息处理领域的一项前沿技术,实现把计算机中任意出现的文字转换成自然流畅的语音输出。   TTS在CTI系统中可以应用在IVR(交互式语音应答)服务器上,以提供语音交互式平台,为用户电话来访提供语音提示,引导用户选择服务内容和输入电话事务所需的数据,并接受用户在电话拨号键盘上输入的信息,实现对计算机数据库等信息资料的交互式访问。   在IVR中应用TTS可以自动将文本信息转换为语音文件,或者实时地将文本信息合成语音并通过电话发布。实现文本与语音自动双向转换,以达到人与系统的自动交互,随时随地为客户服务。维护人员不必再人工录音,只须将电子文档引入系统中,系统可以自动将电子文档转换为语音信息播放给客户。数据库中存放的大量数据,无需事先进行录音,能够随时根据查询条件查出并合成语音进行播报,从而大大减少了座席人员的工作负担。   那么应如何将TTS功能附加到CTI应用中呢?某些比较先进的交换平台,已经在交换机的内部实现了TTS的功能,并作为标准接口的一部分对外提供,业务开发商只需要简单的调用他们即可以在业务中使用该功能。   对于未实现TTS功能的PBX,就需要业务开发商自己去选择合适的平台,在此基础上进行二次开发,即调用所选TTS平台提供的标准接口,实现语音合成功能。   目前CTI已经成为全球发展最为迅猛的产业之一,每年以50%的速度增长,CTI如同计算机产业一样是一个金字塔形的产业链,从上到下会以至少20倍的幅度增值。TTS作为一种诱人的新技术,如果能很好的嵌入到增值业务的应用中去,必将形成一个更好的应用前景。   杭州音通软件有限公司是由国家教育部和浙江省人民政府联办并依托浙江大学而成立的高新技术公司,音通公司主要致力于计算机语音技术的研发并逐步开拓语音识别、语音流媒体传输等其它语音领域的研究。其核心技术(Intone_TTS)是具有自主知识产权的中文语音合成技术,在由浙江省科技厅组织的鉴定中被专家一致鉴定为国内领先地位,并已申请多项国家专利。   Intone_TTS是一套把文本信息转换为语音信息的开发工具包,为系统集成商、软件开发商提供了完备的接口函数和编程示例,使用户能够灵活的进行调用,并集成到其它应用系统中。接口需要语音合成运行库的支持,适合多种开发环境。开发者可以根据具体的应用场合进行选择。   它能够对所有的汉字、英文、阿拉伯数字进行语音合成;   支持繁体字及多音字的编辑;   合成效果:自然、平滑;   规范的函数调用接口,同时支持微软SAPI的调用;支持同步调用和异步调用方式;   支持PCM Wave,uLaw/aLaw Wave,ADPCM,Dialogic Vox等多种语音格式;   支持GB2312码(简体中文)、BIG5码(繁体)、UNICODE码;   支持多路通道同时合成;   支持Dialogic、东进、三汇等主流语音板卡; TTS就是Text To Speech,文本转语音,文本朗读,差不多是一个意思。在语音系统开发中经常要用到。   目前市场上的TTS很多,实现方式也各式各样,有的很昂贵,如科大讯飞,据说当初得到863计划的资助,有很高的技术;有的相对便宜,如捷通华声, InfoTalk;也有免费的,如微软的TTS产品。   相对于ASR(Automatic Speech Recognition,自动语音识别)来说,实现一个TTS产品所需要的技术难度不算大,在我看来也就是个力气活。   要是让我们来做一个能够把汉语句子朗读出来的TTS,我们会怎么做呢?   有一种最简单的TTS,就是把每个字都念出来,你会问,岂不要录制6千多个汉字的语音?幸运的是,汉语的音节很少,很多同音字。我们最多只是需要录制: 声母数×韵母数×4,(其实不是每个读音都有4声),这样算来,最多只需要录制几百个语音就可以了。   在合成的时候需要一张汉字对应拼音的对照表,汉字拼音输入法也依赖这张表,可以在网上找到,不过通常没有4声音调,大不了自己加上,呵呵,要不怎么说是力气活呢。   这样做出来的TTS效果也还可以,特别是朗读一些没有特别含义的如姓名,家庭住址,股票代码等汉语句子,听起来足够清晰。这要归功于我们伟大的母语通常都是单音节,从古代的时候开始,每个汉字就有一个词,表达一个意思。而且汉字不同于英语,英语里面很多连读,音调节奏变化很大,汉字就简单多了。   当然,你仍然要处理一些细节,比如多音字,把“银行”读成“yin xing”就不对了;再比如,标点符号的处理,数字、字母的处理,这些问题对于写过很多程序的你,当然不难了。   国内的一些语音板卡带的TTS,不管是卖钱的还是免费的,大体都是这样做出来的,也就是这样的效果。   如果要把TTS的效果弄好一点,再来点力气活,把基本的词录制成语音,如常见的两字词,四字成语等,再做个词库和语音库的对照表,每次需要合成时到词库里面找。这样以词为单位,比以字为单位,效果自然是好多了。当然,这里面还是有个技术,就是分词的技术,要把复杂的句子断成合理的词序列,也有点技术。这也要怪新文化那些先驱们,当初倡导白话文,引进西文的横排格式、标点符号的时候,没有引进西文中的空格分词。不过即使分词算法那么不高效,不那么准确,也问题不大,如前面所说,汉字是单音节词,把声音合起来,大体上不会有错。   当然,科大讯飞的力气活又干的多了些,据说已经进化到以常用句子为单位来录音了,大家可以想像,这要耗费更多的力气,换来更好的效果。   至于增加一些衔接处的“词料”,弄一些修饰性的音调,我认为是无关紧要的,对整体的效果改进不是太大。   市面上商品化TTS一般还支持粤语,请个粤语播音员录音,把上面的力气活重做一遍就是了。   再说句题外话,很多人觉得录音最好找电台、电视台的播音员,其实找个你周围的女同事来录制,只要吐字清晰就可以了。在某种情况下,寻常声音比字正腔圆的新闻联播来得可爱。   再来说说文本的标识,对于复杂文本,某些内容程序没有办法处理,需要标识出来。比如,单纯的数字“128”,是应该念成“一百二十八”还是“一二八”?解决办法通常是加入XML标注,如微软的TTS:"<context ID = "number_cardinal">128</context>"念成“一百二十八”,"<context ID = "number_digit">128</context>"将念成“一二八”。TTS引擎可以去解释这些标注。遗憾的是,语音XML标注并没有形成大家都完全认可的标准,基本上是各自一套。   再说说TTS应用编程,微软的TTS编程接口叫SAPI,是COM接口,开发起来还是有点麻烦,还好MSDN的网站上资料很全面。微软的TTS虽然免费,但其中文角色目前是个男声,声音略嫌混浊,感觉不爽。   国内一般的厂家提供API调用接口,相对比较简单,可以方便地嵌入应用程序中去。   商品化的TTS还有个并发许可限制,就是限制同时合成的并发线程数,我觉得这个限制用处不大。无论哪种TTS,都可以将文本文件转换成语音文件,供语音卡播放。大部分应用句子比较短小,一般不会超过100个汉字,合成的时间是非常短的,弄个线程专门负责合成,其它应用向该线程请求就是了,万一句子很长,把它分解成多个短句子就是了,播放的速度总是比合成的速度慢。   也很多应用是脱机合成,没有实时性要求,就更不必买多个许可了。   更多情况下,我们甚至没有必要购买TTS,比如语音开发中常见的费用催缴,拨通后播放:“尊敬的客户,您本月的费用是:212元”,前面部分对所有客户都一样,录一个语音文件就是了,而数字的合成是很简单的,你只要录制好10个数字语音,再加上十,百,千,万,再加上金钱的单位“元”。   TTS(Training+Tool+Scheme)超越计划   针对目前成长型企业遇到的人力资源问题,立体化解决人力资源瓶颈、通过企业与专家共建、实现人才强企的人力资源方向的重大智业项目。为企业培养人力资源高级管理人才,提供先进人力资源管理工具,并协助企业建立现代人力资源战略规划。通过“培训(Training)+工具(Tool)+方案(Scheme)”的办法,为企业系统解决人力资源难点问题,进而搭建科学、完善的人力资源管理体系。   TTS TIANJIN TERMINAL SURCHARGE   天津港口附加费。09年从日韩经过的船所收的一个费用 答案来源网络,供参考,希望对您有帮助
问问小秘 2019-12-02 03:05:12 0 浏览量 回答数 0

回答

92题 一般来说,建立INDEX有以下益处:提高查询效率;建立唯一索引以保证数据的唯一性;设计INDEX避免排序。 缺点,INDEX的维护有以下开销:叶节点的‘分裂’消耗;INSERT、DELETE和UPDATE操作在INDEX上的维护开销;有存储要求;其他日常维护的消耗:对恢复的影响,重组的影响。 需要建立索引的情况:为了建立分区数据库的PATITION INDEX必须建立; 为了保证数据约束性需要而建立的INDEX必须建立; 为了提高查询效率,则考虑建立(是否建立要考虑相关性能及维护开销); 考虑在使用UNION,DISTINCT,GROUP BY,ORDER BY等字句的列上加索引。 91题 作用:加快查询速度。原则:(1) 如果某属性或属性组经常出现在查询条件中,考虑为该属性或属性组建立索引;(2) 如果某个属性常作为最大值和最小值等聚集函数的参数,考虑为该属性建立索引;(3) 如果某属性经常出现在连接操作的连接条件中,考虑为该属性或属性组建立索引。 90题 快照Snapshot是一个文件系统在特定时间里的镜像,对于在线实时数据备份非常有用。快照对于拥有不能停止的应用或具有常打开文件的文件系统的备份非常重要。对于只能提供一个非常短的备份时间而言,快照能保证系统的完整性。 89题 游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。 88题 事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。 87题 MySQL可以使用多个字段同时建立一个索引,叫做联合索引。在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。具体原因为:MySQL使用索引时需要索引有序,假设现在建立了"name,age,school"的联合索引,那么索引的排序为: 先按照name排序,如果name相同,则按照age排序,如果age的值也相等,则按照school进行排序。因此在建立联合索引的时候应该注意索引列的顺序,一般情况下,将查询需求频繁或者字段选择性高的列放在前面。此外可以根据特例的查询或者表结构进行单独的调整。 86题 建立索引的时候一般要考虑到字段的使用频率,经常作为条件进行查询的字段比较适合。如果需要建立联合索引的话,还需要考虑联合索引中的顺序。此外也要考虑其他方面,比如防止过多的所有对表造成太大的压力。这些都和实际的表结构以及查询方式有关。 85题 存储过程是一组Transact-SQL语句,在一次编译后可以执行多次。因为不必重新编译Transact-SQL语句,所以执行存储过程可以提高性能。触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。 84题 存储过程是用户定义的一系列SQL语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。 83题 减少表连接,减少复杂 SQL,拆分成简单SQL。减少排序:非必要不排序,利用索引排序,减少参与排序的记录数。尽量避免 select *。尽量用 join 代替子查询。尽量少使用 or,使用 in 或者 union(union all) 代替。尽量用 union all 代替 union。尽量早的将无用数据过滤:选择更优的索引,先分页再Join…。避免类型转换:索引失效。优先优化高并发的 SQL,而不是执行频率低某些“大”SQL。从全局出发优化,而不是片面调整。尽可能对每一条SQL进行 explain。 82题 如果条件中有or,即使其中有条件带索引也不会使用(要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引)。对于多列索引,不是使用的第一部分,则不会使用索引。like查询是以%开头。如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引。如果mysql估计使用全表扫描要比使用索引快,则不使用索引。例如,使用<>、not in 、not exist,对于这三种情况大多数情况下认为结果集很大,MySQL就有可能不使用索引。 81题 主键不能重复,不能为空,唯一键不能重复,可以为空。建立主键的目的是让外键来引用。一个表最多只有一个主键,但可以有很多唯一键。 80题 空值('')是不占用空间的,判断空字符用=''或者<>''来进行处理。NULL值是未知的,且占用空间,不走索引;判断 NULL 用 IS NULL 或者 is not null ,SQL 语句函数中可以使用 ifnull ()函数来进行处理。无法比较 NULL 和 0;它们是不等价的。无法使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。NULL 值可以使用 <=> 符号进行比较,该符号与等号作用相似,但对NULL有意义。进行 count ()统计某列的记录数的时候,如果采用的 NULL 值,会被系统自动忽略掉,但是空值是统计到其中。 79题 HEAP表是访问数据速度最快的MySQL表,他使用保存在内存中的散列索引。一旦服务器重启,所有heap表数据丢失。BLOB或TEXT字段是不允许的。只能使用比较运算符=,<,>,=>,= <。HEAP表不支持AUTO_INCREMENT。索引不可为NULL。 78题 如果想输入字符为十六进制数字,可以输入带有单引号的十六进制数字和前缀(X),或者只用(Ox)前缀输入十六进制数字。如果表达式上下文是字符串,则十六进制数字串将自动转换为字符串。 77题 Mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。 76题 在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。 75题 它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。 74题 创建索引的时候尽量使用唯一性大的列来创建索引,由于使用b+tree做为索引,以innodb为例,一个树节点的大小由“innodb_page_size”,为了减少树的高度,同时让一个节点能存放更多的值,索引列尽量在整数类型上创建,如果必须使用字符类型,也应该使用长度较少的字符类型。 73题 当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下: 限定数据的范围: 务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内。读/写分离: 经典的数据库拆分方案,主库负责写,从库负责读。垂直分区: 根据数据库里面数据表的相关性进行拆分。简单来说垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。水平分区: 保持数据表结构不变,通过某种策略存储数据分片。这样每一片数据分散到不同的表或者库中,达到了分布式的目的。水平拆分可以支撑非常大的数据量。 72题 乐观锁失败后会抛出ObjectOptimisticLockingFailureException,那么我们就针对这块考虑一下重试,自定义一个注解,用于做切面。针对注解进行切面,设置最大重试次数n,然后超过n次后就不再重试。 71题 一致性非锁定读讲的是一条记录被加了X锁其他事务仍然可以读而不被阻塞,是通过innodb的行多版本实现的,行多版本并不是实际存储多个版本记录而是通过undo实现(undo日志用来记录数据修改前的版本,回滚时会用到,用来保证事务的原子性)。一致性锁定读讲的是我可以通过SELECT语句显式地给一条记录加X锁从而保证特定应用场景下的数据一致性。 70题 数据库引擎:尤其是mysql数据库只有是InnoDB引擎的时候事物才能生效。 show engines 查看数据库默认引擎;SHOW TABLE STATUS from 数据库名字 where Name='表名' 如下;SHOW TABLE STATUS from rrz where Name='rrz_cust';修改表的引擎alter table table_name engine=innodb。 69题 如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;当然了,这个前提是,键值都是唯一的。如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据;如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;同理,哈希索引也没办法利用索引完成排序,以及like ‘xxx%’ 这样的部分模糊查询(这种部分模糊查询,其实本质上也是范围查询);哈希索引也不支持多列联合索引的最左匹配规则;B+树索引的关键字检索效率比较平均,不像B树那样波动幅度大,在有大量重复键值情况下,哈希索引的效率也是极低的,因为存在所谓的哈希碰撞问题。 68题 decimal精度比float高,数据处理比float简单,一般优先考虑,但float存储的数据范围大,所以范围大的数据就只能用它了,但要注意一些处理细节,因为不精确可能会与自己想的不一致,也常有关于float 出错的问题。 67题 datetime、timestamp精确度都是秒,datetime与时区无关,存储的范围广(1001-9999),timestamp与时区有关,存储的范围小(1970-2038)。 66题 Char使用固定长度的空间进行存储,char(4)存储4个字符,根据编码方式的不同占用不同的字节,gbk编码方式,不论是中文还是英文,每个字符占用2个字节的空间,utf8编码方式,每个字符占用3个字节的空间。Varchar保存可变长度的字符串,使用额外的一个或两个字节存储字符串长度,varchar(10),除了需要存储10个字符,还需要1个字节存储长度信息(10),超过255的长度需要2个字节来存储。char和varchar后面如果有空格,char会自动去掉空格后存储,varchar虽然不会去掉空格,但在进行字符串比较时,会去掉空格进行比较。Varbinary保存变长的字符串,后面不会补\0。 65题 首先分析语句,看看是否load了额外的数据,可能是查询了多余的行并且抛弃掉了,可能是加载了许多结果中并不需要的列,对语句进行分析以及重写。分析语句的执行计划,然后获得其使用索引的情况,之后修改语句或者修改索引,使得语句可以尽可能的命中索引。如果对语句的优化已经无法进行,可以考虑表中的数据量是否太大,如果是的话可以进行横向或者纵向的分表。 64题 建立索引的时候一般要考虑到字段的使用频率,经常作为条件进行查询的字段比较适合。如果需要建立联合索引的话,还需要考虑联合索引中的顺序。此外也要考虑其他方面,比如防止过多的所有对表造成太大的压力。这些都和实际的表结构以及查询方式有关。 63题 存储过程是一些预编译的SQL语句。1、更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。2、存储过程是一个预编译的代码块,执行效率比较高,一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率,可以一定程度上确保数据安全。 62题 密码散列、盐、用户身份证号等固定长度的字符串应该使用char而不是varchar来存储,这样可以节省空间且提高检索效率。 61题 推荐使用自增ID,不要使用UUID。因为在InnoDB存储引擎中,主键索引是作为聚簇索引存在的,也就是说,主键索引的B+树叶子节点上存储了主键索引以及全部的数据(按照顺序),如果主键索引是自增ID,那么只需要不断向后排列即可,如果是UUID,由于到来的ID与原来的大小不确定,会造成非常多的数据插入,数据移动,然后导致产生很多的内存碎片,进而造成插入性能的下降。总之,在数据量大一些的情况下,用自增主键性能会好一些。 60题 char是一个定长字段,假如申请了char(10)的空间,那么无论实际存储多少内容。该字段都占用10个字符,而varchar是变长的,也就是说申请的只是最大长度,占用的空间为实际字符长度+1,最后一个字符存储使用了多长的空间。在检索效率上来讲,char > varchar,因此在使用中,如果确定某个字段的值的长度,可以使用char,否则应该尽量使用varchar。例如存储用户MD5加密后的密码,则应该使用char。 59题 一. read uncommitted(读取未提交数据) 即便是事务没有commit,但是我们仍然能读到未提交的数据,这是所有隔离级别中最低的一种。 二. read committed(可以读取其他事务提交的数据)---大多数数据库默认的隔离级别 当前会话只能读取到其他事务提交的数据,未提交的数据读不到。 三. repeatable read(可重读)---MySQL默认的隔离级别 当前会话可以重复读,就是每次读取的结果集都相同,而不管其他事务有没有提交。 四. serializable(串行化) 其他会话对该表的写操作将被挂起。可以看到,这是隔离级别中最严格的,但是这样做势必对性能造成影响。所以在实际的选用上,我们要根据当前具体的情况选用合适的。 58题 B+树的高度一般为2-4层,所以查找记录时最多只需要2-4次IO,相对二叉平衡树已经大大降低了。范围查找时,能通过叶子节点的指针获取数据。例如查找大于等于3的数据,当在叶子节点中查到3时,通过3的尾指针便能获取所有数据,而不需要再像二叉树一样再获取到3的父节点。 57题 因为事务在修改页时,要先记 undo,在记 undo 之前要记 undo 的 redo, 然后修改数据页,再记数据页修改的 redo。 Redo(里面包括 undo 的修改) 一定要比数据页先持久化到磁盘。 当事务需要回滚时,因为有 undo,可以把数据页回滚到前镜像的状态,崩溃恢复时,如果 redo log 中事务没有对应的 commit 记录,那么需要用 undo把该事务的修改回滚到事务开始之前。 如果有 commit 记录,就用 redo 前滚到该事务完成时并提交掉。 56题 redo log是物理日志,记录的是"在某个数据页上做了什么修改"。 binlog是逻辑日志,记录的是这个语句的原始逻辑,比如"给ID=2这一行的c字段加1"。 redo log是InnoDB引擎特有的;binlog是MySQL的Server层实现的,所有引擎都可以使用。 redo log是循环写的,空间固定会用完:binlog 是可以追加写入的。"追加写"是指binlog文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。 最开始 MySQL 里并没有 InnoDB 引擎,MySQL 自带的引擎是 MyISAM,但是 MyISAM 没有 crash-safe 的能力,binlog日志只能用于归档。而InnoDB 是另一个公司以插件形式引入 MySQL 的,既然只依靠 binlog 是没有 crash-safe 能力的,所以 InnoDB 使用另外一套日志系统,也就是 redo log 来实现 crash-safe 能力。 55题 重做日志(redo log)      作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,达到事务一致性。 回滚日志(undo log)  作用:保证数据的原子性,保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。 二进 制日志(binlog)    作用:用于主从复制,实现主从同步;用于数据库的基于时间点的还原。 错误日志(errorlog) 作用:Mysql本身启动,停止,运行期间发生的错误信息。 慢查询日志(slow query log)  作用:记录执行时间过长的sql,时间阈值可以配置,只记录执行成功。 一般查询日志(general log)    作用:记录数据库的操作明细,默认关闭,开启后会降低数据库性能 。 中继日志(relay log) 作用:用于数据库主从同步,将主库发来的bin log保存在本地,然后从库进行回放。 54题 MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 死锁: 是指两个或两个以上的进程在执行过程中。因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 死锁的关键在于:两个(或以上)的Session加锁的顺序不一致。 那么对应的解决死锁问题的关键就是:让不同的session加锁有次序。死锁的解决办法:1.查出的线程杀死。2.设置锁的超时时间。3.指定获取锁的顺序。 53题 当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性(脏读,不可重复读,幻读等),可能产生死锁。 乐观锁:乐观锁不是数据库自带的,需要我们自己去实现。 悲观锁:在进行每次操作时都要通过获取锁才能进行对相同数据的操作。 共享锁:加了共享锁的数据对象可以被其他事务读取,但不能修改。 排他锁:当数据对象被加上排它锁时,一个事务必须得到锁才能对该数据对象进行访问,一直到事务结束锁才被释放。 行锁:就是给某一条记录加上锁。 52题 Mysql是关系型数据库,MongoDB是非关系型数据库,数据存储结构的不同。 51题 关系型数据库优点:1.保持数据的一致性(事务处理)。 2.由于以标准化为前提,数据更新的开销很小。 3. 可以进行Join等复杂查询。 缺点:1、为了维护一致性所付出的巨大代价就是其读写性能比较差。 2、固定的表结构。 3、高并发读写需求。 4、海量数据的高效率读写。 非关系型数据库优点:1、无需经过sql层的解析,读写性能很高。 2、基于键值对,数据没有耦合性,容易扩展。 3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。 缺点:1、不提供sql支持,学习和使用成本较高。 2、无事务处理,附加功能bi和报表等支持也不好。 redis与mongoDB的区别: 性能:TPS方面redis要大于mongodb。 可操作性:mongodb支持丰富的数据表达,索引,redis较少的网络IO次数。 可用性:MongoDB优于Redis。 一致性:redis事务支持比较弱,mongoDB不支持事务。 数据分析:mongoDB内置了数据分析的功能(mapreduce)。 应用场景:redis数据量较小的更性能操作和运算上,MongoDB主要解决海量数据的访问效率问题。 50题 如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容。如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化。否则的话(即Redis节点需要动态变化的情况),必须使用可以在运行时进行数据再平衡的一套系统,而当前只有Redis集群可以做到这样。 49题 分区可以让Redis管理更大的内存,Redis将可以使用所有机器的内存。如果没有分区,你最多只能使用一台机器的内存。分区使Redis的计算能力通过简单地增加计算机得到成倍提升,Redis的网络带宽也会随着计算机和网卡的增加而成倍增长。 48题 除了缓存服务器自带的缓存失效策略之外(Redis默认的有6种策略可供选择),我们还可以根据具体的业务需求进行自定义的缓存淘汰,常见的策略有两种: 1.定时去清理过期的缓存; 2.当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。 两者各有优劣,第一种的缺点是维护大量缓存的key是比较麻烦的,第二种的缺点就是每次用户请求过来都要判断缓存失效,逻辑相对比较复杂!具体用哪种方案,可以根据应用场景来权衡。 47题 Redis提供了两种方式来作消息队列: 一个是使用生产者消费模式模式:会让一个或者多个客户端监听消息队列,一旦消息到达,消费者马上消费,谁先抢到算谁的,如果队列里没有消息,则消费者继续监听 。另一个就是发布订阅者模式:也是一个或多个客户端订阅消息频道,只要发布者发布消息,所有订阅者都能收到消息,订阅者都是平等的。 46题 Redis的数据结构列表(list)可以实现延时队列,可以通过队列和栈来实现。blpop/brpop来替换lpop/rpop,blpop/brpop阻塞读在队列没有数据的时候,会立即进入休眠状态,一旦数据到来,则立刻醒过来。Redis的有序集合(zset)可以用于实现延时队列,消息作为value,时间作为score。Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。 45题 1.热点数据缓存:因为Redis 访问速度块、支持的数据类型比较丰富。 2.限时业务:expire 命令设置 key 的生存时间,到时间后自动删除 key。 3.计数器:incrby 命令可以实现原子性的递增。 4.排行榜:借助 SortedSet 进行热点数据的排序。 5.分布式锁:利用 Redis 的 setnx 命令进行。 6.队列机制:有 list push 和 list pop 这样的命令。 44题 一致哈希 是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K/n 个关键字重新映射,其中K是关键字的数量, n是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。 43题 RDB的优点:适合做冷备份;读写服务影响小,reids可以保持高性能;重启和恢复redis进程,更加快速。RDB的缺点:宕机会丢失最近5分钟的数据;文件特别大时可能会暂停数毫秒,或者甚至数秒。 AOF的优点:每个一秒执行fsync操作,最多丢失1秒钟的数据;以append-only模式写入,没有任何磁盘寻址的开销;文件过大时,不会影响客户端读写;适合做灾难性的误删除的紧急恢复。AOF的缺点:AOF日志文件比RDB数据快照文件更大,支持写QPS比RDB支持的写QPS低;比RDB脆弱,容易有bug。 42题 对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。Redis的操作之所以是原子性的,是因为Redis是单线程的。而在程序中执行多个Redis命令并非是原子性的,这也和普通数据库的表现是一样的,可以用incr或者使用Redis的事务,或者使用Redis+Lua的方式实现。对Redis来说,执行get、set以及eval等API,都是一个一个的任务,这些任务都会由Redis的线程去负责执行,任务要么执行成功,要么执行失败,这就是Redis的命令是原子性的原因。 41题 (1)twemproxy,使用方式简单(相对redis只需修改连接端口),对旧项目扩展的首选。(2)codis,目前用的最多的集群方案,基本和twemproxy一致的效果,但它支持在节点数改变情况下,旧节点数据可恢复到新hash节点。(3)redis cluster3.0自带的集群,特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。(4)在业务代码层实现,起几个毫无关联的redis实例,在代码层,对key进行hash计算,然后去对应的redis实例操作数据。这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的代替算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。 40题 (1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件 (2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次 (3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内 (4) 尽量避免在压力很大的主库上增加从库 (5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。 39题 比如订单管理,热数据:3个月内的订单数据,查询实时性较高;温数据:3个月 ~ 12个月前的订单数据,查询频率不高;冷数据:1年前的订单数据,几乎不会查询,只有偶尔的查询需求。热数据使用mysql进行存储,需要分库分表;温数据可以存储在ES中,利用搜索引擎的特性基本上也可以做到比较快的查询;冷数据可以存放到Hive中。从存储形式来说,一般情况冷数据存储在磁带、光盘,热数据一般存放在SSD中,存取速度快,而温数据可以存放在7200转的硬盘。 38题 当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。降级的最终目的是保证核心服务可用,即使是有损的。而且有些服务是无法降级的(如加入购物车、结算)。 37题 分层架构设计,有一条准则:站点层、服务层要做到无数据无状态,这样才能任意的加节点水平扩展,数据和状态尽量存储到后端的数据存储服务,例如数据库服务或者缓存服务。显然进程内缓存违背了这一原则。 36题 更新数据的时候,根据数据的唯一标识,将操作路由之后,发送到一个 jvm 内部队列中。读取数据的时候,如果发现数据不在缓存中,那么将重新读取数据+更新缓存的操作,根据唯一标识路由之后,也发送同一个 jvm 内部队列中。一个队列对应一个工作线程,每个工作线程串行拿到对应的操作,然后一条一条的执行。 35题 redis分布式锁加锁过程:通过setnx向特定的key写入一个随机值,并同时设置失效时间,写值成功既加锁成功;redis分布式锁解锁过程:匹配随机值,删除redis上的特点key数据,要保证获取数据、判断一致以及删除数据三个操作是原子的,为保证原子性一般使用lua脚本实现;在此基础上进一步优化的话,考虑使用心跳检测对锁的有效期进行续期,同时基于redis的发布订阅优雅的实现阻塞式加锁。 34题 volatile-lru:当内存不足以容纳写入数据时,从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。 volatile-ttl:当内存不足以容纳写入数据时,从已设置过期时间的数据集中挑选将要过期的数据淘汰。 volatile-random:当内存不足以容纳写入数据时,从已设置过期时间的数据集中任意选择数据淘汰。 allkeys-lru:当内存不足以容纳写入数据时,从数据集中挑选最近最少使用的数据淘汰。 allkeys-random:当内存不足以容纳写入数据时,从数据集中任意选择数据淘汰。 noeviction:禁止驱逐数据,当内存使用达到阈值的时候,所有引起申请内存的命令会报错。 33题 定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。 惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。 定期过期:每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。 32题 缓存击穿,一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。如何避免:在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key。 31题 缓存雪崩,是指在某一个时间段,缓存集中过期失效。大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。而缓存服务器某个节点宕机或断网,对数据库服务器造成的压力是不可预知的,很有可能瞬间就把数据库压垮。如何避免:1.redis高可用,搭建redis集群。2.限流降级,在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。3.数据预热,在即将发生大并发访问前手动触发加载缓存不同的key,设置不同的过期时间。 30题 缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。一些恶意的请求会故意查询不存在的 key,请求量很大,对数据库造成压力,甚至压垮数据库。 如何避免:1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该 key 对应的数据 insert 了之后清理缓存。2:对一定不存在的 key 进行过滤。可以把所有的可能存在的 key 放到一个大的 Bitmap 中,查询时通过该 bitmap 过滤。 29题 1.memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型。 2.redis 的速度比 memcached 快很多。 3.redis 可以持久化其数据。 4.Redis支持数据的备份,即master-slave模式的数据备份。 5.Redis采用VM机制。 6.value大小:redis最大可以达到1GB,而memcache只有1MB。 28题 Spring Boot 推荐使用 Java 配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通过spring提供的@ImportResource来加载xml配置。例如:@ImportResource({"classpath:some-context.xml","classpath:another-context.xml"}) 27题 Spring像一个大家族,有众多衍生产品例如Spring Boot,Spring Security等等,但他们的基础都是Spring的IOC和AOP,IOC提供了依赖注入的容器,而AOP解决了面向切面的编程,然后在此两者的基础上实现了其他衍生产品的高级功能。Spring MVC是基于Servlet的一个MVC框架,主要解决WEB开发的问题,因为 Spring的配置非常复杂,各种xml,properties处理起来比较繁琐。Spring Boot遵循约定优于配置,极大降低了Spring使用门槛,又有着Spring原本灵活强大的功能。总结:Spring MVC和Spring Boot都属于Spring,Spring MVC是基于Spring的一个MVC框架,而Spring Boot是基于Spring的一套快速开发整合包。 26题 YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。YAML 的配置文件后缀为 .yml,是一种人类可读的数据序列化语言,可以简单表达清单、散列表,标量等数据形态。它通常用于配置文件,与属性文件相比,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。 25题 Spring Boot有3种热部署方式: 1.使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动。 2.使用springloaded本地加载启动,配置jvm参数-javaagent:<jar包地址> -noverify。 3.使用devtools工具包,操作简单,但是每次需要重新部署。 用
游客ih62co2qqq5ww 2020-03-27 23:56:48 0 浏览量 回答数 0

问题

洗牌算法和它的应用场景 7月20日 【今日算法】

有一次参加面试,面试官问我:“会玩牌吧?” 内心:“咋滴,这是要玩德州扑克(或者炸金花),赢了他就能通过面试么?...
游客ih62co2qqq5ww 2020-07-27 13:19:28 3 浏览量 回答数 0

问题

从一个云盲到购买云机配置IISphp,IISJSP环境记录

由于公司业务的需要,有个项目急需一个服务器,而且带宽必须要高,可伸缩性必须要好,所以购买了云机,[font='Microsoft Yahei', ...
苏日塔拉图 2019-12-01 21:58:15 12758 浏览量 回答数 3

问题

干货分享:DBA专家门诊一期:索引与sql优化问题汇总

各位亲爱的云友,               非常感谢大家踊跃参加DBA专家门诊一期:索引与sql优化,很多云友都提出了自己的问题,门诊主任医师玄惭对大家提的问题一一作了解答。现已整...
xiaofanqie 2019-12-01 21:24:21 74007 浏览量 回答数 38

回答

回2楼啊里新人的帖子 在日常的业务开发中,常见使用到索引的地方大概有两类: 第一类.做业务约束需求,比如需要保证表中每行的单个字段或者某几个组合字段是唯一的,则可以在表中创建唯一索引; 比如:需要保证test表中插入user_id字段的值不能出现重复,则在设计表的时候,就可以在表中user_id字段上创建一个唯一索引: CREATE TABLE `test` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `user_id` int(11) NOT NULL,   `gmt_create` datetime DEFAULT NULL,   PRIMARY KEY (`id`),   UNIQUE KEY `uk_userid` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; 第二类.提高SQL语句执行速度,可以根据SQL语句的查询条件在表中创建合适的索引,以此来提升SQL语句的执行速度; 此过程好比是去图书找一本书,最慢的方法就是从图书馆的每一层楼每一个书架一本本的找过去;快捷一点的方法就是先通过图书检索来确认这一本书在几楼那个书架上,然后直接去找就可以了;当然创建这个索引也需要有一定的代价,需要存储空间来存放,需要在数据行插入,更新,删除的时候维护索引: 例如: CREATE TABLE `test_record` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `user_id` int(11) NOT NULL,   `gmt_create` datetime DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5635996 DEFAULT CHARSET=utf8 该表有500w的记录,我需要查询20:00后插入的记录有多少条记录: mysql> select count(*) from test_record where gmt_create>'2014-12-17 20:00:00'; +----------+ | count(*) | +----------+ |        1 | +----------+ 1 row in set (1.31 sec) 可以看到查询耗费了1.31秒返回了1行记录,如果我们在gmt_create字段上添加索引: mysql> alter table test_record add index ind_gmt_create(gmt_create); Query OK, 0 rows affected (21.87 sec) Records: 0  Duplicates: 0  Warnings: 0 mysql> select count(*) from test_record where gmt_create>'2014-12-17 20:00:00'; +----------+ | count(*) | +----------+ |        1 | +----------+ 1 row in set (0.01 sec) 查询只消耗了0.01秒中就返回了记录. 总的来说,为SQL语句(select,update,delete)创建必要的索引是必须的,这样虽然有一定的性能和空间消耗,但是是值得,尤其是在大并发的请求下,大量的数据被扫描造成系统IO和CPU资源消耗完,进而导致整个数据库不可服务. ------------------------- 怎么学好数据库是一个比较大题目,数据库不仅仅是写SQL那么简单,即使知道了SQL怎么写,还需要很清楚的知道这条SQL他大概扫描了多少数据,返回多少数据,是否需要创建索引。至于SQL优化是一个比较专业的技术活,但是可以通过学习是可以掌握的,你可以把一条sql从执行不出来优化到瞬间完成执行,这个过程的成就感是信心满满的。学习的方法可以有以下一些过程:1、自己查资料,包括书本,在线文档,google,别人的总结等等,试图自己解决2、多做实验,证明自己的想法以及判断3、如果实在不行,再去论坛问,或者问朋友4、如果问题解决了,把该问题的整个解决方法记录下来,以备后来的需要5、多关注别人的问题,或许以后自己就遇到了,并总是试图去多帮助别人6、习惯从多个方面去考虑问题,并且养成良好的总结习惯 下面是一些国内顶级数据库专家学习数据库的经验分享给大家: http://www.eygle.com/archives/2005/08/ecinieoracleouo.html 其实学习任何东西都是一样,没有太多的捷径可走,必须打好了坚实的基础,才有可以在进一步学习中得到快速提高。王国维在他的《人间词话》中曾经概括了为学的三种境界,我在这里套用一下: 古今之成大事业、大学问者,罔不经过三种之境界。"昨夜西风凋碧树。独上高楼,望尽天涯路。"此第一境界也。"衣带渐宽终不悔,为伊消得人憔悴。"此第二境界也。"众里寻他千百度,蓦然回首,那人却在灯火阑珊处。"此第三境界也。 学习Oracle,这也是你必须经历的三种境界。 第一层境界是说,学习的路是漫漫的,你必须做好充分的思想准备,如果半途而废还不如不要开始。 这里,注意一个"尽"字,在开始学习的过程中,你必须充分阅读Oracle的基础文档,概念手册、管理手册、备份恢复手册等(这些你都可以在http://tahiti.oracle.com 上找到);OCP认证的教材也值得仔细阅读。打好基础之后你才具备了进一步提升的能力,万丈高楼都是由地而起。 第二层境界是说,尽管经历挫折、打击、灰心、沮丧,也都要坚持不放弃,具备了基础知识之后,你可以对自己感兴趣或者工作中遇到的问题进行深入的思考,由浅入深从来都不是轻而易举的,甚至很多时候你会感到自己停滞不前了,但是不要动摇,学习及理解上的突破也需要时间。 第三次境界是说,经历了那么多努力以后,你会发现,那苦苦思考的问题,那百思不得其解的算法原理,原来答案就在手边,你的思路豁然开朗,宛如拨云见月。这个时候,学习对你来说,不再是个难题,也许是种享受,也许成为艺术。 所以如果你想问我如何速成,那我是没有答案的。 不经一番寒彻骨,哪得梅花扑鼻香。 当然这三种境界在实际中也许是交叉的,在不断的学习中,不断有蓦然回首的收获。 我自己在学习的过程中,经常是采用"由点及面法"。 当遇到一个问题后,一定是深入下去,穷究根本,这样你会发现,一个简单的问题也必定会带起一大片的知识点,如果你能对很多问题进行深入思考和研究,那么在深处,你会发现,这些面逐渐接合,慢慢的延伸到oracle的所有层面,逐渐的你就能融会贯通。这时候,你会主动的去尝试全面学习Oracle,扫除你的知识盲点,学习已经成为一种需要。 由实践触发的学习才最有针对性,才更能让你深入的理解书本上的知识,正所谓:" 纸上得来终觉浅,绝知此事要躬行"。实践的经验于我们是至为宝贵的。 如果说有,那么这,就是我的捷径。 想想自己,经常是"每有所获,便欣然忘食", 兴趣才是我们最好的老师。 Oracle的优化是一门学问,也是一门艺术,理解透彻了,你会知道,优化不过是在各种条件之下做出的均衡与折中。 内存、外存;CPU、IO...对这一切你都需要有充分的认识和相当的了解,管理数据库所需要的知识并不单纯。 作为一个数据库管理人员,你需要做的就是能够根据自己的知识以及经验在各种复杂情况下做出快速正确的判断。当问题出现时,你需要知道使用怎样的手段发现问题的根本;找到问题之后,你需要运用你的知识找到解决问题的方法。 这当然并不容易,举重若轻还是举轻若重,取决于你具备怎样的基础以及经验积累。 在网络上,Howard J. Rogers最近创造了一个新词组:Voodoo Tuning,用以形容那些没有及时更新自己的知识技能的所谓的Oracle技术专家。由于知识的陈旧或者理解的肤浅,他们提供的很多调整建议是错误的、容易使人误解的,甚至是荒诞的。他们提供的某些建议在有些情况下也许是正确的,如果你愿意回到Oracle5版或者6版的年代;但是这些建议在Oracle7.0,8.0 或者 Oracle8i以后往往是完全错误的。 后来基于类似问题触发了互联网内Oracle顶级高手的一系列深入讨论,TOM、Jonathan Lewis、HJR等人都参与其中,在我的网站上(www.eygle.com )上对这些内容及相关链接作了简要介绍,有兴趣的可以参考。 HJR给我们提了很好的一个提示:对你所需要调整的内容,你必须具有充分的认识,否则你做出的判断就有可能是错误的。 这也是我想给自己和大家的一个建议: 学习和研究Oracle,严谨和认真必不可少。 当然 你还需要勤奋,我所熟悉的在Oracle领域有所成就的技术人员,他们共同的特点就是勤奋。 如果你觉得掌握的东西没有别人多,那么也许就是因为,你不如别人勤奋。 要是你觉得这一切过于复杂了,那我还有一句简单的话送给大家: 不积跬步,无以至千里。学习正是在逐渐积累过程中的提高。 现在Itpub给我们提供了很好的交流场所,很多问题都可以在这里找到答案,互相讨论,互相学习。这是我们的幸运,我也因此非常感谢这个网络时代。 参考书籍: 如果是一个新人可以先买一些基本的入门书籍,比如MySQL:《 深入浅出MySQL——数据库开发、优化与管理维护 》,在进阶一点的就是《 高性能MySQL(第3版) 》 oracle的参考书籍: http://www.eygle.com/archives/2006/08/oracle_fundbook_recommand.html 最后建议不要在数据库中使用外键,让应用程序来保证。 ------------------------- Re:回 9楼(千鸟) 的帖子 我有一个问题想问问,现在在做一个与图书有关的项目,其中有一个功能是按图书书名搜索相似图书列表,问题不难,但是想优化一下,有如下问题想请教一下: 1、在图书数据库数据表的书名字段里,按图书书名进行关键字搜索,如何快速搜索相关的图书?   现在由于数据不多,直接用的like模糊查找验证功能而已; 如果数据量不大,是可以在数据库中完成搜索的,可以在搜索字段上创建索引,然后进行搜索查询: CREATE TABLE `book` (   `book_id` int(11) NOT NULL AUTO_INCREMENT,   `book_name` varchar(100) NOT NULL,   .............................   PRIMARY KEY (`book_id`),   KEY `ind_name` (`book_name`) ) ENGINE=InnoDB select book.*  from book , (select book_id from book where book_name like '%算法%')  book_search_id  where book.book_id=book_search_id.book_id; 但是当数据量变得很大后,就不在适合了,可以采用一些其他的第三方搜索技术比如sphinx; 2、如何按匹配的关键度进行快速排序?比如搜索“算法”,有一本书是《算法》,另一本书是《算法设计》,要求前者排在更前面。 现在的排序是根据数据表中的主键序号id进行的排序,没有达到想要的效果。 root@127.0.0.1 : test 15:57:12> select book_id,book_name from book_search where book_name like '%算%' order by book_name; +---------+--------------+ | book_id | book_name    | +---------+--------------+ |       2 | 算法       | |       1 | 算法设计 | ------------------------- 回 10楼(大黑豆) 的帖子 模糊查询分为半模糊和全模糊,也就是: select * from book where name like 'xxx%';(半模糊) select * from book where name like '%xxx%';(全模糊) 半模糊可以可以使用到索引,全模糊在上面场景是不能使用到索引的,但可以进行一些改进,比如: select book.*  from book , (select book_id from book where book_name like '%算法%')  book_search_id   where book.book_id=book_search_id.book_id; 注意这里book_id是主键,同时在book_name上创建了索引 上面的sql语句可以利用全索引扫描来完成优化,但是性能不会太好;特别在数据量大,请求频繁的业务场景下不要在数据库进行模糊查询; 非得使用数据库的话 ,建议不要在生产库进行查询,可以在只读节点进行查询,避免查询造成主业务数据库的资源消耗完,导致故障. 可以使用一些开源的搜索引擎技术,比如sphinx. ------------------------- 回 11楼(蓝色之鹰) 的帖子 我想问下,sql优化一般从那几个方面入手?多表之间的连接方式:Nested Loops,Hash Join 和 Sort Merge Join,是不是Hash Join最优连接? SQL优化需要了解优化器原理,索引的原理,表的存储结构,执行计划等,可以买一本书来系统的进行学习,多多实验; 不同的数据库优化器的模型不一样,比如oracle支持NL,HJ,SMJ,但是mysql只支持NL,不通的连接方式适用于不同的应用场景; NL:对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择 HJ:对于列连接是做大数据集连接时的常用方式 SMJ:通常情况下散列连接的效果都比排序合并连接要好,然而如果行源已经被排过序,在执行排序合并连接时不需要再排序了,这时排序合并连接的性能会优于散列连接 ------------------------- Re:回 19楼(原远) 的帖子 有个问题:分类表TQueCategory,问题表TQuestion(T-SQL) CREATE TABLE TQueCategory ( ID INT IDENTITY(1,1) PRIMARY KEY,        --问题分类ID NAME VARCHAR(20)        --问题分类名称 ) CREATE TABLE TQuestion ( ID INT IDENTITY(1,1) PRIMARY KEY,        --问题ID CateID INT NOT NULL,        --问题分类ID TITLE VARCHAR(50),        --问题标题 CONTENT VARCHAR(500)        --问题内容 ) 当前要统计某个分类下的问题数,有两种方式: 1.每次统计,在TQuestion通过CateID进行分组统计 SELECT CateID,COUNT(1) AS QueNum FROM TQuestion GROUP BY CateID WHERE 1=1 2.在TQueCategory表增加字段QueNum,用于标识该分类下的问题数量 ALTER TABLE TQueCategory ADD QueNum INT SELECT CateID,QueNum FROM TQueCategory 问:在哪种业务应用场景下采用上面哪种方式性能比较好,为什么? ############################################################################################### 方案 一 需要对 TQuestion 的 CateID字段 进行分组 ,可以在 CateID上创建一个索引,这样就可以索引扫描来完成查询; 方案 二 需要对 TQueCategory 进行扫描就可以得出结果,但是必须在问题表有插入,删除的时候维护quenum数量; 单单从SQL的性能来看, 分类表的数量应该是远远小于问题表的数量的,所以方案二的性能会比较好; 但是如果 TQuestion 的插入非常频繁的话,会带来对 TQueCategory的频繁更新,一次 TQuestion 的 insert或deleted就会带来一次 TQueCategory 的update,这个代价其实是蛮高的; 如果这个分类统计的查询不是非常频繁的话,建议还是使用方案一; 同时还可能还会其他的业务逻辑统计需求(例如: CateID +时间),这个时候在把逻辑放到 TQueCategory就不合适了。 ------------------------- 回 20楼(原远) 的帖子 经验之谈,仅供参考 使用外键在开发上确实省去了很多功夫,但是把业务逻辑交由数据库来完成,对后期的维护来说是很麻烦的事情,不利于维护. ------------------------- 回 21楼(玩站网) 的帖子 无关技术方面: 咨询一下,现在mysql新的版本,5.5.45后貌似修改了开源协议。 是否意味着今后我们商业化使用mysql将受到限制? 如果甲骨文真周到那一步,rds是否会受到影响? 一个疑惑: 为什么很少见到有人用mysql正则匹配?性能不好还是什么原因? ######################################## MySQL有商业版 和 社区版,RDS的MySQL采用开源的社区版进行改进,由专门的RDS MySQL源码团队来维护,国内TOP 10的mysql源码贡献者大部分都在RDS,包括了@丁奇 ,@彭立勋 ,@印风 等; 不在数据库中做业务计算,是保证数据库运行稳定的一个好的设计经验; 是否影响性能与你的sql的执行频率,需要参与的计算数据量相关,当然了还包括数据库所在主机的IO,cpu,内存等资源,离开了这些谈性能是没有多大意义的; ------------------------- 回 22楼(比哥) 的帖子 分页该怎么优化才行??? ######################### 可以参考这个链接,里面有很多的最佳实践,其中就包括了分页语句的优化: http://bbs.aliyun.com/read/168647.html?spm=5176.7114037.1996646101.1.celwA1&pos=1 普通写法: select  *  from t where sellerid=100 limit 100000,20 普通limit M,N的翻页写法,往往在越往后翻页的过程中速度越慢,原因 mysql会读取表中的前M+N条数据,M越大,性能就越差: 优化写法: select t1.* from  t t1,             (select id from t  sellerid=100 limit 100000,20) t2 where t1.id=t2.id; 优化后的翻页写法,先查询翻页中需要的N条数据的主键id,在根据主键id 回表查询所需要的N条数据,此过程中查询N条数据的主键ID在索引中完成 注意:需要在t表的sellerid字段上创建索引 create index ind_sellerid on t(sellerid); 案例: user_A (21:42:31): 这个sql该怎么优化,执行非常的慢: | Query   |   51 | Sending data | select id, ... from t_buyer where sellerId = 765922982 and gmt_modified >= '1970-01-01 08:00:00' and gmt_modified <= '2013-06-05 17:11:31' limit 255000, 5000 SQL改写:selectt2.* from (selectid from t_buyer where sellerId = 765922982   andgmt_modified >= '1970-01-01 08:00:00'   andgmt_modified <= '2013-06-05 17:11:31' limit255000, 5000)t1,t_buyer t2 where t1.id=t2.id index:seller_id,gmt_modified user_A(21:58:43): 好像很快啊。神奇,这个原理是啥啊。牛!!! user_A(21:59:55): 5000 rows in set (4.25 sec), 前面要90秒。 ------------------------- 回 27楼(板砖大叔) 的帖子 这里所说的索引都是普通的b-tree索引,mysql,sqlserver,oracle 的关系数据库都是默认支持的; ------------------------- 回 32楼(veeeye) 的帖子 可以详细说明一下“最后建议不要在数据库中使用外键,让应用程序来保证。 ”的原因吗?我们公司在项目中经常使用外键,用程序来保证不是相对而言更加复杂了吗? 这里的不建议使用外键,主要考虑到 : 第一.维护成本上,把一些业务逻辑交由数据库来保证,当业务需求发生改动的时候,需要同时考虑应用程序和数据库,有时候一些数据库变更或者bug,可能会导致外键的失效;同时也给数据库的管理人员带来维护的麻烦,不便于管理。 第二.性能上考虑,当大量数据写入的时候,外键肯定会带来一定的性能损耗,当出现这样的问题时候,再来改造去除外键,真的就不值得了; 最后,不在数据库中参与业务的计算(存储过程,函数,触发器,外键),是保证数据库运行稳定的一个好的最佳实践。 ------------------------- 回 33楼(优雅的固执) 的帖子 ReDBA专家门诊一期:索引与sql优化 十分想请大师分享下建立索引的经验 我平时简历索引是这样的 比如订单信息的话 建立 订单号  唯一聚集索引 其他的比如   客户编号 供应商编号 商品编号 这些建立非聚集不唯一索引   ################################################## 建立索引,需要根据你的SQL语句来进行创建,不是每一个字段都需要进行创建,也不是一个索引都不创建,,可以把你的SQL语句,应用场景发出来看看。 索引的创建确实是一个非常专业的技术活,需要掌握:表的存储方式,索引的原理,数据库的优化器,统计信息,最后还需要能够读懂数据库的执行计划,以此来判断索引是否创建正确; 所以需要进行系统的学习才能掌握,附件是我在2011年的时候的一次公开课的ppt,希望对你有帮助,同时可以把你平时遇到的索引创建的疑惑发到论坛上来,大家可以一起交流。 ------------------------- 回 30楼(几几届) 的帖子 我也是这样,简单的会,仔细写也会写出来,但是就是不知道有没有更快或者更好的 #################################################### 多写写SQL,掌握SQL优化的方法,自然这些问题不在话下了。 ------------------------- 回 40楼(小林阿小林) 的帖子 mysql如何查询需要优化的语句,比如慢查询的步奏,如何找出需要通知程序员修改或者优化的sql语句 ############################################################ 可以将mysql的慢日志打开,就可以记录执行时间超过指定阀值的慢SQL到本地文件或者数据库的slow_log表中; 在RDS中默认是打开了慢日志功能的:long_query_time=1,表示会记录执行时间>=1秒的慢sql; 如何快速找到mysql瓶颈: 简单一点的方法,可以通过监控mysql所在主机的性能(CPU,IO,load等)以及mysql本身的一些状态值(connections,thread running,qps,命中率等); RDS提供了完善的数据库监控体系,包括了CPU,IOPS,Disk,Connections,QPS,可以重点关注cpu,IO,connections,disk 4个 指标; cpu,io,connections主要体现在了性能瓶颈,disk主要体现了空间瓶颈; 有时候一条慢sql语句的频繁调用,也可能导致整个实例的cpu,io,connections达到100%;也有可能一条排序的sql语句,消耗大量的临时空间,导致实例的空间消耗完。 ------------------------- 下面是分析一个cpu 100%的案例分析:该实例的cpu已经到达100% 查看当前数据库的活动会话信息:当前数据库有较多的活跃线程在数据库中执行查看当前数据库正在执行的sql: 可以看到这条sql执行的非常缓慢:[tr=rgb(100, 204, 255)]delete from task_process where task_id='1801099' 查看这个表的索引: CREATE TABLE `task_process` (  `id` int(11) NOT NULL AUTO_INCREMENT,    ................  `task_id` int(11) NOT NULL DEFAULT '0' COMMENT '??????id',   ................  PRIMARY KEY (`id`),  KEY `index_over_task` (`is_over`,`task_id`),  KEY `index_over` (`is_over`,`is_auto`) USING BTREE,  KEY `index_process_sn` (`process_sn`,`is_over`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=32129710; 可以看到这个表有3KW的数据,但是没有task_id字段开头的索引,导致该sql语句删除需要进行全表扫描: 在我们的诊断报告中已经将该sql语句捕获到,同时给你提出该怎样进行索引的添加。 广告:诊断报告将会在1月底发布到控制台,到时候用户可以直接查看诊断建议,来完成你的数据库优化。 ------------------------- 回 45楼(dentrite) 的帖子 datetime和int都是占用数据库4个字节,所以在空间上没有什么差别;但是为了可读性,建议还是使用datetime数据类型。 ------------------------- 回 48楼(yuantel) 的帖子 麻烦把ecs_brand和ecs_goods的表结构发出来一下看看 。 ------------------------- 回 51楼(小林阿小林) 的帖子 普通的 ECS服务器上目前还没有这样的慢SQL索引建议的工具。 不过后续有IDBCloud将会集成这样的sql诊断功能,使用他来管理ECS上的数据库就可以使用这样的功能了 。
玄惭 2019-12-02 01:16:11 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT