SSD가 데이터베이스의 유용성을 줄입니까


28

나는 오늘 Robert Martin에 대해서만 들었고 소프트웨어 세계에서 주목할만한 인물 인 것 같습니다. 따라서 제목이 클릭 미끼이거나 입에 단어를 넣는 것처럼 보이지는 않습니다. 그러나 이것은 단순히 제한된 경험과 이해로 그에게서들은 것을 어떻게 해석했는지

나는 오늘 (소프트웨어 아키텍처에 관한) 비디오 , Robert C. Martin의 연설 에서 비디오를 보고 있었고, 비디오 의 후반에는 데이터베이스의 주제가 주요 초점이었습니다.

그가 말한 것에 대한 나의 이해에서 SSD는 데이터베이스의 유용성을 상당히 떨어 뜨릴 것이라고 말한 것 같습니다 .

이 해석에 어떻게 도달했는지 설명하려면 :

그는 HDD / 스피닝 디스크를 사용하여 데이터 검색 속도가 느린 방법에 대해 논의했습니다. 그러나 요즘에는 SSD를 사용하고 있다고 그는 지적했다. "RAM is coming"으로 시작한 다음 RAM 디스크를 언급하면서 계속하지만 RAM 디스크라고 부를 수 없으므로 RAM이라고 말하면됩니다. 따라서 RAM의 경우 모든 바이트를 가져 오는 데 동일한 시간이 걸리므로 인덱스가 필요하지 않습니다. ( 이 단락은 나에 의해 해석됩니다 )

그래서 그는 (컴퓨터 메모리에서와 같이) DB를 대체하는 것으로 RAM을 제안합니다 (그의 진술을 해석 한대로)는 모든 레코드가 응용 프로그램의 수명 기간 동안 메모리 내에서 처리된다고 말하는 것과 같기 때문에 ( 필요에 따라 디스크 파일을 가져 오지 않는 한)

그래서 저는 RAM에 의한 사고에 의지했습니다. 그는 SSD를 의미합니다. 따라서이 경우 SSD가 데이터베이스의 유용성을 떨어 뜨린다 고 말합니다. 그는 "내가 오라클이라면 두려워 할 것입니다. 내가 존재하는 이유의 기본은 증발하고 있습니다."

O(n)시간 을 찾는 HDD와는 달리 SSD에 대한 나의 작은 이해 에서 SSD는 O(1)거의 또는 거의 무작위입니다. 그래서 그의 제안은 저에게 흥미로 웠습니다. 왜냐하면 저는 그런 생각을 한 적이 없었기 때문입니다. 몇 년 전에 교수가 정규 파일 시스템에 비해 이점을 설명 할 때 데이터베이스에 처음 소개되었을 때 데이터베이스의 기본 역할은 매우 색인화 된 파일 시스템 (최적화, 캐싱, 동시 액세스, 따라서 SSD에서 인덱스가 필요하지 않은 경우 이런 종류의 데이터베이스는 데이터베이스를 덜 유용하게 만듭니다.

그럼에도 불구하고, 내가 새로운 사람이라는 것을 앞두고 모든 사람들이 여전히 순수한 파일 시스템 대신 DB를 응용 프로그램의 주요 지점으로 사용하고 지나치게 단순화 된 것처럼 느꼈기 때문에 유용하지 않다고 생각하기가 어렵습니다. 데이터베이스의 역할.

참고 : 나는 그가 다른 말을하지 않았는지 확인하기 위해 끝까지 지켜 보았습니다.

참고로 : 42:22 는 전체 데이터베이스 주제가 나타나면 43:52 는 "왜 데이터베이스가 있습니까 ?"로 시작하는시기입니다.

이 답변에 따르면 SSD가 DB 속도를 크게 향상시킵니다. 이 질문은 최적화가 어떻게 변경되는지 묻습니다.

에 TL; DR은 내 질문에, (그것은 곧 나 이미 발생 여부) 데이터베이스의 유용성을 감소 서버 시장에서 널리 SSD 사용의 출현을합니까?

발표자가 전달하려고 한 것은 SSD를 사용하면 디스크에 데이터를 저장할 수 있으며 구형 HDD와 마찬가지로 SSD를 검색하는 데 걸리는 시간이 얼마 남지 않을까 걱정할 필요가 없었습니다. O(1)(생각합니다). 따라서, 그것이 사실 인 경우, 그것은 더 빠른 탐색 시간을위한 인덱스를 갖는 장점이 사라지기 때문에, 그것이 갖는 장점 중 하나 인 인덱싱을 가정적으로 상실 할 것이다.

답변:


59

SSD를 사용할 때 데이터베이스에서 조정 해야 할 사항이 몇 가지 있습니다. 예를 들어 PostgreSQL을 말하면 effective_io_concurrency, 및을 조정할 수 있습니다 random_page_cost. 그러나 더 빠른 읽기 및 빠른 임의 액세스는 데이터베이스의 기능이 아닙니다. 그것은 보장합니다

그는 인덱스에 대해서만 잘못했습니다. 전체 테이블을 램으로 읽을 수 있으면 인덱스가 여전히 유용합니다. 나를 믿지 않습니까? 생각 실험을 해보자

  • 하나의 인덱스 열이있는 테이블이 있다고 가정하십시오.

    CREATE TABLE foobar ( id text PRIMARY KEY );
  • 해당 테이블에 5 억 개의 행이 있다고 가정하십시오.

  • 5 억 행이 모두 파일로 연결되어 있다고 상상해보십시오.

더 빠른 것은

  1. grep 'keyword' file
  2. SELECT * FROM foobar WHERE id = 'keyword'

데이터의 위치, 주문 방법 및 수행 할 수있는 작업에 관한 것입니다. PostgreSQL은 B-tree, Hash, GiST, SP-GiST, GIN 및 BRIN 인덱스 (및 확장을 통한 Bloom)를 지원합니다. 랜덤 액세스가 빠르기 때문에 모든 수학과 기능이 사라진다고 생각하는 것은 어리석은 일입니다.


31
부록 – OP는 "무작위 액세스"와 "콘텐츠 주소 지정 액세스"를 혼동하지 않도록주의해야합니다. OP가 지적했듯이 "랜덤 액세스"는 각 바이트의 메모리에 도달하는 것이 O (1)임을 의미합니다. 그러나 "랜덤 액세스 메모리"에있는 데이터를 찾으려면 여전히 순차적으로 검색해야합니다. 즉, 메모리에 " 이것 처럼 보이는 데이터를 찾아서 "마법으로 전달할 수 없습니다.
— Bob Jarvis-복직 모니카

2
@BobJarvis 맞습니다. 귀하의 의견은 인덱싱 및 서브 인덱싱이 중요한 이유에 대한 @EvanCarroll의 "더 빠른 것"예제를 정리하는 데 도움이되며 O(1), DB가 제공하는 사용 사례로는 파악 하기에 충분하지 않습니다
— Abdul

12

게시물을 기반으로 RDBMS 조회 시간 최적화가 IO 시간을 무시할 수있는 하드웨어로 대체되고 있다는 명확한 메시지가 나타납니다.

이것은 절대적으로 사실입니다. 높은 (실제) RAM과 결합 된 데이터베이스 서버의 SSD는 IO 대기 시간을 크게 단축시킵니다. 그러나 RDBMS 인덱싱 및 캐싱은 여전히 ​​가치가 있습니다. 이처럼 큰 IO 기능을 갖춘 시스템조차도 인덱싱이 잘못되어 쿼리 성능이 저하되어 IO 병목 현상이 발생할 수 있기 때문입니다. 이는 일반적으로 작업량이 많은 응용 프로그램 또는 잘못 작성된 응용 프로그램에서만 발견됩니다.

RDBMS 시스템의 주요 가치는 일반적으로 데이터 일관성, 데이터 가용성 및 데이터 집계입니다. Excel 스프레드 시트, csv 파일 또는 "데이터베이스"를 유지하는 다른 방법을 사용한다고 보장 할 수 없습니다.

SSD는 어떤 이유로 든 (네트워크, OS 손상, 전원 손실) 기본 서버로부터 사용자를 보호하지 않습니다. SSD는 잘못된 데이터 수정으로부터 사용자를 보호하지 않습니다. SSD는 "그냥"있는 것보다 분석을 더 빠르게 실행하지 않습니다.


더 나은 통찰력을 얻었지만 원시 SSD 데이터 스토리지와 HDD가있는 DB의 데이터 스토리지의 맥락에서 묻고 있었고 귀하의 답변은 SSD의 DB와 관련이 있습니다 (질문이 나쁘지 않아서)
— Abdul

4
@Abdul 비교는 사과와 서스펜션 브리지입니다. 원시 장치는 많은 스토리지를 제공합니다. 데이터베이스는 데이터 모델에 따라 해당 스토리지를 구성하고 액세스 할 수있는 방법을 제공합니다. Josh의 요점은 원시 SSD가 "빠르기"때문에 놀라운 일이라고 생각하고이 원시 볼륨에서 모든 데이터 스토리지를 수행하기위한 코드를 작성한다는 점에 주목해야합니다. 결국 데이터베이스를 작성하게됩니다.
— Blrfl

8

Bob 삼촌은 아마도 Redis 또는 Gemfire 와 같은 인 메모리 데이터베이스에 대해 이야기했을 것입니다 . 이러한 데이터베이스에서 데이터베이스의 모든 내용은 실제로 RAM에 포함됩니다. 데이터베이스는 비어있는 상태로 시작하여 수명이 짧은 데이터 (캐시로 사용됨)로 제출되거나 디스크에서 모든 항목을로드하고 주기적으로 체크 포인트 변경 사항을 디스크로로드하여 시작할 수 있습니다.

RAM이 저렴 해지면서 점점 더 대중화되고 있으며 메모리 내 클러스터 데이터베이스에 테라 바이트 단위의 데이터를 저장하는 것이 가능해졌습니다. 사물에 즉시 액세스 할 수있어 속도가 SSD와 같은 빠른 디스크 라기보다는 RAM에 넣는 것이 가치가있는 많은 사용 사례가 있습니다. 이해가된다면 SQL을 계속 사용할 수도 있습니다.

왜 이것이 오라클을 걱정해야합니까? 데이터가 증가하고 있으며 RDBMS가 사라질 것 같지 않습니다. 그러나 수년에 걸쳐 Oracle의 많은 엔지니어링 시간은 회전 디스크에서 데이터를 정말 빠르게 검색 할 수있는 방법으로 전환되었습니다. 오라클은 완전히 다른 스토리지 계층에 적응해야합니다. 그들은 Oracle Database In Memory 를 사용하지만 과거와는 다른 경쟁에 노출되어 있습니다. 쿼리 최적화 프로그램이 디스크의 레이아웃에 따라 올바른 전략을 선택하는 데 얼마나 많은 시간이 걸 렸는지 생각해보십시오.


아 메모리 내 데이터베이스와 같은 것을 전혀 몰랐습니다
— Abdul

1
다른 예로서 SQLite는 메모리에서 실행될 수 있으므로 다른 데이터베이스를 사용할 필요가 없습니다
— user151019

8

커뮤니티 위키 게시물은 원래 질문 코멘트로 남겨진 답변을 수집합니다.


나는 단지 반대라고 말할 것입니다. 읽기 / 쓰기 속도가 너무 빠르므로 GPU 가속 데이터베이스 (예 : BlazingDB 또는 Alenka )를 사용하여 숫자를 훨씬 빠르게 처리 할 수 ​​있습니다. 이제 더 복잡한 쿼리를 더 빠르게 실행할 수 있습니다. 이제 사람들이 달리기를 고려하지 않은 쿼리는 적절한 속도로 실행할 수 있습니다. 복잡할수록, 당신 오프 더 많은 데이터를 더 나은입니다 - cybernard

밥 마틴은 오랫동안 주변에 있었고 그의 의견은 일반적으로 (-:에 동의하지 않으면)들을 가치가 있지만,이 경우에 그는 "관계형 데이터베이스의 죽음이 우리에게있다"라는 군중으로 뛰어 들고 있다고 생각합니다. 저는 준회원입니다 :-). 들어 일부 에서 가지 제한적인 상황 은 다소 설득력이 인수는 비 관계형 데이터베이스 기술 우위를 제공 할 수 있음을 만들 수 있습니다. 그러나 IMO 관계형 모델은 다양하고 햇볕이 잘 드는 방식으로 결함이 있지만 오늘날 사용 가능한 최고의 범용 데이터베이스 모델을 제공합니다. YMMV. - 밥 자비스

데이터베이스를 사용하는 주된 이유는 디스크가 느리기 때문이 아니라 (실제로는 데이터베이스를 사용 하지 않는 이유로 인용 되었기 때문이 아니라) 데이터가 복잡 하기 때문 입니다. 데이터베이스의 기본 목적은 여러 앱 / 사용자가 올바른 데이터 를 찾고 제어 된 방식으로 동시에 데이터를 변경할 수 있도록하는 것입니다. 그렇게하는 것은 데이터베이스의 보조 목표 일뿐입니다. - RBarryYoung

RDBMS는 곧 사라지지 않을 것입니다. 이들은 일부 유형의 응용 프로그램에 가장 적합한 선택이며 NoSQL (Mongo 등)은 다른 응용 프로그램에 가장 적합한 선택입니다. 코스 말. - sh1rts

데이터베이스는 데이터를 구성하는 데 도움이됩니다. 어쨌든 데이터의 빠른 액세스를 위해 실제로 설계된 것은 아닙니다. - 지샹

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.