首页 > 数据库 >golang realize数据库简介

golang realize数据库简介

时间:2023-09-03 13:00:35浏览次数:50  
标签:存储 http 单机 简介 数据库 golang 磁盘 realize 分布式

存储与数据库简介

一个提供了读写,控制类接口,能够安全有效的把数据持久化的软件,就可以成为存储系统。

- 存储系统概览

  • 存储系统特点
  • 性能敏感
  • 既简单又复杂
  • 容易受硬件影响
  • 存储器层级结构
  • 单机存储栈
  • RAID技术
  • 单块大容量磁盘的价格>多块小容量的磁盘
  • 单块磁盘的写入性能<多块磁盘的并发写入性能
  • 单块磁盘的容错能力有限,不够安全
  • 数据库系统概览
  • 关系型数据库特点
  • 结构化数据友好
  • 支持事务
  • 支持复杂查询语言

非关系型数据库特点

  • 半结构化数据友好
  • 可能支持事务
  • 可能支持复杂查询语言
  • 数据库 vs 经典存储
  • 事务能力
  • 复杂的查询能力
    数据库使用方式
  • 以SQL为例,要操作数据时候,支持以下操纵
  • Insert
  • update
  • select
  • delete
  • where子句
  • Groupby
  • orderby

主流产品剖析

  • 单机存储
  • 分布式存储
  • 单机关系型数据库
  • 单机非关系型数据库
  • 分布式数据库
  • 单机存储产品
  • 单机文件系统
  • 单机key-value存储
  • 分布式存储产品
  • HDFS
  • Ceph
  • 单机数据库产品
  • 关系型数据库 —— PG、MySQL
  • 非关系型数据库 —— ES、MongoDB、Redis
  • Elasticsearch使用案例
  • 分布式数据库产品
  • 问题与挑战
  • 解决方案

使用 Go 协程

最初我们采用了一个非常简单的 POST 处理程序实现,只是试图将job 处理程序并行化到一个简单的 goroutine 中:

func payloadHandler(w http.ResponseWriter, r *http.Request) {

	if r.Method != "POST" {
		w.WriteHeader(http.StatusMethodNotAllowed)
		return
	}

	// 将body读入字符串进行json解码
	var content = &PayloadCollection{}
	err := json.NewDecoder(io.LimitReader(r.Body, MaxLength)).Decode(&content)
	if err != nil {
		w.Header().Set("Content-Type", "application/json; charset=UTF-8")
		w.WriteHeader(http.StatusBadRequest)
		return
	}
	
	// 分别检查每个有效负载和队列项目以发布到 S3
	for _, payload := range content.Payloads {
		go payload.UploadToS3()   // <----- 这是不建议的做法。这里是最开始的做法。
	}

	w.WriteHeader(http.StatusOK)
}



标签:存储,http,单机,简介,数据库,golang,磁盘,realize,分布式
From: https://blog.51cto.com/u_15638932/7339540

相关文章

  • Spring-webflux简介及基本使用
    spring-webflux是spring在5.0版本后提供的一套响应式编程风格的web开发框架。这个框架包含了spring-framework和springmvc,它可以运行在Netty、Undertow以及3.1版本以上的Serlvet容器上。你可以在项目中同时使用spring-webmvc和spring-webflux,或者只用其中一个来开发web应用。......
  • sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇
    转sleep、yield、join方法简介与用法sleep与wait区别多线程中篇1.sleep不会释放锁,不会释放锁,不会释放锁 所以对于sleep方法,要么自己醒来,要么被中断后也会醒来 yield也是静态方法,所以,也是针对于当前线程,当前线程,当前线程。  2.主线程main中调用启动线程(调用start),......
  • jetbrains GoLang设置编写proto文件的实时模板
    具体步骤1. 首先,先创建一个模板组,我这里创建为"proto"。2.下面这张图是我的模板组中的内容3.具体实时模板缩写:enum描述:enumname{}模板文字:enum$name${$END$}适用于:协议缓存区中的Other缩写:import描述:import"";模板文字:import"$file$";$END$适用......
  • 第一次接触golang的体验
    ay01今天是第一次接触golang,之前学java用了不少精力,借着这次的青训营有机会学习go来开发后端,是一次难得的经历。经过这几个小时的学习,已经了解了大部分基础语法,说实话,比起java来说,语法还是有很大不同,适应起来比较慢,网络上的教程也比较少,一个scan语法我都花了不少时间,真是惭愧。不......
  • MapReduce 中的两表 join 几种方案简介
    1.概述在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。本文首先介绍了Hadoop上通常的JOIN实现方法,然后给出了几种针对不同输入数据集的优化方法。2.常见的join方法介......
  • 无涯教程-Flutter - Dart简介
    Dart是一种开源通用编程语言,它最初是由Google开发的,Dart是一种具有C样式语法的面向对象的语言,它支持诸如接口,类之类的编程概念,与其他编程语言不同,Dart不支持数组,Dart集合可用于复制数据结构,例如数组,泛型和可选类型。以下代码显示了一个简单的Dart程序-voidmain(){print......
  • 每日一库:pprof简介
    pprof简介pprof是Go语言的一个性能分析库,它可以帮助开发者找出程序中的性能瓶颈。pprof提供了CPU分析、内存分析、阻塞分析等多种性能分析功能。以下是pprof的主要特性:CPU分析:pprof可以记录程序在CPU上的运行时间,并将这些数据以火焰图的形式展示出来。这可以帮助开发者找出程......
  • 【Python进阶-PyQt5】00PyQt5简介
    0.图形用户界面-开发选择在Python基础的教程中,我们程序的用户交互界面都是运行窗口。这个运行窗口对于我们编程者来说直观明了,但是对于一些相对复杂的程序,用户使用上就会变得十分麻烦。所以,我们要通过设计用户交互界面来解决这种问题。程序的图形用户交互界面,英文称之为GUI(Grap......
  • 字符集编码简介
    Unicode:unicode.org制定的编码机制,要将全世界常用文字都函括进去.在1.0中是16位编码,由U+0000到U+FFFF.每个2byte码对应一个字符;在2.0开始抛弃了16位限制,原来的16位作为基本位平面,另外增加了16个位平面,相当于20位编码,编码范围0到0x10FFFF.UCS:ISO制定的ISO10646标准......
  • ThinkPHP框架简介
    ThinkPHP是单一入口框架。即:在一个网站中,所有的请求都指向同一个脚本文件。使用PHP创建项目:新建一个项目,在index.php文件中:<?phpdefine('APP_NAME','app');define('APP_PATH','./APP/');require('./ThinkPHP/ThinkPHP.php'); 配置文件:config.php若自定义一个配置文件,需要在co......