nosql

Serverless DB 设计解读与实战

心不动则不痛 提交于 2020-08-13 15:47:52
哈喽小伙伴们,我们都知道数据库在项目开发中往往是不可或缺的一环,而在云计算热度不断提升的背景之下,我们对于使用数据库的成本以及灵活性有了更高的要求。 Serverless 团队近期新发布了两款组件来填补这最关键的一块拼图 —— Serverless DB! 下面我们一起来看看吧! Serverless PostgreSQL 组件 PostgreSQL for Serverless 是一款基于 PostgreSQL 数据库实现的按需分配资源的数据库产品,其数据库将根据用户的实际请求数来自动分配资源。通过 PostgreSQL ServerlessDB 组件,用户可以快速方便地创建、配置和管理腾讯云的 PostgreSQL 实例。 产品有以下特性: 低成本:产品按照用户使用的计算资源和容量来计费,没有请求时无需付费,减少使用成本。 方便配置:默认配置将由 Serverless 为用户完成,用户也可自行在yaml文件中更改,短短几行即可完成配置工作,方便用户更好地关注自身业务逻辑。 极速部署:部署过程流畅快捷,仅需几秒,即可创建或更新数据库。 高可用:PostgreSQL for Serverless 支持一主一备高可用,当主实例出现意外导致不可用时,数据库将自动启动备用实例,此时业务连接将转移至备用实例当中,避免业务因意外情况而导致数据库无法使用。 Serverless TCB 组件

数据源管理 | 分布式NoSQL系统,Cassandra集群管理

做~自己de王妃 提交于 2020-08-13 12:34:04
本文源码: GitHub·点这里 || GitEE·点这里 一、Cassandra简介 1、基础描述 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,此后,由于Cassandra良好的可扩展性,逐渐发展成为了一种流行的分布式结构化数据存储方案。 2、特点分析 弹性可扩展性 Cassandra是高度可扩展的;它允许添加更多的硬件以适应更多的客户和更多的数据根据要求,可以根据业务的数据流量轻松扩展集群规模。 架构特点 Cassandra可以基于分布式运行,并采用了许多容错机制。由于去中心化无主的策略,所以没有单点故障。可以做到不停服滚动升级。这是因为Cassandra可以支持多个节点的临时失效(取决于群集大小),对群集的整体性能影响可以忽略不计。并且Cassandra提供多地域容灾。Cassandra允许将数据复制到其他数据中心,并在多个地域保留多副本,十分适用于不能承担故障的关键业务,必须持续提供服务的应用程序。 数据存储机制 Cassandra适应所有可能的数据格式,包括:结构化,半结构化和非结构化。可以根据业务的需要动态地适应变化的数据结构,并且通过在多个数据中心之间复制数据,可以灵活地在需要时分发数据。有许多案例证明Cassandra可以在金融,医疗,物联网等领域使用。 资源整合能力

机器学习项目失败的9个原因

纵然是瞬间 提交于 2020-08-13 04:56:55
本文总结了数据科学项目失败的最常见原因,希望能够帮助你避免陷阱。 1.问错了问题 如果你问了错问题,你将会得到错误的答案。比如金融业中的欺诈识别问题,这个问题最初可能是“这个特定的交易是否存在欺诈”。为了确定这一问题,你将需要一个包含欺诈和非欺诈交易示例的数据集。这个数据集可以在一组专门负责侦测欺诈行为的专家(SME)的帮助下生成。但是,由于专家们依据的是过去对欺诈行为的认识进行的标记,用该数据集训练的模型只会捕获符合旧模式欺诈,而对于新兴的欺诈方式,这一模型将无法识别。如果将问题改为“这个交易是否反常”,它只需寻找不符合“正常”签名的交易,依靠人类进一步分析预测的欺诈交易以验证模型结果即可。但这种方法的副作用是,它很可能会比以前的模型产生更多的误报。 2.试图用它来解决错误的问题 我们经常会忽视一个问题:我们费尽心思解决了一个问题,但是解决后是否能实现我们的目的。比如,你想出了用人工智能开发出一个将人的全身照传上网站就能根据提醒量身定做一套合身的衣服的项目。完成这个项目我们需要完成以下任务: ·开发AI/ML技术以确定照片中的身体测量值; ·设计并创建一个网站和手机应用,以便与客户进行互动; ·进行可行性研究以确定此产品是否有市场。 作为技术专家,我们最熟悉的就是产品设计与编码,因此我们可能想开始研究前两个任务

Java架构面试必知必会的微服务面试题解析

女生的网名这么多〃 提交于 2020-08-13 02:07:49
SOA与微服务的区别? 1、SOA SOA的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。 服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。 基于这些基础的服务,可以将业务过程用类似BPEL流程的方式编排起来,而BPEL反映的是业务处理的过程,这些过程对于业务人员更为直观,调整也比hardcode的代码更容易。 当然企业还需要对服务治理,比如服务注册库,监控管理等。 我们知道企业计算领域,如果不是交易系统的话,并发量都不是很大的,所以大多数情况下,一台服务器就容纳将许许多多的服务,这些服务采用统一的基础设施,可能都运行在一个应用服务器的进程中。 虽然说是面向服务了,但还是单一的系统。 2、微服务 而微服务架构大体是从互联网企业兴起的,由于大规模用户,对分布式系统的要求很高,如果像企业计算那样的系统,伸缩就需要多个容纳续续多多的服务的系统实例,前面通过负载均衡使得多个系统成为一个集群。 但这是很不方便的,互联网企业迭代的周期很短,一周可能发布一个版本,甚至可能每天一个版本,而不同的子系统的发布周期是不一样的。 而且,不同的子系统也不像原来企业计算那样采用集中式的存储,使用昂贵的Oracle存储整个系统的数据,二是使用 MongoDB,HBase,Cassandra等NOSQL数据库和 Redis ,

【赵强老师】MongoDB插入文档

*爱你&永不变心* 提交于 2020-08-12 09:04:03
MongoDB是非关系型数据库NoSQL的代表,作为一款可分布式存储的数据库,对文档的操作是MongoDB的重中之重。在本文中,我们将着重为大家介绍如何在MongoDB中插入文档。 MongoDB一共为我们提供了三种方式用于插入文档: db.collection.insertOne() :插入一个指定文档 db.collection.insertMany() :插入多个指定文档 db.collection.insert() : 插入一个或多个指定文档 使用insert语句可以将一个新的文档插入到一个collection中。如果该collection还不存在,insert语句会自动创建该collection。 一、db.collection.insertOne() :插入一个指定文档 db.collection.insertOne( <document>, { writeConcern: <document> } ) 示例:插入一条学生数据: 二、db.collection.insertMany() :插入多个指定文档 db.collection.insertMany( [ <document 1> , <document 2>, ... ], { writeConcern: <document>, ordered: <boolean> } ) 上面的方法主要有三个参数:

爬虫数据库存储之关系型与非关系型

柔情痞子 提交于 2020-08-12 07:32:35
对于爬虫来说这些东西都是一些比较基础常识的东西,但为了记录自己的学习之路,所以简略的写下本文。 什么是数据库? 数据库是存放数据的仓库。它的存储空间很大,可以存放大量数据。用户可以对文件中的数据进行新增、查询、更新、删除等操作。 分为关系型数据库、非关系型数据库,如 MySQL、MongoDB、HBase 等,常用的库有 pymysql、pymssql、redis-py、pymongo、py2neo、thrift。 什么是关系型数据库? 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表保存的,所以它的存储方式就是行列组成的表。 每一列是一个字段,每一行是一条记录。表可以看作某个实体的集合,而实体之间存在联系,就需要表与表之间的关联关系来体现。关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”) 关系型数据库的优势: 1. 复杂查询 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。 什么是非关系型数据库? 非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库 关系型数据库的优势: 1. 复杂查询 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。 2. 事务支持

Django框架,Flask框架和Tornado框架各有什么优缺点

余生颓废 提交于 2020-08-12 02:52:55
Django:Python 界最全能的 web 开发框架,battery-include 各种功能完备,可维护性和开发速度一级棒。常有人说 Django 慢,其实主要慢在 Django ORM 与数据库的交互上,所以是否选用 Django,取决于项目对数据库交互的要求以及各种优化。而对于 Django 的同步特性导致吞吐量小的问题,其实可以通过 Celery 等解决,倒不是一个根本问题。Django 的项目代表:Instagram,Guardian。 Tornado:天生异步,性能强悍是 Tornado 的名片,然而 Tornado 相比 Django 是较为原始的框架,诸多内容需要自己去处理。当然,随着项目越来越大,框架能够提供的功能占比越来越小,更多的内容需要团队自己去实现,而大项目往往需要性能的保证,这时候 Tornado 就是比较好的选择。Tornado项目代表:知乎。 Flask:微框架的典范,号称 Python 代码写得最好的项目之一。Flask 的灵活性,也是双刃剑:能用好 Flask 的,可以做成 Pinterest,用不好就是灾难(显然对任何框架都是这样)。Flask 虽然是微框架,但是也可以做成规模化的 Flask。加上 Flask 可以自由选择自己的数据库交互组件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等异步特性以后

Redis学习笔记

偶尔善良 提交于 2020-08-11 23:25:02
教学视频 Redis官网 Redis中文网 本文用到的Java源码 - - - 01.NoSQL入门概述-上 02.NoSQL入门概述-下 03.当下NoSQL应用场景简介 04.NoSQL数据模型简介 05.NoSQL数据库的四大分类 06.分布式数据库CAP原理 07.安装 08.HelloWorld 09.启动后杂项基础知识 10.常用五大数据类型简介 11.Key关键字 12.String 13.List 14.Set 15.Hash 16.ZSet 17.配置文件介绍 18.持久化之RDB 19.持久化之AOF 20.事务 21.消息订阅发布简介 22&23.主从复制 24.Jedis_测试联通 25.Jedis_常用API 26.Jedis_事务 27.Jedis_主从复制 28.Jedis_JedisPool 29.待学 - - 01.NoSQL入门概述-上 1.互联网时代背景下大机遇,为什么用NoSQL 1.单机MySQL的美好年代 在90年代,一个网站的浏览量一般都不大,用单个数据库完全可以轻松应付。 在那个时候,更多的都是静态网页,动态交互类型的网站不多。 DAL:Data Access Layer 上述架构下,我们来看看数据存储的瓶颈是什么? 数据量的总大小一个机器放不下时 数据的索引(B+ Tree)一个机器的内存放不下时 浏览量(读写混合)一个实例不能承受

互联网分布式系统架构演进之路

江枫思渺然 提交于 2020-08-11 15:27:24
前言: 这是一篇学习心得的分享,告诉大家一个小系统是如何变得越来越复杂的。随着参与开发项目的增多,每天也在用很多app或者网站。那么大型网站一开始就是大型的吗?我们应该一开始就设计一个大型网站吗?可以带着这样的思考来一起阅读这篇文章。 正文: 一、初生 一个小网站刚做出来的的时候,往往都是没有什么人知道,所以单个服务器就可以满足需求。使用LAMP技术就可以。 二、成长(发展问题) 1.随着网站业务的发展,越来越多的用户访问,面临的问题: 性能越来越差 越来越多的数据导致存储空间不足 解决方案 :升级项目架构,应用服务与数据服务分离。(一个框框代表一个服务器) 这样处理带来的好处:充分发挥不同类型服务器的特点 2.随着用户逐渐增多,网站再次面临挑战: 数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验受到影响! 解决方案: 使用缓存改善性能 本地缓存和远程分布式缓存的优缺点: 本地缓存速度极快,但是缓存的数据量有限,毕竟本地服务器内存有限 远程分布式缓存相对于本地缓存性能稍差一点(因为要进行一次网络访问才可以拿到数据),但是又要比从数据库直接读取数据快,相当于利用空间换取时间 3.随着用户逐渐增多,单一应用服务器面临新的问题: 能够处理的请求有限,网站访问高峰期,应用服务器成为整个网站的瓶颈 解决方案: 应用服务器集群(分流) 常用负载均衡实现的方式: 4. 使用缓存后

用存储过程和 JAVA 写报表数据源有什么弊端?

蓝咒 提交于 2020-08-11 15:06:18
我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利。所以,报表开发中这样的存储过程并不少见: 3008 行,141KB 的存储过程,会给报表开发带来什么不好的影响? 1. 编辑调试性 存储过程难以编辑调试,这样几千行存储过程的开发周期往往要以周或月计,这样会严重影响报表的开发效率,而业务提的报表需求似乎都“很急”。 2. 维护性 相对开发的一次性,维护的工作可能要经常做。实际业务中报表经常会修改,这种现象叫做报表业务的稳定性差。报表的数据准备逻辑变化,修改上千行的存储过程对绝大多数报表开发人员来说都是噩梦。 有时这样的报表会分两拨人来做,DBA 或专业程序员负责编写存储过程给前端报表开发人员做报表,这样就避免了报表开发人员写存储过程。但这样报表修改的流程会变长,修改一张报表涉及多个人员之间沟通(还包括业务人员),如果负责报表前后端的两拨人隶属不同的团队就更麻烦了。 3. 知识传承 从维护性可以直接引出另一个“知识传承”的问题。还是拿上面的报表为例,如果一个新人要改上面的报表,你觉得他要多久能看懂存储过程,改完报表? 当然,这个问题还涉及很多管理方面的手段,单纯从技术本身来看,这样的报表想要很好地传承知识是很难的。 4. 安全性 对存储过程的修改需要较高的数据库权限,而报表经常要改就要经常操作数据库