分布式数据库实践(一)

分布式数据库技术深度解析与代码实践 分布式数据库(DistributedDatabase)是一种数据存储系统,它将数据分散存储在多个物理位置(服务器、节点)上,同时对用户呈现为一个统一的数据库。分布式数据库的核心思想是将数据分布在多个地点进行存储和处理,这些地点可以是同一数据中心内的不同服务器,也可以是地理上分散的多个数据中心。分布式数据库的目标是在保证数据一致性、可用性和性能的前提下,提供一个灵活、可扩展且高效的数据存储解决方案。分布式数据库是为了应对大规模数据处理、全球化部署、高并发需求和高可用性要求而设计的数据库系统。 阅读详情

分布式数据库 (说明)

  1. 系统分析:OLTP 和 OLAP

海量数据的存储与访问成为系统设计与使用的瓶颈问题,对于海量数据处理,按照使用场景,主要分为两种类型:联机事务处理(OLTP)和联机分析处理(OLAP)。

OLTP也叫做面向交易的处理系统,其基本特征是原始数据可以立即传送到计算中心处理,并在很短的时间内给出处理结果。

OLAP指的是通过多维的方式对数据进行分析、查询和报表,可以同数据挖掘工具、统计分析工具配合使用,增强决策分析功能。

OLTPOLAP
系统设计日常交易处理统计、分析、报表
DB设计面向实时交易类应用面向统计分析类应用
数据处理当前的,最新的、细节的,二维的,分立的历史的,聚集的、多维的、集成的、统一的
实时性实时读写要求高实时读写要求低
事务强一致性弱事务
分析要求低、简单高、复杂

OLTP和OLAP的比较。OLTP面向实时交易类,实时要求性高,查询分析功能偏弱。OLAP面向统计分析类,实时性要求一般,涉及到大范围扫描,JOIN,聚合查询等,要求有比较高的查询分析能力。

MySQL适合OLTP类型的系统,因为MySQL的分析支持比较弱,适合高并发的小的查询操作。在进行数据库技术选型及选择解决方案之前,必须对系统是OLTP还是OLAP做出准确的判断。

技术选型:关系型数据库 or NoSQL数据库

针对上面两类系统有多种技术实现方案,存储部分的数据库主要分为两大类:关系型数据库与NoSQL数据库。

关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据。主流的Oracle、DB2、MS SQL Server和MysSQL都属于这类传统数据库。

NoSQL 数据库,全称为 Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储 (memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、 CouchDB)、面向列的数据库(Cassandra、HBase),每种NoSQL都有其特有的使用场景及优点。

Oracle,MySQL等传统的关系数据库非常成熟并且已大规模商用,为什么还要用NoSQL数据库呢?主要是由于随着互联网发展,数据量越来越大,对性能要求越来越高,传统数据库存在着先天性的缺陷,即单机(单库)性能瓶颈,并且扩展困难。这样既有单机单库瓶颈,却又扩展困难,自然无法满足日益增长的海量数据存储 及其性能要求,所以才会出现了各种不同的NoSQL 产品,NoSQL 根本性的优势在于在云计算时代,简单、易于大规模分布式扩展,并且读写性能非常高。

下面分析下两者的特点,及优缺点:

在这里插入图片描述

虽然在云计算时代,传统数据库存在着先天性的弊端,但是 NoSQL 数据库又无法将其替代,NoSQL 只能作为传统数据的补充而不能将其替代,所以规避传统数据库的缺点是目前大数据时代必须要解决的问题。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷,但是由于目前开源或者商用的传统数据库基本不支持大规模自动扩展,所以就需要借助第三方来做处理,那就是下面要讲的数据切分,下面就来分析一下如何进行数据切分。

数据切分,解决单库瓶颈

在同一个数据库中的数据分散存放到多个数据库(主 机)上面,以达到分散单台设备负载的效果。数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。

垂直切分

按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分。

一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图:

在这里插入图片描述

系统被切分成了用户、订单交易、支付几个模块。

一个架构设计较好的应用系统,其总体功能肯定是由很多个功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一个或者多个表。而在架构设计中,各个功能模块相互之间的交互点越统一越少,系统的耦合度就越低,系统各个模块的维护性以及扩展性也就越好。这样的系统,实现数据的垂直切分也就越容易。

但是往往系统之有些表难以做到完全的独立,存在这扩库 join的情况,对于这类的表,就需要去做平衡,是数据库让步业务,共用一个数据源,还是分成多个库,业务之间通过接口来做调用。在系统初期,数据量比较少,或者资源有限的情况下,会选择共用数据源,但是当数据发展到了一定的规模,负载很大的情况,就需要必须去做分割。

一般来讲业务存在着复杂 join 的场景是难以切分的,往往业务独立的易于切分。如何切分,切分到何种程度是考验技术架构的一个难题。

下面来分析垂直切分的优缺点:

优点:===>

  1. 拆分后业务清晰,拆分规则明确;
  2. 系统之间整合或扩展容易;
  3. 数据维护简单。

缺点:===>

  1. 部分业务表无法 join,只能通过接口方式解决,提高了系统复杂度;
  2. 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高;
  3. 事务处理复杂。
水平切分

另外一种则是根据 表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。

相对于垂直拆分,水平拆分不是将表做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中,如图:

在这里插入图片描述

拆分数据就需要定义分片规则。关系型数据库是行列的二维模型,拆分的第一原则是找到拆分维度。比如: 从会员的角度来分析,商户订单交易类系统中查询会员某天某月某个订单,那么就需要按照会员结合日期来拆分,不同的数据按照会员ID做分组,这样所有的数据查询 join 都会在单库内解决;如果从商户的角度来讲,要查询某个商家某天所有的订单数,就需要按照商户 ID 做拆分;但是如果系统既想按会员拆分,又想按商家数据,则会有一定的困难。如何找到合适的分片规则需要综合考虑衡量。

几种典型的分片规则包括:

  • 按照用户ID求模,将数据分散到不同的数据库,具有相同数据用户的数据都被分散到一个库中;

  • 按照日期,将不同月甚至日的数据分散到不同的库中;

  • 按照某个特定的字段求摸,或者根据特定范围段分散到不同的库中。 如图,切分原则都是根据业务找到适合的切分规则分散到不同的库,下面用用户ID求模举例:

在这里插入图片描述

优点:===>

  • 拆分规则抽象好,join 操作基本可以数据库做;
  • 不存在单库大数据,高并发的性能瓶颈;
  • 应用端改造较少;
  • 提高了系统的稳定性跟负载能力。

缺点:===>

  • 拆分规则难以抽象;
  • 分片事务一致性难以解决;
  • 数据多次扩展难度及维护量大;
  • 跨库join性能较差;

前面讲了垂直切分跟水平切分的不同跟优缺点,会发现每种切分方式都有缺点,但共同的特点缺点有:===>

  • 引入分布式事务的问题;
  • 跨节点 Join 的问题;
  • 跨节点合并排序分页问题;
  • 多数据源管理问题。

数据切分解决传统数据库的缺陷,又有了 NoSQL 易于扩展的优点。

MySQL:做分布式数据库的优势

关于Oracle和MySQL的对比。

关于这两数据库的全方位的多维度的优劣对比,比较有经验的数据库开发人员应该能列举出很多来,我身为一名普通的应用开发人员,写不出什么硬核的分析对比,只能大概表达一些我的理解。

Oracle简单概括:功能,性能,稳定,人才;MySQL简单概括:灵活,简单,便宜,开源。

Oracle的发展历史是MySQL的两倍以上,现在已经是很成熟的商业数据库系统。Oracle为用户提供了非常丰富强大的功能,可编程和分析函数的支持都做到非常完善,还有无限的行级锁,最高级别的隔离级别,完全的事务支持,成熟的热备工具,稳定可靠但复杂的高可用配置,还有大批有经验的DBA人才,总之,如果你想要一个稳定可靠并且性能强大的数据库单集群,那Oracle是完美的。But,如果使用分布式解决方案,昂贵的Oracle也会给你带来惊人的license费用,Oracle的功能看上去丰富而全面,但是那都是要钱的,有时候我们并不需要其中的很多东西,Oracle缺少可定制化的灵活性。

MySQL有开源和灵活的优势,轻便的MySQL虽然功能性没有Oracle强大,但是作为数据库,最重要和核心的功能都做的很好。MySQL非常灵活,针对每个表都能指定不同的存储引擎,InnoDB引擎支持依赖于索引的行级锁;同时MySQL提供了简单高速的主从复制配置,能提供快速冗余的专业集群服务器;MySQL的开源特性,让互联网团队可以自研支持MySQL协议的代理中间件来支持实现MySQL的分布式集群,同时可以灵活定制修改MySQL细节功能,目前基于MySQL的分布式数据库基本都是采用这一方式。


预备文,这里才正式发车,车门焊死。。。。。  

什么是分区、分表、分片、分库

分区,局限于单一数据库节点,将一张表分散存储在不同的物理块中。MySQL5以后支持分区,但是不支持二级分区,并且单机MySQL的性能远远不如Oracle,所以分区并不能解决性能问题

在这里插入图片描述

分表,分表有两种,应用层面的分表和代理层面的分表。

应用层面的分表,人工把一张逻辑上完整的表分成若干个小表。比如T_PAYMENT表分为T_PAYMENT_0101…T_PAYMENT_1231。对代码不透明。

在这里插入图片描述

代理层面的分表,通过MERGE引擎或者代理中间件把表分成若干的字表,对应用只保留一个“表壳”,对代码透明。(MERGE引擎示意)

在这里插入图片描述

分表和分区比较类似,侧重点不同,分区侧重提高读写性能,分表侧重提高并发性能。两者不冲突,可以配合使用。

分库,单纯的分库就是垂直切分,把不同业务逻辑的表分开存储在在不同的数据库。

在这里插入图片描述

分片,分片就是分库+分表,属于水平切分,将表中数据按照某种规则放到多个库中,既分表又分库,就相当于原先一个库中的一个表,现在放到了好多个表里面,然后这好多个表又分散到了好多个库中。分片和分区也不冲突。

在这里插入图片描述

MYSQL分片
分片键

数据分片是将一张分布式表按照指定的分片键(Partition Key)和分片模式(Partition Mode)水平拆分成多个数据片,分散在多个数据存储节点中。对于分片的表,要选取一个分片键。一张分布式表只能有一个分片键,分片键是用于划分和定位表的列,不能修改。

分片模式
  • 枚举/列表List

{1 => Cluster A, 2 => Cluster B}

  • 范围Range (仅支持数字或ASCII字符串类型的分片键)

{[1 - 100] => Cluster A, [101 - 199] => Cluster B}

  • 散列Hash (仅支持数字或ASCII字符串类型的分片键)

{1024n + 1 => Cluster A, 1024n + 2 => Cluster B}

分片方式类似于分区方式,可以选择枚举,范围Range或者散列哈希。不同的是分片不支持时间range。

分片策略

在做分片的时候,选择合适的分片规则非常重要,将极大地避免后续数据的处理难度,有以下几点需要关注:

  1. 能不分就不分,对于1000万以内的表,不建议分片,通过合适的索引,读写分离等方式,可以更好地解决性能问题。

  2. 分片数量不是越多越好,并且尽量均匀分布在多个存储节点上,只在必要的时候进行扩容,增加分片数量。

  3. 分片键不能为空,不能修改,所以要选择表中中最常用且不变的字段。

  4. 分片键选择时尽量做到可以将事务控制在分片范围内,可以避免出现跨分片的操作。

  5. 选择分片规则时,要充分考虑数据的增长模式,数据的访问模式,分片关联 性问题,以及分片扩容问题。

总体上来说,分片的选择是取决于最频繁的查询 SQL 的条件。找出每个表最频繁的 SQL,分析其查询条件,以及相互的关系,并结合 ER 图,就能比较准确的选择每个表的分片策略。

MySQL分片要解决的问题

事务问题

分布式数据库分散在多个不同的物理主机,网络环境复杂,关注事务,保证数据一致性是一个问题。

先看单机环境下的事务管理,以Spring为例,利用注解的事务管理:

@Override
@Transactional
public void service(){
    ...
    UserService.updateUserByUserId(userId);
    ...
    OrderService.updateOrderByOrderNo(orderNo);
    ...
}

实际上这段代码等同于:

@Override
public void service(){
    ...
    UserService.updateUserByUserId(userId);
    ...
    OrderService.updateOrderByOrderNo(orderNo);
    ...
    try{
        commit();
    }catch(Exception e){
        rollback();
    }
}

大致的过程就是:

在这里插入图片描述

变成分布式环境,变成了这样:

在这里插入图片描述

如何给多主机发commit并且保证他们最终状态一致就是分布式事务要解决的问题。

解决这个问题有两种方案。

第一种由应用程序和数据库共同控制,将一个跨多个数据库的分布式事务分拆成多个仅处于单个数据库上面的小事务,并通过应用程序来总控各个小事务。

@Override
public void service(){
    ...
    userService();
    ...
    try{
        orderService();
    }catch(Exception e){
        rollback();
    }
    ...
    }


@Override
@Transactional
public void userService() throws RuntimeException{
    ...
    UserService.updateUserByUserId(userId);
    ...
}

@Override
@Transactional
public void orderService() throws RuntimeException{
    ...
    OrderService.updateOrderByOrderNo(orderNo);
    ...
}
}

这个方法是性能上比较高效,缺点就是需要应用程序在事务控制上做灵活设计。如果使用 了Spring的事务管理,改动起来会面临一定的困难。

第二种是交由数据库管理,简单有效。比较常见的方案有两阶段提交2PC、补偿事务TCC,MQ事务消息等。下图演示了2PC的过程。

在这里插入图片描述

除了图中提到的三个缺点,两阶段提交的方案影响的整体性能。

根据CAP原理,分布式数据库无法做到完全的ACID原则,几乎所有分布式解决方案都牺牲了部分一致性或者可用性。比如用最终一致性代替强一致性。

跨节点Join的问题

只要是进行切分,跨节点Join的问题是不可避免的。但是良好的设计和切分却可以减少此类情况的发生。解决这一问题的普遍做法是分两次查询实现。在第一次查询的结果集中找出关联数据的id,根据这些id发起第二次请求得到关联数据。

如果频次较高,可以考虑添加一张关联表,规避掉join操作,空间换时间。

在交易时直接将记录插入关联表,即可在查询时查询关联表获得想要的结果。

跨节点的count,order by,group by以及聚合函数问题

这些是一类问题,因为它们都需要基于全部数据集合进行计算。多数的代理都不会自动处理合并工作。

解决方案:与解决跨节点join问题的类似,分别在各个节点上得到结果后在应用程序端进行合并。和join不同的是每个结点的查询可以并行执行,因此很多时候它的速度要比单一大表快很多。但如果结果集很大,对应用程序内存的消耗是一个问题。

值得提醒的是,如果你的应用中包含大量的此类分析及聚合操作,考虑是否你对系统类型判断有误,是OLAP而非OLTP系统。对于OLAP系统不推荐使用MySQL更不推荐使用DRDS分布式数据库存储。

数据迁移,容量规划,扩容等问题

在前期如果对系统数据仓库的容量没有正确的预估,会遇到扩容问题。

利用对2的倍数取余具有向前兼容的特性(如对4取余得1的数对2取余也是1)来分配数据,避免了行级别的数据迁移,但是依然需要进行表级别的迁移,同时对扩容规模和分表数量都有限制。

举例说明,扩容前有两个集群作为存储节点,现要扩容为四个。

在这里插入图片描述

在这里插入图片描述

将原先的备机(A1,B1)升级为主机,然后再分别给他们配置备机,即完成了两倍的扩容。根据前面说的向前兼容的特性,分片规则不需要变化,是目前比较常用的扩容方案。

这部分实际和开发人员关系不大,了解即可。

ID问题

一旦数据库被切分到多个物理结点上,我们将不能再依赖数据库自身的主键生成机制。

一方面,某个分区数据库自生成的ID无法保证在全局上是唯一的;

另一方面,应用程序在插入数据之前需要先获得ID,以便进行SQL路由。

比较常见的ID解决方案是应用生成UUID,或者在数据库中维护一个Sequence表。

跨分片的排序分页

一般来讲,分页时需要按照指定字段进行排序。当排序字段就是分片字段的时候,我们通过分片规则可以比较容易定位到指定的分片,而当排序字段非分片字段的时候,情况就会变得比较复杂了。为了最终结果的准确性,我们需要在不同的分片节点中将数据进行排序并返回,并将不同分片返回的结果集进行汇总和再次排序,最后再返回给用户。如下图所示:

在这里插入图片描述

上面图中所描述的只是最简单的一种情况(取第一页数据),看起来对性能的影响并不大。但是,如果想取出第10页数据,情况又将变得复杂很多,如下图所示:

在这里插入图片描述

有些读者可能并不太理解,为什么不能像获取第一页数据那样简单处理(排序取出前10条再合并、排序)。其实并不难理解,因为各分片节点中的数据可能是随机的,为了排序的准确性,必须把所有分片节点的前N页数据都排序好后做合并,最后再进行整体的排序。很显然,这样的操作是比较消耗资源的,用户越往后翻页,系统性能将会越差。

那如何解决分库情况下的分页问题呢?有以下几种办法:

如果是在前台应用提供分页,则限定用户只能看前面n页,这个限制在业务上也是合理的,一般看后面的分页意义不大(如果一定要看,可以要求用户缩小范围重新查询)。

如果是后台批处理任务要求分批获取数据,则可以加大page size,比如每次获取5000条记录,有效减少分页数(当然离线访问一般走备库,避免冲击主库)。

分库设计时,一般还有配套大数据平台汇总所有分库的记录,有些分页查询可以考虑走大数据平台。

分库策略

比较常见的两种分库策略,按照范围分库或者按照Mod分库,各有侧重点。

按照范围分库一般在前期数据量较小,在使用过程中用户数据不断增长,在数据库数量少时全库查询消耗小,后期调整数据库数量也比较容易。

按照Mod分库在初期就要规划好数据库数量,单库查询性能好,如果调整Mod因子会导致数据库迁移,后期增加数据库数量也比较麻烦。

实际使用中为了处理简单,一般选mod分库,数据库数量选择2的倍数,方便扩容。

分库数量

分库数量首先和单库能处理的记录数有关,一般来说,Mysql 单库超过5000万条记录,Oracle单库超过1亿条记录,DB压力就很大(当然处理能力和字段数量/访问模式/记录长度有进一步关系)。

在满足上述前提下,如果分库数量少,达不到分散存储和减轻DB性能压力的目的;如果分库的数量多,好处是每个库记录少,单库访问性能好,但对于跨多个库的访问,应用程序需要访问多个库,如果是并发模式,要消耗宝贵的线程资源;如果是串行模式,执行时间会急剧增加。

最后分库数量还直接影响硬件的投入,一般每个分库跑在单独物理机上,多一个库意味多一台设备。所以具体分多少个库,要综合评估,一般初次分库建议分4-8个库。

路由透明

分库从某种意义上来说,意味着DB schema改变了,必然影响应用,但这种改变和业务无关,所以要尽量保证分库对应用代码透明,分库逻辑尽量在数据访问层处理。

历史数据清理

历史数据的清理是一个比较棘手的问题。

假设我有一张订单表,联机系统只保存最近五天的订单,之前的要删除掉。

我们没办法根据日期进行分片,因为日期每天都在变化,按照日期分片意味着分片规则每天都在变化。这和常见的在Oracle定时任务删除分区和新建分区是不一样的。

假使我们根据设备进行分片,那么常规情况下,同一天的订单会均匀分布在各个分片上。最起码的原则是避免跨分片操作,因为跨分片操作性能极其低而且很多时候你也不知道会发生什么未知的事情。

所以比较容易想到的方法就是找到每个分片然后再每个分片上进行单独的数据清理操作。

如果是自研的分布式架构,应该可以通过脚本将清理语句分别路由到各个分片。如果是使用的开源中间件,大部分都会提供分片操作的方法(如果没有,那只能另寻他法了。)。如果是使用的商业服务的分布式数据库,也会提供分片数据清理操作的方法。

MyCat应用实战:分布式数据库中间件的实践与优化(篇幅一) 本文将深入探讨 MyCat 的核心特性及其在实际应用中的最佳实践。我们将从 MyCat 的基本架构入手,逐步剖析其在分布式环境下的工作原理,包括数据分片、读写分离、缓存机制等关键功能。通过具体的实战案例,展示如何在不同的业务场景中运用 MyCat 优化数据库性能,提升系统的并发处理能力和数据一致性。同时,我们还将分享在部署和维护 MyCat 过程中积累的宝贵经验,帮助读者避免常见的坑点,确保系统稳定运行。 阅读详情

相关推荐

阿里云分布式数据库实践-文字版

阿里云分布式数据库实践-文字版 这个是带完整目录书签的文字版本,文本内容可以复制的哦

分布式存储的六大优点

分布式存储往往采用分布式的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。它不但提高了系统的可靠性、可用性和存取效率,还易于扩展,将通用硬件引入的不稳定因素降到最低。优点如下:1. 高性能一个具有高性能的分布式存户通常能够高效地管理读缓存和写缓存,并且支持自动的分级存储。分布式存储通过将热点区域内数据映射到高速存储中,来提高系统响应速度;一旦这些区域不再是热点,那么存储系统会...

weixin_33830216的博客 4088

手把手教你搞定爱思唯尔LaTeX投稿:从模板到PDF生成的全流程避坑指南

本文详细介绍了使用LaTeX投稿爱思唯尔期刊的全流程避坑指南,包括模板选择、文件结构规范、投稿系统文件上传策略、PDF生成与检查等关键步骤。特别强调了避免常见错误如宏包冲突、图片丢失和参考文献问题,并提供了投稿后的应急方案和高阶自动化校验脚本,帮助研究者顺利完成投稿。

weixin_42525289的博客 511

分布式数据库系统实验四

当数据库执行一条query语句的时候必须遵循预先定义好的一系列规则(比如oracle的15条规则,排名越靠前的执行引擎认为效率越高)来确定执行过程,它不关心访问表的数据分布情况,仅仅凭借规则经验来确定,所以说是一种比较粗放的优化策略。让执行引擎依据预先存储到数据库中表的一些实时更新的统计信息来选择出最优代价最小的执行计划来执行query语句,CBO会根据统计信息来生成一组可能被使用到的执行计划,进而估算出每个计划的代价,从而选择出代价最小的交给执行器去执行。数据库是执行的查询计划,而不是Sql语句。

定期分享我的发现和想法,感谢你的陪伴和支持 6039

FPGA实战:AXI BRAM Controller配置避坑指南(Vivado 2023版)

本文详细解析了Vivado 2023环境下AXI BRAM Controller的配置技巧与避坑指南,涵盖AXI4协议转换、BRAM地址空间配置、信号异常处理及突发传输优化等核心内容。针对写时序冲突、跨时钟域处理等常见问题提供实用解决方案,帮助开发者提升FPGA系统性能与稳定性。

q1w3e5r7t9y的博客 342

如何免费访问和使用Gemini API?

Gemini Ultra具有最先进的性能,在几个指标上超过了GPT-4的性能。它是第一个在大规模多任务语言理解基准测试中超越人类专家的模型,该基准测试57个不同学科的世界知识和解决问题的能力。Gemini是谷歌迄今为止开发的最先进、最庞大的AI模型。它为多模态而建,理解并处理不同类型的数据,比如文本、代码、音频、图像和视频。下面我们将加载Masood Aslami的图像,并用它来测试Gemini Pro Vision的多模态性。有了Gemini可以为查询提供图像、音频和文本,获得几乎完美的答案。

java_cjkl的博客 1万+

分布式数据库实验一——分布式数据库环境的搭建

HBase采用了和Hadoop相同的RPC机制,作为它的主要通信手段,这是一个轻量的,不同于Java标准的RMI的一种方式。分布式系统使处于不同物理位置的多个进程组成的整体,为了确保整体有效并且高效的对外提供服务,每个节点都需要进行通信来交换信息。能够通过环境平台的搭建,熟悉分布式数据库的有关技术体系架构。服务端向客户端传输结果。实验难点:以完全分布式为例,前期Hadoop集群和Zookeeper的安装,以及网络通信的测试。掌握分布式数据库环境的搭建,从实践环境搭建的过程中,初步理解分布式数据库的含义。

qq_63908157的博客 986

树莓派视觉小车实战:OpenCV驱动的智能物体追踪系统

本文详细介绍了如何从零开始构建一个基于树莓派的智能视觉小车,实现物体跟踪功能。通过OpenCV进行图像处理,结合颜色与轮廓识别算法,让小车能够实时锁定并追踪特定目标。内容涵盖硬件搭建、软件环境配置、核心代码解析及运动控制逻辑,为创客和开发者提供了完整的实战指南。

weixin_29047545的博客 143

分布式数据库 实践篇

07 手机云服务数据存储基于MySQL 的手机云服务架构云服务包括用户的通话记录、短信、联系人的同步等。当时 Flyme 系统的总用户数近亿,月活千万级。最开始,Flyme 采用 MySQL 存储这些用户的数据。云服务的业务很复杂,尤其是同步协议这块,在同步策略上包括慢同步、快同步。一次同步也分为了 4 个阶段,分别为 R...

weixin_40367957的博客 158

智算中心建设全流程指南:从规划到落地

智算中心的建设是一个复杂而系统的过程,涉及选址、立项、办理相关手续、设计、土建、机电安装、调试、验收等多个环节。每个环节都需要充分考虑各种因素,并注意相关的事项,以确保智算中心的顺利建设和高效运行

数据中心全生命周期价值管理 3399

[ 人力资源面试篇 ] HR 面试题分析详解大集合,看完直怼面试官(二)

那么在这个系列的文章中,我们聊到 HR 面谈什么?并且总结了五十个常见的人力资源面试题,在这里分享给大家。

qq_51577576的博客 1380

分布式数据库:从基础到实践

分布式数据库是一种将数据存储在多个物理节点上的数据库系统,用户无需关心数据的物理存储位置,通过统一的接口访问数据。其核心目标是提高系统的。

qq_20245171的博客 1352

Python 爬虫实战:爬取股票数据做 K 线图可视化

摘要:本文介绍基于Python的股票数据爬取与K线图可视化全流程技术方案。通过Requests库抓取东方财富网股票数据,使用Pandas进行清洗处理,并利用mplfinance库实现专业K线图绘制。文章详细讲解了数据爬取接口分析、反爬策略配置、K线图绘制方法(包含基础K线图和带均线的进阶版本),以及核心统计指标计算。该方案可应用于股票价格趋势分析,为投资决策提供数据支持,同时强调了数据使用的合规性和技术优化方向。

2503_91057718的博客 2049

基于Sql Server 2008的分布式数据库的实践(一)

基于Sql Server 2008的分布式数据库的实践(一) 原文基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选择“属性”。左侧选择“安全性”,选中右侧的“SQL Server 和 Wi...

weixin_30468137的博客 81

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

本文介绍如何在高速通信情况下解决串口接收的数据来不及处理的问题,由高级工程师多年经验总结而成,绝对是串口领域的实战经验!

qq_34059233的博客 6813

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

读《分布式数据库架构及企业实践》---笔记一

分布式系统采用的是并行计算,而单点式的系统采用的串行计算。分布式系统的特点:高性能,可靠性,扩展性和透明性。          分布式数据库是指数据在物理上分布而在逻辑上集中管理的数据库系统。         物理上分布是指分布式数据库的数据分布在物理位置不同并由网络连接的节点或站点上;         逻辑上的集中是指各数据库节点之间在逻辑上是一个整体,并由统一的数据库管理系统管理。

地主_的博客 1381

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

基于mysql的分布式数据库实践_基于Sql Server 2008的分布式数据库的实践(终结)...

学习、操作心得 以前在做网站程序的时候一直用的是MYSQL,但是网上搜到MYSQL不支持分布式操作,然后便开始查询MSSQL的分布式数据库的设计与操作,后来在网上找到了《基于SQL SERVER的分布式数据库设计与实现.pdf》文档,认真阅读后对水平分布和垂直分布更加学习、操作心得以前在做网站程序的时候一直用的是MYSQL,,但是网上搜到MYSQL不支持分布式操作,然后便开始查询MSSQL的分布式...

weixin_29767773的博客 292

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

分布式数据库架构及企业实践——基于Mycat中间件

书名: 分布式数据库架构及企业实践——基于Mycat中间件作者:周继锋 冯钻优 陈胜尊 左越宗ISBN:978-7-121-30287-9出版年月:2016年11月定价:79元开本:787×980 1/16普通关键词:计算机 分布式 数据库学科关键词: 分布式 数据库 架构 实践编辑推荐讲解分布式数据库的书并不多,讲解其架构及企业实践的就更少了。本书基于国内知名的开源分布式数据库中间件Mycat...

chenshengzun721的专栏 279

深入探索OceanBase分布式数据库理论:开启数据管理新篇章

在当今数字化转型风起云涌的时代,数据已然成为企业最为宝贵的资产之一。随着数据量呈爆炸式增长、业务场景愈发复杂多元,传统的集中式数据库在应对高并发、海量数据存储与处理时逐渐力不从心。应运而生的OceanBase分布式数据库,凭借其卓越的架构设计与先进的技术理念,为全球数据库领域带来了全新的活力与解决方案。而要真正驾驭这一强大工具,扎实的分布式数据库理论学习是必经之路。今天,就让我们一同踏上深入探索OceanBase分布式数据库理论的求知之旅。

shine_du的博客 1551

基于Sql Server 2008的分布式数据库的实践(终结)

学习、操作心得   以前在做网站程序的时候一直用的是MYSQL,但是网上搜到MYSQL不支持分布式操作,然后便开始查询MSSQL的分布式数据库的设计与操作,后来在网上找到了《基于SQL SERVER的分布式数据库设计与实现.pdf》文档,认真阅读后对水平分布和垂直分布更加了解了,但是还是没有想到怎样去实现一个同一逻辑但不是同一地域的分布式数据库。       后来有同学在实验课上讲述了怎么去实...

weixin_34295316的博客 227

分布式数据库备份实践

在分布式备份中可以采取两种方式进行备份,一种是采用手动编写backup.yml文件进行备份,另外一种是吧备份过程交给备份工具自动执行。如果需要个性化进行备份,建议采用手动编写备份文件方式进行备份。

阿楠的博客 960

破局而立:TiDB——驾驭海量数据的分布式数据库哲学与实践

本文深入探讨了新一代分布式关系型数据库TiDB的核心理念、架构设计与实战场景。在数据爆炸与实时智能成为核心竞争力的今天,传统单体数据库和分库分表等方案在扩展性、可用性和实时性上捉襟见肘。TiDB凭借其HTAP融合架构、高度MySQL兼容性、强一致性与弹性伸缩能力,为企业提供了应对高并发、海量数据、实时分析等复杂场景的一站式解决方案。文章将结合AI驱动、云原生、微服务等现代技术趋势,系统剖析TiDB的应用边界、最佳实践与未来展望,旨在为架构师和技术决策者提供兼具理论深度与实践指导的参考指南。

领码SPARK - 以无代码之星火,燎原数字之未来! 854

Undici与Cassandra:分布式数据库连接优化终极指南

🚀 想要在Node.js应用中实现与Cassandra分布式数据库的高效连接?Undici这个现代化的HTTP/1.1客户端正是你的理想选择!作为专为Node.js从头编写的HTTP客户端,Undici在性能和可靠性方面表现出色,特别适合处理与Cassandra等分布式数据库的连接需求。 ## 🔍 为什么选择Undici连接Cassandra? **高性能优势**:Undici采用全新的设

gitblog_09194的博客 422

分布式数据库(一) 概述

前言 分布式数据库( Distributed Database ),简称DDB,它是数据库技术与计算机网络相结合的产物。 分布式数据库系统( Distributed Database System),简称DDBS。 分布式数据库管理系统简称为DDBMS。 分布式数据库系统DDBS = DDB + DDBMS 分布式数据库系统的特点 物理分布性:数据不是存放在一个站点上 逻辑整体性:是与分散式数据库系统的区别 站点自治性:是与多处理机的系统的区别 数据分布透明性 集中与自治相结合 存在适当的数据冗余度 事务

阳光大男孩!!!的博客 1万+

分布式数据库:从原理到实践

通过合理的架构设计和技术选型,可以在保证高性能和高可用性的同时,满足复杂业务场景的需求。分布式数据库是一种将数据分布存储在多个物理节点上的数据库系统,旨在满足高性能、高可用性和可扩展性的需求。分布式数据库是一种通过网络连接多个节点(服务器)组成的数据库系统,这些节点共同存储和管理数据,对用户提供一致性的数据访问接口。在未来,随着云计算、大数据和人工智能技术的发展,分布式数据库将成为数据管理领域的重要基石,为企业的数字化转型提供有力支撑。将数据按某种逻辑规则划分成多个部分,分布到不同的节点。

qq_20245171的博客 993
上一篇: Caffeine Cache和Ehcache3.x 进程缓存性能比较
下一篇: 分布式数据库实践(二)
亦心ll
博客等级 码龄7年 10粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值