低成本TB级数据库技术选型之思考两三点

一、背景

前段时间在搞毕业论文的选题,最头疼的就是大量的文献检索和阅读,从研究的角度上我们可以将文献分为四类:

  1. 理论文献:为研究提供理论的框架和基础的文献。这些文献可能并不会和所做的研究直接相关,甚至由于理论发展过程等原因可能是属于另一个研究领域的文献,并且由于很多学科理论和实践发展关系不一,一些实证研究所依赖的理论都是较早的文献。
  2. 背景文献:帮助研究者更好地认识和理解所要研究的现实问题的文献与资料。这些文献未必与所要进行的研究直接相关,但却是认识这一研究问题不可或缺的背景资料。这些内容可能涉及较多类型的文献媒介,诸如政策文本、新闻、时事评论、研究综述等。
  3. 方法论文献:为研究工具、技术手段提供支持的文献。方法论文献在大多数期刊中已经被认为是独立于研究文章的一类文献,主要用于陈述方法的技术基础、应用过程以及其应用价值等。
  4. 核心文献:即与要进行的研究在研究问题、研究框架上最相关的文献。一般而言就是文献综述部分对于主要研究问题的相关研究。

各种检索工具用了一遍之后,整体感觉就是两大痛点不能兼顾:

        1、文献的覆盖率,不能漏掉重要文献;

        2、文献的聚焦度,不能大海捞针,参杂太多无用结果。

很多研友推荐的connected papers这个工具确实有过人之处,输入一篇论文的标题,它会为你构建一个该领域类似论文的图谱。你可以从图谱中发现你感兴趣领域的趋势,对领域内文献引用动态有一个真实的、可视化的理解,并对最新发表的重要论文工作及时进行跟进。最关键的是:检索出来的文献关联度非常非常高。

我就很好奇背后的原理,闲暇时间利用MONGODB,尝试建立类似项目:欢迎! LIBRARIES S2 -Libraries S2是一个可视化工具,可以帮助研究人员和应用科学家找到与其工作领域相关的学术论文。icon-default.png?t=N7T8https://s2.libraries.cn/拿到授权key之后,花了20多天时间把全部2.14亿篇文献数据库下载下来以后,20TB+的jsonl文件,我整个人都懵逼了,这不是一台消费级的机器可以伺候的规模啊。

二、如何低成本发布这些数据呢? 

海量数据平台基本分为两类:查询型和分析型。分析型对计算资源没有查询型敏感,可以想象每秒分析一次已经很变态了,但是每秒10万次的查询稀松平常。

这次任务目的是:本地化部署查询服务以替代官方API,提升服务稳定性、突破限制和提高响应速度。

机器配置:centos7.8,16核心、32GB内存

提到JSON 的数据处理,大部分人想到的一定是MONGODB。提到MOGNODB 的特长,必须提到JSON ,在数据库处理的格式中,我们大多习惯关系型的数据的表达方式,而在除了数据关系型的二维表格的数据表达的方式以外,更加简便的流行的数据格式的表达是 JSON ,JSON,即JavaScript对象表示法,是一种易于人类阅读的数据交换格式,尽管JSON是基于JavaScript编程语言标准的一个子集,但它完全独立于语言。

无论是ORACLE 还是 MYSQL 到POSTGRESQL 在JSON 的处理上,都各有千秋,但只要到实际的工作中,我们大多不敢去用这些传统的数据库来处理JSON ,或者说他们这些数据库,无法给我们信任感。

1  量,量是一个MOGNODB 的特点,一个表可能有200万,5000万,1个亿 ,这些都是传统数据库可以处理的内容,但是如果我告诉你10个亿呢,100个亿呢,此时传统数据库基本上就没有了声音,留下的只有MONGODB 还可以对你这些要求进行支持。基于JSON 数据的特点,要不很小,要不很大,尤其在一些第三方的信息传输或日志的记录中,MOGNODB 存储的数据量非常大,可能每秒就是几万条数据的进入,而且是持续性的。很容易一个表就能达到成千上万的小CASE。

2  存,在数据进来后如何能存得下这些数据是另一个能力,数据被压缩的很小,这是mongodb的另一个特性,基于这个特性mongodb 通过以下方式来完成这个工作:

使用BSON格式:MongoDB存储数据时采用了BSON(Binary JSON)格式,这是一种类似JSON的二进制序列化数据表示。BSON格式在保留JSON可读性的基础上,提供了更紧凑的二进制表示,有助于提高存储效率。

支持多种压缩算法:MongoDB支持多种数据压缩算法,如Snappy、zlib等。这些压缩算法能够有效降低磁盘空间占用,提高存储的压缩比。

索引压缩:MongoDB还对索引进行了压缩处理,以减少索引所占用的磁盘空间。通过压缩索引,可以提高查询效率,并节省存储空间。

分片技术:MongoDB使用分片技术将数据分布在多个服务器上。这不仅有助于水平扩展,还可以优化存储空间的利用,从而提高整体的压缩比

这些能力看似一般,但是这些能力的组合让其他的数据库基本没有了声音,因为他的确是实实在在的让你看到了结果。本次任务中,与jsonl原文件相比,导入MongoDB之后体积压缩到了60%左右,这包括了索引。

3  快,这单又是MONGODB的一个特点,在传统数据库的慢查询都在1秒进行标定的时候, MONGODB 的慢查询基本在500ms,也就是说mongodb 从未把自己的数据处理能力和 传统的那些数据库进行对标,而是将自己的性能,标定在   传统数据库 和  REDIS 缓存型数据库之间的一个标定人设。所以一般我们发现 MONGODB 的数据处理速度在 500毫秒以外的情况下,优化就开始了。由于本次任务核心是海量数据的简单查询,其实就是对paperId这个整型字段的匹配,加索引后,检索效率非常高,2.14亿条数据,基本上200毫秒左右就能搞定。

4  多元化的发展,MongoDB Atlas 是MongoDB官方提供的一种托管式数据库服务。它让你可以方便地在主流云服务商(如Amazon Web Services、Google Cloud Platform和Microsoft Azure)上部署、管理和扩展MongoDB数据库。

MongoDB Atlas 提供了以下特点和优点:

  • 简化部署:使用MongoDB Atlas,你可以轻松地创建和部署MongoDB数据库。图形化界面使得配置和管理变得更加简单。
  • 自动化运维:Atlas自动处理数据库日常运维任务,如备份、修复、监控和性能调优等,让开发者可以专注于应用程序本身而无需关心数据库管理细节。
  • 安全性:Atlas提供多层次的数据库安全保障,包括网络隔离、加密、用户认证和访问控制等。这有助于确保你的数据得到充分保护。
  • 弹性伸缩:根据实际需要,MongoDB Atlas可以轻松地进行水平和垂直扩展。你可以按需调整集群大小和性能以满足应用程序的要求。
  • 全球分布:Atlas支持跨区域的数据分布,以便最佳地部署你的应用程序。这有助于降低延迟,提高数据冗余,并确保高可用性。

5  更可靠和更智能的 HA 高可用和读写分离,包括数据冗余、数据节点故障的自动迁移并且速度极快、读写分离的控制可在每条数据的写入中进行设定、可以实现shard storage 方式中的独立分离,并且不需要中间件的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/313397.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE项目运行失败原因以及解决办法

1.正常运行: Ctl J打开终端,并运行如下命令: npm run serve 正常情况下,就可以得到本地和网络链接,如下: 点击链接即可进入到编辑好的页面。 不过,你也可能遇到如下情况↓↓↓ 2.无法找到pac…

Access数据库C#读写验证

1、数据库简介 Access数据库是一个相当古老的文件型数据库,主打一个简单方便,没有复杂的安装过程,没有庞大的后端管理,整个数据库就是一个文件。可以像普通文件一样复制和修改,可以同时读写。 在小型系统中&#xff0c…

CSS 丝带形状效果

CSS 丝带形状效果如图: 通过CSS创建折叠丝带形状 这里代码应该比较清晰易懂,clip-path 的值应该也容易理解。要注意的是,我们使用了 color-mix() 函数,这个属性允许创建主颜色的深色版本。现在如果我们将元素旋转相反的方向&#…

web component - 使用HTML Templates和Shadow DOM构建现代UI组件

Web Component是一种用于构建可重用的UI组件的技术。它使用标准化的浏览器API,包括Custom Elements、Shadow DOM和HTML Templates来实现组件化开发方式。这些API都是现代浏览器原生支持的,因此不需要引入第三方库或框架即可使用。 在这篇博客中&#xf…

第7课 利用FFmpeg将摄像头画面与麦克风数据合成后推送到rtmp服务器

上节课我们已经拿到了摄像头数据和麦克风数据,这节课我们来看一下如何将二者合并起来推送到rtmp服务器。推送音视频合成流到rtmp服务器地址的流程如下: 1.创建输出流 //初始化输出流上下文 avformat_alloc_output_context2(&outFormatCtx, NULL, &…

极速文件搜索工具Everything结合内网穿透实现远程搜索本地文件

文章目录 前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库,我们需要两个软件的支持,分别是cpolar(用于搭建内网穿透数据隧道…

算法逆袭之路(1)

11.29 开始跟进算法题进度! 每天刷4题左右 ,一周之内一定要是统一类型 而且一定稍作总结, 了解他们的内在思路究竟是怎样的!! 12.24 一定要每天早中晚都要复习一下 早中午每段一两道, 而且一定要是同一个类型, 不然刷起来都没有意义 12.26/27: 斐波那契数 爬…

每日一题——LeetCode997

方法一 个人方法: 这题的意思就是1-n里面找到一个数,它不指向任何数,其他数都要指向它 找到没有指向任何数的那个idx,如果不存在这样的数那么就返回-1如果找到了这样的数,还要继续判断其它的所有数是否都指向它&…

适用于电脑的 8 款文件/软件迁移软件 – 快速安全地更换电脑!

将文件/软件从一台设备传输到另一台设备已成为我们日常生活的重要组成部分,无论是出于个人目的还是出于职业目的。在当今快节奏的世界中,我们经常需要在不同设备之间传输大文件,例如视频、照片、文档等。虽然云服务提供了一种共享文件的好方法…

2023-12-17 LeetCode每日一题(使用最小花费爬楼梯)

2023-12-17每日一题 一、题目编号 746. 使用最小花费爬楼梯二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你…

2024 React 后台系统 搭建学习看这一篇就够了(1)

年初,自己想写一篇关于 React 实战后台项目的 课程文章,也算是对自己 2023的前端学习做一个系统性总结,方便后续查阅,也方便自己浏览,还能增加自己的文笔 网上很多平台都不太稳定,所以用了阿里的语雀&…

Vue(三):Vue 生命周期与工程化开发

2023 的最后一篇博客,祝大家元旦快乐,新的一年一起共勉! 06. Vue 生命周期 6.1 基本介绍 生命周期就是一个 Vue 示例从 创建 到 销毁 的整个过程,创建、挂载、更新、销毁 有一些请求是必须在某个阶段完成之后或者某个阶段之前执行…