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

2024-01-01 20:44

本文主要是介绍低成本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 方式中的独立分离,并且不需要中间件的支持。

这篇关于低成本TB级数据库技术选型之思考两三点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/560464

相关文章

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示