데이터 베이스 MySQL 튜토리얼 为什么要从关系型数据库转向NoSQL

为什么要从关系型数据库转向NoSQL

Jun 07, 2016 pm 04:24 PM
nosql 관계형 데이터 베이스

NoSQL系统一般都会宣传一个特性,那就是性能好。为什么呢?关系型数据库发展了这么多年,各种优化工作已经做得很深了,NoSQL系统一般都是吸收关系型数据库的技术,然后,到底是什么因素束缚了关系型数据库的性能呢?我们从系统设计的角度看这个问题。 1. ?索

NoSQL系统一般都会宣传一个特性,那就是性能好。为什么呢?关系型数据库发展了这么多年,各种优化工作已经做得很深了,NoSQL系统一般都是吸收关系型数据库的技术,然后,到底是什么因素束缚了关系型数据库的性能呢?我们从系统设计的角度看这个问题。

1. ?索引支持。

关系型数据库创立之初没有想到今天的互联网应用对可扩展性提出如此高的要求。因此,设计时主要考虑的是简化用户的工作,SQL语言的产生促成数据库接口的标准化,从而形成了Oracle这样的数据库公司并带动了上下游产业链的发展。关系型数据库在单机存储引擎支持索引,比如MySQL的InnoDB存储引擎需要支持索引,而NoSQL系统的单机存储引擎是纯粹的,只需要支持基于主键的随机读取和范围查询。NoSQL系统在系统层面提供对索引的支持,比如有一个用户表,主键为user_id,每个用户有很多属性,包括用户名,照片ID(photo_id),照片URL,在NoSQL系统中如果需要对photo_id建立索引,可以维护一张分布式表,表的主键为形成的二元组。关系型数据库由于需要在单机存储引擎层面支持索引,大大降低了系统的可扩展性,使得单机存储引擎的设计变得很复杂。

2. 事务并发处理。

关系型数据库有一整套的关于事务并发处理的理论,比如锁的粒度是表级,页级还是行级,多版本并发控制机制MVCC,事务的隔离级别,死锁检测,回滚,等等。然而,互联网应用大多数的特点都是多读少写,比如读和写的比例是10 : 1,并且很少有复杂事务需求,因此,一般可以采用更为简单的copy-on-write技术:单线程写,多线程读,写的时候执行copy-on-write,写不影响读服务。NoSQL系统这样的假设简化了系统的设计,减少了很多操作的overhead,提高了性能。

3. 动态还是静态的数据结构。

关系型数据库的存储引擎总是一颗磁盘B+树,为了提高性能,可能需要有insert buffer聚合写,query cache缓存读,经常需要实现类似Linux page cache的缓存管理机制。数据库中的读和写是互相影响的,写操作也因为时不时需要将数据flush到磁盘而性能不高。简而言之,关系型数据库存储引擎的数据结构是通用的动态更新的B+树,然而,在NOSQL系统中,比如Bigtable中采用SSTable + MemTable的数据结构,数据先写入到内存的MemTable,达到一定大小或者超过一定时间才会dump到磁盘生成SSTable文件,SSTable是只读的。如果说关系型数据库存储引擎的数据结构是一颗动态的B+树,那么SSTable就是一个排好序的有序数组。很明显,实现一个有序数据比实现一个动态B+树且包含复杂的并发控制机制要简单高效地多。

4 . Join操作。

关系型数据库需要在存储引擎层面支持Join,而NoSQL系统一般根据应用来决定Join实现的方式。举个例子,有两张表:用户表和商品表,每个用户下可能有若干个商品,用户表的主键为,用户和商品的关联属性存放在用户表中,商品表的主键为item_id,商品属性包括商品名,商品URL,等等。假设应用需要查询一个用户的所有商品并显示商品的详细信息,普通的做法是先从用户表查找指定用户的所有item_id,然后对每个item_id去商品表查询详细信息,即执行一次数据库Join操作,这必然带来了很多的磁盘随机读,并且由于Join带来的随机读的局部性不好,缓存的效果往往也是有限的。在NoSQL系统中,我们往往可以将用户表和商品表集成到一张宽表中,这样虽然冗余存储了商品的详细信息,却换来了查询的高效。

关系型数据库的性能瓶颈往往不在SQL语句解析上,而是在于需要支持完备的SQL特性。互联网公司面临的问题是应用对性能和可扩展性要求很高,并且DBA和开发工程师水平比较高,可以通过牺牲一些接口友好性来换取更好的性能。NoSQL系统的一些设计,比如通过宽表实现Join操作,互联网公司的DBA和开发工程师也做过,NOSQL系统只是加强了这种约束。从长远来看,可以总结一套约束集合,并且定义一个SQL子集,只需要支持这个SQL子集就可以在不牺牲可扩展性的前提下支持比如90%以上的互联网应用。我想,NoSQL技术发展到这一步的时候就算是比较成熟了,这也是我们最终想做的事情。我们在设计和使用NoSQL系统的时候也可以适当转化一下思维,如下:

1. 更大的数据量。很多人在使用MySQL的过程遇到记录条数超过一定值,比如2000W的时候,数据库性能开始下降,这个值的得出往往需要经过大量的测试。然而,大多数的NoSQL系统可扩展性都比较好,能够支持更大的数据量,因此也可以采用一些空间换时间的做法,比如通过宽表的方式实现Join。

2. 性能预估更加容易。关系型数据库由于复杂的并发控制,insert buffer及类似page cache的读写优化机制,性能估算相对较难,很多时候需要凭借经验或者经过测试才能得出系统的性能。然后,NOSQL系统由于存储引擎实现,并发控制机制等相对简单,可以通过硬件的性能指标在系统设计之处大致预估系统的性能,性能预估可操作性相对更强。

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

현지에서 Deepseek을 미세 조정하는 방법 현지에서 Deepseek을 미세 조정하는 방법 Feb 19, 2025 pm 05:21 PM

Deepseek 클래스 모델의 로컬 미세 조정은 컴퓨팅 리소스와 전문 지식이 충분하지 않아야합니다. 이러한 과제를 해결하기 위해 다음과 같은 전략을 채택 할 수 있습니다. 모델 양자화 : 모델 매개 변수를 저 반영 정수로 변환하여 메모리 발자국을 줄입니다. 더 작은 모델 사용 : 더 쉬운 로컬 미세 조정을 위해 작은 매개 변수가있는 사전 취사 모델을 선택하십시오. 데이터 선택 및 전처리 : 고품질 데이터를 선택하고 모델 효과에 영향을 미치는 데이터 품질이 좋지 않도록 적절한 전처리를 수행하십시오. 배치 교육 : 대규모 데이터 세트의 경우 메모리 오버플로를 피하기 위해 훈련을 위해 배치로 데이터를로드하십시오. GPU 로의 가속도 : 독립 그래픽 카드를 사용하여 교육 프로세스를 가속화하고 교육 시간을 단축하십시오.

DeepSeek 왜 DeepSeek 로그인 포털에 로그인 할 수 없습니다 DeepSeek 왜 DeepSeek 로그인 포털에 로그인 할 수 없습니다 Feb 19, 2025 pm 05:00 PM

서버 실패, 네트워크 연결 문제, 계정 비활성화, 로그인 자격 증명 오류 또는 시스템 업데이트를 포함하여 DeepSeek이 로그인 할 수없는 다양한 이유가 있습니다. DeepSeek 로그인 포털을 입력 할 수없는 경우 사용자는 https://www.deepseek.com/을 통해 공식 웹 사이트에 액세스 할 수 있습니다. 로그인 문제가 발생하면 사용자는 서버 상태를 확인하고 네트워크 연결 문제를 해결하거나 로그인 자격 증명 오류를해야합니다. 문제가 지속되면 사용자는 DeepSeek 지원 팀에 문의하여 추가 지원을해야합니다.

Bybit Exchange 링크를 직접 다운로드하고 설치할 수없는 이유는 무엇입니까? Bybit Exchange 링크를 직접 다운로드하고 설치할 수없는 이유는 무엇입니까? Feb 21, 2025 pm 10:57 PM

Bybit Exchange 링크를 직접 다운로드하고 설치할 수없는 이유는 무엇입니까? Bybit은 사용자에게 거래 서비스를 제공하는 암호 화폐 거래소입니다. Exchange의 모바일 앱은 다음과 같은 이유로 AppStore 또는 GooglePlay를 통해 직접 다운로드 할 수 없습니다. 1. App Store Policy는 Apple과 Google이 App Store에서 허용되는 응용 프로그램 유형에 대한 엄격한 요구 사항을 갖지 않도록 제한합니다. Cryptocurrency Exchange 응용 프로그램은 금융 서비스가 포함되며 특정 규정 및 보안 표준이 필요하기 때문에 이러한 요구 사항을 충족하지 않습니다. 2. 법률 및 규정 준수 준수 많은 국가에서 암호 화폐 거래와 관련된 활동이 규제되거나 제한됩니다. 이러한 규정을 준수하기 위해 BYBIT 응용 프로그램은 공식 웹 사이트 또는 기타 공인 채널을 통해서만 사용할 수 있습니다.

무료 시장 소프트웨어 앱 웹 사이트 무료 시장 소프트웨어 앱 웹 사이트 Mar 05, 2025 pm 09:03 PM

이 기사는 투자자가 실시간 가격, 가격 차트, 거래량, 변동, 시장 깊이 및 뉴스 정보와 같은 주요 정보를 투자자에게 제공하여 투자자가 정보에 근거한 결정을 내릴 수있는 무료 디지털 자산 견적 소프트웨어 앱 및 웹 사이트를 소개합니다. 유료 소프트웨어와 비교할 때 Free Software는 무료 비용, 풍부한 기능 및 쉽게 작동하는 이점이 있습니다. 이 기사는 또한 사용자에게 올바른 시장 소프트웨어를 선택하는 방법을 안내하며, 사용자에게 데이터 소스, 정보 정확도에주의를 기울이고 과도한 의존성을 피하기 때문에 궁극적으로 투자자가 디지털 자산 시장의 트렌드를 더 잘 파악할 수 있도록 도와줍니다. 무료 시장 소프트웨어를 효율적으로 사용하는 방법을 알고 싶으십니까? 신속하게 전체 텍스트를 읽으십시오!

Bittensor가 AI 트랙에서 'Bitcoin'이라고 말하는 이유는 무엇입니까? Bittensor가 AI 트랙에서 'Bitcoin'이라고 말하는 이유는 무엇입니까? Mar 04, 2025 pm 04:06 PM

원본 : Bittensor = Aibitcoin : S4mmyeth, 분산 AI 연구 원본 번역 :이 기사에서는 Bittensor, 분산 된 AI 플랫폼에 대해 논의하고, 중앙 집중식 AI 회사의 독점을 홍보하고 개방형 및 사형에 Ecosystem을 홍보하기를 희망합니다. Bittensor는 다양한 AI 솔루션의 출현을 허용하는 서브넷 모델을 채택하고 TAO 토큰을 통해 혁신을 고무시킵니다. AI 시장은 성숙하지만 Bittensor는 경쟁 위험에 직면하며 다른 오픈 소스의 적용을받을 수 있습니다.

Gateio Exchange App Old 버전 Gateio Exchange App Old 버전 다운로드 채널 Gateio Exchange App Old 버전 Gateio Exchange App Old 버전 다운로드 채널 Mar 04, 2025 pm 11:36 PM

Gateio Exchange 앱은 공식, 제 3 자 애플리케이션 시장, 포럼 커뮤니티 및 기타 채널을 다루는 기존 버전의 채널을 다운로드합니다. 또한 기존 버전을 쉽게 얻고 새로운 버전 또는 장치 호환성을 사용하여 불편 함 문제를 해결하는 데 도움이됩니다.

비트 코인 : 글로벌 유동성의 '기압계'? 비트 코인 : 글로벌 유동성의 '기압계'? Mar 04, 2025 pm 06:39 PM

암호화 시장의 유동성은 빡빡했고 비트 코인은 계속 변동하여 다시 하락하여 86,000 달러의 최저치로 최고 20% 감소했습니다. Cryptocurrency의 리더 인 Bitcoin은 Altcoins가 무너졌으며 시장 감정은 광신주의에서 공황 상태로 바뀌 었습니다. 비트 코인 황소 시장이 끝났습니까? 미래의 트렌드는 무엇입니까? 이러한 문제는 많은 관심을 끌었습니다. 그러나 비트 코인 트렌드는 글로벌 금융 시장과 밀접한 관련이 있으며 Swanbitcoin Research 분석가 Sam Callahan의 Bitcoin Price와 글로벌 유동성의 관계에 관한 기사는 읽을 가치가 있습니다. 이 기사의 핵심 요점 : Bitcoin Price는 전 세계 유동성 추세와 일치하며 시간의 83%와 일치하여 다른 주요 자산보다 높아 유동성 조건을 측정하는 데 효과적인 지표가됩니다. 비트 코인은 세계에서 매우 액체입니다

Bitmex : 큰 매도 후 최상의 옵션 전략 Bitmex : 큰 매도 후 최상의 옵션 전략 Mar 04, 2025 pm 06:27 PM

출처 : Bitmex 주간 옵션에 오신 것을 환영합니다. Alpha Series : Bitcoin은 10%의 하락으로 급격히 떨어졌습니다. 포트폴리오는 돈을 잃고 있으며 "다음에 무엇을해야합니까? 당황하거나 직책을 늘리거나 현명하게 수행해야합니까?" 다음은 사례, 이익 및 손실 분석 및 상황 지침과 함께 판매 후 시나리오를위한 5 가지 효과적인 전략입니다. (이 기사에서 2025 년 2 월 26 일, 13:06 홍콩 시간, BTC의 가격은 $ 88,584였습니다.) 1. 3 월에 비트 코인이 계속 감소 할까 걱정된다면 ... 실습 : 보호 풋 옵션 구매 (보험 전략)

See all articles