elasticsearch(lucene)可以代替NoSQL(mongodb)吗?
首先需要明确一点的是,ElasticSearch和MongoDB是不同的技术选型,两者定位不同,是不能混为一谈和相互替代的。
ElasticSearch是企业级搜索引擎
ElasticSearch是用Java语言基于Lucene开发的分布式搜索服务器,对外提供RESTful API,而且慢慢演变成了数据分析和可视化系统(如:ELK)。
ES可以当成是一种特殊的NoSQL。
优点:查询性能高、高效分词、支持各类复杂检索、支持海量数据存储;
- 缺点:数据写入性能差、缺乏权限机制、mapping一旦确定就不好变更(索引重建很麻烦)、field是可以动态添加的不利于数据规范。
MongoDB是一款NoSQL数据库
MongoDB是用C++开发的一款NoSQL数据库(面向文档的数据库,BSON格式存储),虽然支持搜索功能,但是索引性能和精确度远不如ElasticSearch。
优点:数据写入性能优于ElasticSearch(但比不上Redis)、数据约束性强、完善的权限机制;
缺点:只适合数据存储、虽有全文检索但一个集合只能创建一个全文索引。
两者通常搭配使用
在实际项目中,我们通常是将ElasticSearch和MongoDB搭配使用的。MongoDB可作为持久化数据存储仓库,而ElasticSearch作复杂检索工作。千万不要把ES当数据库来使用,因为ES数据结构是不严谨的,一旦涉及索引重建数据全部会丢失,另外也导出不了SQL。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!
elasticsearch定位是搜索引擎,由于擅长存储json数据,所有也可以做数据库,但是不要存关键数据,只适合存日志,监控,追踪数据,业务数据不要。
mongodb定位是nosql数据库,为了避免key-value数据库的查询方式单一的问题,提过了类似SQL的查询方式,类SQL也是可以来做全文检索的,但是友好度和性能不好。
mongodb现在是纯商业数据库(AGPL禁止一切商业用途,只要是公司就不能用),如果公司不是小到mongodb懒得起诉你,那么别用社区版。
mongodb(重要数据,不重要的上es就行)替代方案:
1. Apache couchdb,也是nosql文档数据库,和mongodb相似,但是肯定没mongodb好用啦,成熟度也一般,Apache的项目一般是用的多就更新快,没人用就万年不变。
2. 大神来了,postgresql,早就支持json存储了,现在postgres的定位是newsql,原来的SQL肯定是保留,而且是最好的开源版,甩MySQL几条街,同时也增加了nosql的支持,随着mongodb商业化气息越来越浓,好多公司使用postgres来替换mongodb,不过postgres由于自由度高(可以自定义数据类型,你说呢),所以比较复杂(这也是为啥没打过MySQL,不够傻瓜),需要好好学习一番。
3.花钱买mongodb吧。
软件测试要学哪些网络知识?
谢邀。
软件测试需要学很多方面的网络知识,操作系统应用;软件开发语言;网络搭建与维护基础知识;软件测试理论知识;数据库;软件测试工具;测试管理(需求,测试用例,测试执行,缺陷等)工具等等。
1. 需要了解的软件开发语言有以下几种:java,c#,c/c++, javascript, visual basic(VB), PHP.
2. 所要掌握的脚本语言有以下几种:Tcl, Ruby, Perl, Python, Shell.
3. 数据库知识有以下几种: MS SQL SERVER, ORACLE, MYSQL, DB2, Sybase.
4. 在测试过程中,所需要掌握的网络分析工具有:Sniffer Pro, Omnipeek, Solarwinds
5. 常用的功能自动测试工具:QTP, RFT, Robot, Silktest, Watir, Selenium, WinRunner, MaxQ
6. 常用的测试管理(需求,测试用例,测试执行,缺陷等)工具:QC/TD, RQM,Clearquest, Jira, BugFree, Bugzilla, TestCenter, TestManger, TestLink, mantis.
7. 常用的单元测试工具:Jrest, Junit, C++ test, patasoft. TEST, CodeWiard, DevParter Studio Professional, Purify, Quantify, PureCoverage, AQtime