首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

慢的不是 Ruby,而是你的数据库

将业务逻辑、约束、验证和计算推入数据库,等于放弃了最简单、通常也最经济的性能提升手段:“增加更多服务器”。 Rails 正如多次提到的,Rails 的复杂性导致了真正难以解决的性能问题。...我曾在一个拥有百万级用户的应用程序中,导致数据库服务器集群崩溃:原因在于一个无关控制器的简单更改,使 Rails 切换到一个外部连接,该连接具有巨大物化视图,本不应以这种方式连接(用于报告)。...将逻辑与数据库分离,因为数据库是最慢且最难扩展的地方。 谨慎处理 sort()、where()、join() 等调用。如果添加(或删除)了索引,它们必须伴随着至少调优索引的迁移。...保持所有数据库调用简单。尽可能少的连接,尽可能少的过滤器和排序。一般来说,数据库可以更容易地为此进行优化。这也使应用程序与实际的数据库细节分离。 N+1 个查询并不总是坏事。有时甚至是首选。...因为它们使业务逻辑保留在代码中。并将获取内容的逻辑保存在一个地方,从而允许在那里进行性能优化。 保持对实际性能问题的了解。根据性能是 I/O 密集型的还是计算性的,主动扩大规模。并祈祷它是计算性的。

15130

利用DuckDB集成释放Postgres的分析能力

通过将 Postgres 与嵌入式快速查询引擎集成,为您的数据工作负载注入活力。...在与这些客户讨论他们的需求时,他们对将数据移出 Postgres 不满意,但没有更好的选择。我们能构建一个吗?...当然,将查询引擎(计算)与存储(数据)分离的前景催生了许多数据库项目。这使得能够将数据以低成本存储在一个地方,同时高效地查询数据,而无需将其移动到查询引擎。...使用 Postgres 的“钩子”,我们可以透明地将查询计划分解成可以“下推”到这个外部独立查询引擎的部分,使我们能够利用专门引擎在这些特定工作负载方面的优势。...作为用户,您在 S3 中的数据将显示为表格,您可以与所有标准 PostgreSQL 表格一起查询它们,并与其他 PostgreSQL 功能和扩展的通用简单性结合使用,包括: 访问控制 视图 物化视图 使用

49810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    激荡二十年:HTTP API 的变迁

    2005-2010:从混沌到有序 — Ruby on Rails 横空出世 然而,成也萧何败也萧何,脱胎于 Web 开发的 PHP,与 Web 的亲和性是其优势,也是其后续没落的原因 —— 毕竟,当 Web...这和 ORM 所倡导的「一套代码处理多种数据库」有莫大的联系。事实上,ORM 带给大家切换数据库的好处,可能仅限于开发环境用 sqlite,生产环境用 postgres 这样的便利。...在这个目标的驱动下,goldrin 实现了从一个类似 ansible 的,用来描述数据类型以及在数据类型上允许进行的操作的 schema,构建出相应的数据库表的定义,GraphQL server 端实现...在 DBA 几乎绝迹于江湖后,有哪个初创企业会把自己的后端围绕着一个特定的数据库(postgres)构建,并且几乎用尽这个数据库每一个非标准的功能,完全不考虑可迁移性呢?...使用 postgREST,开发者只需正常定义数据库中的表,视图,函数,触发器等,并为它们的使用权限赋予相应的角色即可。

    1.8K30

    【PostgreSQL技巧】PostgreSQL中的物化视图与汇总表比较

    多年来,物化视图一直是Postgres期待已久的功能。他们最终到达了Postgres 9.3,尽管当时很有限。在Postgres 9.3中,当刷新实例化视图时,它将在刷新时在表上保持锁定。...什么是视图view? 对于那些不是数据库专家的人,我们将做一点备份。要了解什么是实体化视图,我们首先来看一个标准视图。视图是已定义的查询,您可以像表一样对其进行查询。...当您具有通常用于某些标准报表/构建块的复杂数据模型时,视图特别有用。稍后我们将介绍一个实例化视图。 视图非常适合简化复杂SQL的复制/粘贴。缺点是每次执行视图时都会重新计算结果。...使用适当的函数和表格来跟踪我们上次中断的位置,现在我们将查询更新为仅汇总自上次处理后的数据。然后,我们将其与upsert结合在一起。...物化视图是一种非常简单直接的方法。它们的易用性使它们成为快速简便的事情的理想选择。但是,对于具有较大活动负载的较大数据集和数据库,仅处理上一次汇总的净新数据可以更有效地利用资源。

    2.4K30

    使用 YAML 文件配置 Jenkins 流水线

    几年前,我们的 CTO 写了一篇关于使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续集成服务的文章。...我们的项目依赖的一个或多个 Docker 镜像的执行(应用,数据库,Redis 等) * 如有必要,易于配置和复制 * 易于增加新项目 * 易于修改构建步骤。...### Jenkinsfile的成与败 使用当前的 Jenkins 版本,我们可以利用Jenkins pipeline对我们的构建流进行建模,并保存到一个文件中。 该文件会被签入代码库。...Docker 使我们轻松更换编程语言,而不用对 Jenkins 安装做任何的更改。...同样的,我们可以将构建逻辑移动 JSON 文件中,或者任何格式的文件中,只你的共享库能解析它,并将它转换成 Jenkins 能理解的格式。

    4.8K40

    原创 | 手把手带你玩转Apache MADlib

    MADlib架构的主要理念: 在本地数据库中操作数据。无需在多个运行时环境之间进行不必要的数据移动。...利用最好的breed数据库引擎,将机器学习逻辑与数据库特定的实现细节相剥离 利用MPP共享技术,如Greenplum数据库,提供并行性和可伸缩性。...在这个模块中,实现了一个名为 avg_var的用户自定义的SQL聚合(UDA),它计算表的给定数值列的平均值和方差。...与PostgreSQL中的普通UDA不同, avg_ar也可以在分布式数据库上运作,并利用底层分布式网络进行并行计算。...在本例中,利用一个全零双数组,分别对应于平均值、方差和行数。 最终函数的遍历和合并,在与avg_var.sql_in同一个文件中作为聚合函数定义。

    1.3K10

    如何在Ubuntu 14.04上使用PostgreSQL和Ruby on Rails应用程序

    本教程将向您展示如何设置开发Ruby on Rails环境,该环境允许您的应用程序在Ubuntu 14.04服务器上使用PostgreSQL数据库。首先,我们将介绍如何安装和配置PostgreSQL。...然后我们将向您展示如何创建使用PostgreSQL作为其数据库服务器的rails应用程序。 准备 本教程要求具有可用的Ruby on Rails开发环境。...,请使用以下命令进入PostgreSQL控制台: sudo -u postgres psql PostgreSQL控制台由postgres=#提示符表示。...使用-d postgresql选项将PostgreSQL设置为数据库,并确保将突出显示的单词替换为您的应用程序名称: cd ~ rails new appname -d postgresql 然后进入应用程序的目录...首先,查找服务器的公共IP地址,然后将其与rails server命令一起使用(将其替换为突出显示的部分): rails server --binding=server_public_IP 现在,您应该能够通过端口

    3.4K00

    Salesforce的PaaS平台Heroku简介

    2011/11/23:Heroku推出DBaaS数据库即服务 Heroku Postgres供使用 SQL 数据库的开发人员使用....PostgreSQL 是一种开源数据库软件,不过 Postgres 是 Heroku 对其进行的客户化版本,客户化后可以提供数据库给客户但又不会将客户锁定。...该平台采用了Ruby on Rails 的网络开发框架,客户只需在本地计算机设置一个Ruby Gem(Ruby语言的程序包管理器)就可在Heroku云中部署和运行应用程序。...客户可以直接从浏览器中访问和编辑自己的代码,也可以添加相关语言的插件。Heroku平台在程序开发上可让你得到与本地计算机相同,甚至更好的体验。 Heroku是Rails应用最简单的部署平台。...我们提供一整套工具来开发和管理应用,不管是通过Web接口还是新的扩展API。 HeroKu的架构大部分是采用开源的架构来实现的,其实构建云计算平台,开源的世界已经解决一切了,不是吗?

    7.3K20

    自建 Gitlab (邮箱配置、拆分 PostgreSQL、Redis) + 随想

    整个构建过程基于 Docker Swarm(近期有计划将微服务移植到 Kubernetes,但还没倒腾顺手,暂时先沿用旧的方案),主题配图与主题无关,请忽略...... ? 1....分离缓存与数据库 我不知道 gitlab 为什么不进一步提供纯净版的镜像,而且官方推荐 omnibus 的安装方式,反正我至少不喜欢把数据库和缓存都集成到一个镜像里面,预期是构建一个子镜像并移除 nginx...postgreSQL 默认的用户名、密码、初始数据库都是 postgres,可以通过设置环境变量更改默认配置: environment: - POSTGRES_PASSWORD=mysecretpassword...' gitlab_rails['db_port'] = 5432 gitlab_rails['db_username'] = 'postgres' gitlab_rails['db_password']...不知道有多少人会像我一样常常被 “自己” 掣肘,在内心层面我不算是一个很宅的人,我不喜欢呆在家里,我总是和很多人谈诗和远方,但,只局限于谈。

    2.3K60

    如何在Ubuntu 14.04上使用Git Hooks部署Rails应用程序

    创建生产数据库用户 为了简单起见,我们将生产数据库用户命名设为与您的应用程序名称相同。...例如,如果您的应用程序名为“appname”,则应创建一个PostgreSQL用户,如下所示: sudo -u postgres createuser -s appname 我们想设置数据库用户的密码,...准备你的Rails应用程序 在您的开发机器上,很可能是您的本地计算机,我们将准备您要部署的应用程序。 可选:创建Rails应用程序 理想情况下,您已经拥有了要部署的Rails应用程序。...更新数据库配置 在您的开发计算机上,如果您还没有,请更改到您的应用程序目录。...安装和配置Nginx 为了使应用程序可以访问Internet,我们应该使用Nginx作为Web服务器。

    2.5K60

    框架分析(6)-Ruby on Rails

    核心概念以及组件讲解 MVC架构模式 Rails框架采用了MVC架构模式,将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。...模型负责处理数据逻辑和数据库操作,视图负责呈现用户界面,控制器负责处理用户请求和协调模型和视图之间的交互。...RESTful路由 Rails框架支持RESTful风格的路由,通过简单的配置,可以将URL路径与控制器和动作进行映射。这使得开发人员可以更容易地创建符合RESTful设计原则的API接口。...它提供了一套清晰的开发模式和规范,使得开发人员可以更容易地编写可维护和可扩展的代码。 MVC架构 Rails框架采用了MVC架构模式,将应用程序分为模型、视图和控制器三个部分,使代码分离更清晰。...通过Active Record,开发人员可以使用Ruby代码来表示数据库表和记录,而无需直接编写SQL语句。它还提供了丰富的查询接口和数据验证功能,使数据库操作更加简单和安全。

    39020

    最受推荐的 9本全栈开发书籍,助web前端开发学习

    移动开发的最佳实践、安全性和陷阱 这本书需要Java的基本知识,但不要求具备Spring Boot或MySQL的基础。...这本书结合实际示例,使用Vue与Laravel,帮助你建立现代全栈的web应用程序,在本书中,你将搭建一个名为Vuebnb的订房网站。...3、《Rails, Angular, Postgres, and Bootstrap》 Rails是构建web应用程序的一个很好的工具,但不是最好的,通过Angular 4、Bootstrap和PostgreSQL...结合可以构建一个功能更加强大的应用,本书涵盖了Postgres 9.5、Rails 5和Ruby 2.3。...Angular 5和ASP.NET Core 2的功能和特性结合在一起,实现全栈开发 通过本书,你将学习如何使用Angular 5的功能,使用Entity Framework Core构建数据模型,使用

    4K10

    2019年你应该知道的编程语言、框架和工具

    它意味着 Web 应用程序可以离线工作,并能提供原生移动应用的体验。它们可以添加到你的智能设备的主屏幕上,甚至可以给你发送推送通知,从而弥补与原生移动应用程序的差距。...云端 就目前的形势看,众多的公司与开发者们都在积极地拥抱“云”。云是可根据不同的需求,并通过控制面板来完全配置的虚拟化计算机基础设施。...三月份 AlphaGo 与李世石的精彩对决,也让它成为了焦点。从原始数据中学习的智能计算机系统,正在改变我们与移动设备的交互方式。看样子,机器学习将在 2017 年成为更大的影响因素。...在今年,我们也看到了 Symfony 发行了很多新的版本,使它成为了全栈解决方案中更好的选择。 对于 Ruby 来说,Rails 框架是首选的。...Postgres 适用于大规模、TB 级规模的数据集以及繁忙的 Web Apps,这些优化都是很受欢迎的。 MySQL 8.0 将是数据库的下一个主要版本。

    93730

    Citus 11 官方手册脑图 - PostgreSQL 超大规模分布式数据库解决方案上手指南

    的非结构化数据 时间序列数据 扩展 Citus 上的时间序列数据 自动创建分区 使用列式存储归档 将行分区归档到列式存储 架构 概念 节点 协调器与工作器 分布式数据 表类型 类型 1:分布式表 类型...) 使用汇总缓存聚合 更新和删除 最大化写入性能 查询分布式表 (SQL) 聚合函数 Count (Distinct) 聚合 估计 Top N 项 百分位数计算 限制下推 分布式表的视图 连接 共置连接...在数据库中应用更新 将 PostgreSQL 版本从 13 升级到 14 对于每个节点 故障排除 查询性能调优 表分布和分片 PostgreSQL 调优 横向扩展性能 分布式查询性能调优 通用 子查询/...分布式系统中的HLL 亲身体验 HLL 设置 例子 结论 Citus 中的 Postgres 并行索引 使用 Postgres 和 Citus 进行大规模实时事件聚合 PostgreSQL 和 Citus...上的分布式外连接如何工作 Citus 的分布式外连接 使用 Postgres 设计 SaaS 数据库以实现扩展 使用 Citus 扩展构建可扩展的 Postgres 指标后端 时间序列指标 事件 使用

    4.4K30

    你应该知道的编程语言,代码学习从关注我开始

    它意味着 Web 应用程序可以离线工作,并能提供原生移动应用的体验。它们可以添加到你的智能设备的主屏幕上,甚至可以给你发送推送通知,从而弥补与原生移动应用程序的差距。...云端 就目前的形势看,众多的公司与开发者们都在积极地拥抱“云”。云是可根据不同的需求,并通过控制面板来完全配置的虚拟化计算机基础设施。...三月份 AlphaGo 与李世石的精彩对决,也让它成为了焦点。从原始数据中学习的智能计算机系统,正在改变我们与移动设备的交互方式。看样子,机器学习将在 2017 年成为更大的影响因素。...在今年,我们也看到了 Symfony 发行了很多新的版本,使它成为了全栈解决方案中更好的选择。 对于 Ruby 来说,Rails 框架是首选的。...Postgres 适用于大规模、TB 级规模的数据集以及繁忙的 Web Apps,这些优化都是很受欢迎的。 MySQL 8.0 将是数据库的下一个主要版本。

    1K00

    如何在Ubuntu 14.04上使用Unicorn和Nginx部署Rails应用程序

    本教程将帮助您部署Ruby 在 Rails应用程序中的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Unicorn和Nginx。...Unicorn是一个应用服务器,就像Passenger或者Puma一样,它使您的Rails应用程序能够同时处理请求。...创建生产数据库用户 为了简单起见,我们将生产数据库用户的名字改为与您的应用程序相同的名称。...将生产密码和机密保存在应用程序代码库之外被认为是最佳实践,因为如果您使用的是分布式版本控制系统(如Git)时,它们会很容易被暴露出来。接下来我们将讨论如何使用环境变量设置数据库身份验证。...创建生产数据库 既然您的应用程序已配置为可以与PostgreSQL数据库通信,那么让我们创建生产数据库: RAILS_ENV=production rake db:create 生成控制器 如果您跟随示例

    4.3K00

    如何在Ubuntu 14.04上使用Puma和Nginx部署Rails应用程序

    本教程将帮助您部署Ruby on Rails应用程序的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Puma和Nginx。...Puma是一个应用服务器,如Passenger或Unicorn,它使您的Rails应用程序能够同时处理请求。...创建生产数据库用户 为了简单起见,我们将生产数据库用户命名为与您的应用程序名称相同。...将生产密码和机密保存在应用程序代码库之外被认为是最佳实践,因为如果您使用的是分布式版本控制系统(如Git),它们很容易暴露出来。接下来我们将讨论如何使用环境变量设置数据库身份验证。 保存并退出。...创建生产数据库 既然您的应用程序已配置为与PostgreSQL数据库通信,那么让我们创建生产数据库: RAILS_ENV=production rake db:create 生成控制器 如果您跟随示例,

    5.4K10

    使用数据库编程在PostgreSQL上构建石头剪刀布游戏

    现代数据库 是持久、高效且可编程的数据存储库,使它们成为构建应用程序的超级强大环境。然而,近年来,许多数据库功能,如函数、触发器和物化视图,已经过时。...为什么函数、触发器和视图很少使用? 现代数据库不仅仅是一个带有附加查询引擎的存储层。使用触发器、函数、存储过程、约束 和视图,可以构建整个应用程序,而无需离开数据库。...通过将逻辑推送到数据库,Supabase 使开发人员能够轻松地创建功能强大的应用程序,而无需付出太多努力。PostgreSQL 的复杂查询、数据转换和访问控制功能确保了性能和安全性。...数据库模式即代码:数据库代码需要合适的工具 回顾一下反对将业务逻辑推送到数据库的论点,其中许多论点归结为缺乏足够的工具和既定策略,将它们与现代软件工程实践(如自动化测试、CI/CD 等)集成。...、计算机的移动和结果的反馈。

    13610

    「首席架构师推荐」React生态系统大集合

    Semiotic - 结合了React和D3的数据可视化框架。...构建应用程序 Flux:构建客户端应用程序的简单架构模型 使用来自Yahoo的Dispatchr和Fetchr的Isomorphic Flux示例 使用React.js和Flux进行异步请求 在CoffeeScript...React + Flux由Rails API支持:第1部分 Reails + Flux由Rails API支持:第2部分 Reails + Flux由Rails API支持:第3部分 Flux解决方案通过实例比较...与MobX结合使用 MobX教程 10分钟介绍MobX和React 使用MobX管理React应用程序中的复杂状态 将您的应用程序从Redux重构为MobX Redux或MobX:尝试解散混乱 GraphQL...:规模的JavaScript测试和静态类型系统 - 规模2014 React Native&Relay:为移动设备带来现代网络技术 - f8 2015) Citrusbyte推出GraphQL:与Nick

    12.4K30
    领券