데이터 베이스 MySQL 튜토리얼 从APM角度上看:NoSQL和关系数据库并无不同

从APM角度上看:NoSQL和关系数据库并无不同

Jun 07, 2016 pm 03:35 PM
apm m nosql 다른 관계 데이터 베이스 각도

Michael Kopp拥有十年以上C++、Java/JEE的架构及开发经验,现Compuware技术策略师,专攻大规模产品部署的架构和性能。 以下为译文: 传统企业数据库供应商经常提出NoSQL缺乏专业的监视和管理工具。它们的论点是:企业应用程序需要对数据库进行精细的调优和监

Michael Kopp拥有十年以上C++、Java/JEE的架构及开发经验,现Compuware技术策略师,专攻大规模产品部署的架构和性能。

以下为译文:

传统企业数据库供应商经常提出NoSQL缺乏专业的监视和管理工具。它们的论点是:企业应用程序需要对数据库进行精细的调优和监视以保证性能和运转的稳定。NoSQL供应商的观点则是:这种程度的缺乏还并不能在解决方案上帮助到RDBMS。许多NoSQL供应商也尝试从它们提供的监视和管理软件等级上进行区分,比如:Cassandra、MongoDB、Hbase等等。当然两者都是正确的 —— 特别是性能方面的管理和监视是非常重要的,但是NoSQL供应商同样犯了RDBMS已经犯了10多年的错误:忽略了应用程序的本身。

针对数据库的应用性能管理

最重要的不是数据库本身的性能,而是使用数据库的应用程序。应用程序的逻辑决定了使用数据库的方式,当然也有很多途径来调优数据库用以掩饰应用程序本身的问题。所以我们需要监视和优化应用程序的使用模式,同时应用程序逻辑又由输入数据或者是大多数情况下与用户交互的方式决定;所以我们必须分析用户的行为,而用户的操作决定了数据库的使用方式。另一方面,我们需要明白这些行为对数据库的影响。这里的重点在于获悉当数据的性能达到最高标准,却仍然成为应用程序的主要瓶颈 —— 它们是否被错误的使用或者是使用了一个错误的访问模式。在这上面不管是RDBMS还是NoSQL数据库都有着相同的遭遇。因此作为工程师,你需要做应用程序的性能分析和管理:

首先我们需要知道这个慢下来的事务是不是有一个普遍的性能问题,并且受到终端用户的影响:

从APM角度上看:NoSQL和关系数据库并无不同

第二步对变慢或者性能问题进行高等级的抽离。当然有很多方法可以实现这个目的,但是基本都是故障域隔离(fault domain isolation)的一种。

从APM角度上看:NoSQL和关系数据库并无不同

事务流显示我们有15%被用在了数据库等待上(点击查看大图,以下同)

 

从APM角度上看:NoSQL和关系数据库并无不同

这个事务流显示Business Backend正在调用一个Cassandra数据库集群

这就可以让我们知道是否我们为等待数据库而花费时间。而这里我们看到了这个现象并没有因为传统数据库或者是类Apache Cassandra的NoSQL数据库而变得不同。

这里的重点在于数据库是否是主要原因,这并一定是数据库本身的问题,也能是应用程序的使用问题。下面就必须检查用法和访问模式:

从APM角度上看:NoSQL和关系数据库并无不同

这里显示了在一个特殊事务类型中执行的选择语句

从APM角度上看:NoSQL和关系数据库并无不同

上图显示了在一个特殊事务中Cassandra数据库语句在所有参与服务器中的执行情况

这里我们就会发现性能低下的原因是因为我们在单个事务中执行了太多的语句,或者是读取了太多的数据。如果真是这个情况的话我们需要检查应用程序的逻辑,并需要开发者对其进行弥补。而这个开发者肯定想知道哪条语句是在什么地方执行哪种特殊的任务,以及为什么会发生这个情况。

从APM角度上看:NoSQL和关系数据库并无不同

上图显示了单事务(PurePath)以及里面的Cassandra执行语句

如果一个特殊的语句导致性能下降,那么很可能是数据库问题,我们可以寻找DBA解决。而这种情况下NoSQL方案的不同之处是你通常可以拥有一个数据库集群,所以需要知道的是问题是否是因为单个节点产生的。DBA将去了解访问模式是否被良好的分配到集群中,或者只是分配到集群中的一个点。

从APM角度上看:NoSQL和关系数据库并无不同

上图显示了Cassandra服务器Node3比其它节点消耗了更多的等待和I/O时间

而事实上这个分析在JDBC、ADO、Cassandra(或者其它的NoSQL解决方案)之间并没有什么不同。

总结

经过大量在SQL语句和索引上的研究后发现:最需要优化的地方总是在应用程序以及应用程序使用数据库的方法上。而SQL Tuning总会添加复杂性,一般只作为差用程序或者数据结构设计的调剂。而在NoSQL领域数据库语句的调优已成为过去,但数据结构设计却保留着它的重要性。同时传统上应该在数据库实现的逻辑现已转移至应用层,这使得应用程序的设计较之前更为重要。

NoSQL or Traditional Database: From an APM Perspective There Isn’t Really Much Difference (编译/仲浩 审校/王旭东)

欢迎关注@CSDN云计算微博,了解更多云信息。

market@csdn.net

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Go 언어는 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 어떻게 구현합니까? Go 언어는 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 어떻게 구현합니까? Mar 27, 2024 pm 09:39 PM

Go 언어는 효율적이고 간결하며 배우기 쉬운 프로그래밍 언어입니다. 동시 프로그래밍과 네트워크 프로그래밍의 장점 때문에 개발자들이 선호합니다. 실제 개발에서 데이터베이스 작업은 필수적인 부분입니다. 이 기사에서는 Go 언어를 사용하여 데이터베이스 추가, 삭제, 수정 및 쿼리 작업을 구현하는 방법을 소개합니다. Go 언어에서는 일반적으로 사용되는 SQL 패키지, Gorm 등과 같은 타사 라이브러리를 사용하여 데이터베이스를 운영합니다. 여기서는 sql 패키지를 예로 들어 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업을 구현하는 방법을 소개합니다. MySQL 데이터베이스를 사용하고 있다고 가정합니다.

PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼 PHP에서 MySQLi를 사용하여 데이터베이스 연결을 설정하는 방법에 대한 자세한 튜토리얼 Jun 04, 2024 pm 01:42 PM

MySQLi를 사용하여 PHP에서 데이터베이스 연결을 설정하는 방법: MySQLi 확장 포함(require_once) 연결 함수 생성(functionconnect_to_db) 연결 함수 호출($conn=connect_to_db()) 쿼리 실행($result=$conn->query()) 닫기 연결( $conn->close())

Hibernate는 어떻게 다형성 매핑을 구현합니까? Hibernate는 어떻게 다형성 매핑을 구현합니까? Apr 17, 2024 pm 12:09 PM

Hibernate 다형성 매핑은 상속된 클래스를 데이터베이스에 매핑할 수 있으며 다음 매핑 유형을 제공합니다. Join-subclass: 상위 클래스의 모든 열을 포함하여 하위 클래스에 대한 별도의 테이블을 생성합니다. 클래스별 테이블: 하위 클래스별 열만 포함하는 하위 클래스에 대한 별도의 테이블을 만듭니다. Union-subclass: Joined-subclass와 유사하지만 상위 클래스 테이블이 모든 하위 클래스 열을 통합합니다.

iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. iOS 18에는 손실되거나 손상된 사진을 검색할 수 있는 새로운 '복구된' 앨범 기능이 추가되었습니다. Jul 18, 2024 am 05:48 AM

Apple의 최신 iOS18, iPadOS18 및 macOS Sequoia 시스템 릴리스에는 사진 애플리케이션에 중요한 기능이 추가되었습니다. 이 기능은 사용자가 다양한 이유로 손실되거나 손상된 사진과 비디오를 쉽게 복구할 수 있도록 설계되었습니다. 새로운 기능에는 사진 앱의 도구 섹션에 '복구됨'이라는 앨범이 도입되었습니다. 이 앨범은 사용자가 기기에 사진 라이브러리에 포함되지 않은 사진이나 비디오를 가지고 있을 때 자동으로 나타납니다. "복구된" 앨범의 출현은 데이터베이스 손상으로 인해 손실된 사진과 비디오, 사진 라이브러리에 올바르게 저장되지 않은 카메라 응용 프로그램 또는 사진 라이브러리를 관리하는 타사 응용 프로그램에 대한 솔루션을 제공합니다. 사용자는 몇 가지 간단한 단계만 거치면 됩니다.

HTML이 데이터베이스를 읽는 방법에 대한 심층 분석 HTML이 데이터베이스를 읽는 방법에 대한 심층 분석 Apr 09, 2024 pm 12:36 PM

HTML은 데이터베이스를 직접 읽을 수 없지만 JavaScript 및 AJAX를 통해 읽을 수 있습니다. 단계에는 데이터베이스 연결 설정, 쿼리 보내기, 응답 처리 및 페이지 업데이트가 포함됩니다. 이 기사에서는 JavaScript, AJAX 및 PHP를 사용하여 MySQL 데이터베이스에서 데이터를 읽는 실제 예제를 제공하고 쿼리 결과를 HTML 페이지에 동적으로 표시하는 방법을 보여줍니다. 이 예제에서는 XMLHttpRequest를 사용하여 데이터베이스 연결을 설정하고 쿼리를 보내고 응답을 처리함으로써 페이지 요소에 데이터를 채우고 데이터베이스를 읽는 HTML 기능을 실현합니다.

MySQL 데이터베이스 관리 시스템의 기본 원리 분석 MySQL 데이터베이스 관리 시스템의 기본 원리 분석 Mar 25, 2024 pm 12:42 PM

MySQL 데이터베이스 관리 시스템의 기본 원리 분석 MySQL은 데이터 저장 및 관리를 위해 구조화된 쿼리 언어(SQL)를 사용하는 일반적으로 사용되는 관계형 데이터베이스 관리 시스템입니다. 이 글에서는 데이터베이스 생성, 데이터 테이블 설계, 데이터 추가, 삭제, 수정 및 쿼리 등을 포함한 MySQL 데이터베이스 관리 시스템의 기본 원리를 소개하고 구체적인 코드 예제를 제공합니다. 1. 데이터베이스 생성 MySQL에서는 먼저 데이터를 저장할 데이터베이스 인스턴스를 생성해야 합니다. 다음 코드는 "my

PHP를 사용하여 데이터베이스에서 중국어 왜곡 문자를 처리하기 위한 팁과 사례 PHP를 사용하여 데이터베이스에서 중국어 왜곡 문자를 처리하기 위한 팁과 사례 Mar 27, 2024 pm 05:21 PM

PHP는 웹사이트 개발에 널리 사용되는 백엔드 프로그래밍 언어로, 강력한 데이터베이스 운영 기능을 갖추고 있으며 MySQL과 같은 데이터베이스와 상호 작용하는 데 자주 사용됩니다. 그러나 한자 인코딩의 복잡성으로 인해 데이터베이스에서 잘못된 한자를 처리할 때 문제가 자주 발생합니다. 이 기사에서는 잘못된 문자의 일반적인 원인, 솔루션 및 특정 코드 예제를 포함하여 데이터베이스에서 중국어 잘못된 문자를 처리하기 위한 PHP의 기술과 사례를 소개합니다. 문자가 왜곡되는 일반적인 이유는 잘못된 데이터베이스 문자 집합 설정 때문입니다. 데이터베이스를 생성할 때 utf8 또는 u와 같은 올바른 문자 집합을 선택해야 합니다.

PHP에서 데이터베이스 연결 오류를 처리하는 방법 PHP에서 데이터베이스 연결 오류를 처리하는 방법 Jun 05, 2024 pm 02:16 PM

PHP에서 데이터베이스 연결 오류를 처리하려면 다음 단계를 사용할 수 있습니다. mysqli_connect_errno()를 사용하여 오류 코드를 얻습니다. 오류 메시지를 얻으려면 mysqli_connect_error()를 사용하십시오. 이러한 오류 메시지를 캡처하고 기록하면 데이터베이스 연결 문제를 쉽게 식별하고 해결할 수 있어 애플리케이션이 원활하게 실행될 수 있습니다.

See all articles