오늘날 소프트웨어 개발 의 가장 큰 추세 중 하나는 PostgreSQL 이 사실상의 데이터베이스 표준으로 등장한다는 것입니다. PostgreSQL을 모든 용도로 사용하는 방법에 대한 몇 개의 블로그 게시물이 있지만, 왜 이런 일이 발생하는지(그리고 더 중요하게 이것이 왜 중요한지)에 대한 내용은 아직 없습니다.
지금까지!
01 PostgreSQL이 사실상의 데이터베이스 표준이 되고 있습니다
02 모든 것이 컴퓨터가 된다
03 PostgreSQL의 귀환
04 자유로워지고, 미래를 건설하고, PostgreSQL을 수용하세요
05 Timescale "시계열용 PostgreSQL"로 시작
06 시계열을 넘어 확장된 시간척도
07 Timescale은 이제 “PostgreSQL이 강력해졌습니다”
08 코다: 요다?
지난 몇 달 동안 "모든 것을 위한 PostgreSQL"은 개발자들 사이에서 점점 더 큰 전쟁 구호가 되었습니다.
“PostgreSQL은 단순한 관계형 데이터베이스가 아닙니다. 이는 전체 데이터베이스 영역을 포괄할 수 있는 잠재력을 지닌 데이터 관리 프레임워크입니다. "모든 것에 Postgres 사용" 추세는 더 이상 소수의 엘리트 팀에만 국한되지 않고 주류 모범 사례가 되고 있습니다."
(
“스택을 단순화하고 움직이는 부분을 줄이고, 개발 속도를 높이고, 위험을 낮추고, 스타트업에서 더 많은 기능을 제공하는 한 가지 방법은 “모든 것에 Postgres를 사용하는 것입니다.” Postgres는 Kafka, RabbitMQ, Mongo 및 Redis를 비롯한 많은 백엔드 기술(최대 수백만 명의 사용자)을 대체할 수 있습니다.”
(
(
“(MySQL이 절대적으로 지배하던 당시) Postgres에 대해 처음 들었을 때, 그것은 나에게 "저 수학 괴짜들이 만든 데이터베이스"라고 설명했고, 그 후 문득 이런 생각이 들었습니다. 예, 바로 저 사람들이 당신이 만들고 싶은 사람들입니다. 당신의 데이터베이스.”
(
원천 )
“놀라운 복귀를 했습니다. 이제 NoSQL은 죽었고 Oracle이 MySQL을 소유하고 있으니 또 무엇이 있을까요?”
( 원천 )
“Postgres는 단순한 관계형 DB가 아닙니다. 그것은 삶의 방식입니다.”
( 원천 )
견고한 기반과 기본 기능 및 확장을 통한 다양성 덕분에 개발자는 이제 모든 것에 PostgreSQL을 사용하여 복잡하고 부서지기 쉬운 데이터 아키텍처를 간단한 단순성으로 대체할 수 있습니다.
이는 작년에 전문 개발자들 사이에서 가장 인기 있는 데이터베이스 순위에서 PostgreSQL이 MySQL에 이어 1위를 차지한 이유를 설명하는 데 도움이 될 수 있습니다(응답자 60,369명).
지난 한 해 동안 광범위한 개발 작업을 수행한 데이터베이스 환경은 무엇이며, 내년에는 어떤 데이터베이스 환경에서 작업하고 싶습니까? 응답자의 49% 이상이 PostgreSQL에 응답했습니다. (
해당 결과는 2023년 스택 오버플로 개발자 설문조사에서 나온 것입니다. 시간의 흐름을 살펴보면 지난 몇 년 동안 PostgreSQL 채택이 꾸준히 증가한 것을 볼 수 있습니다.
PostgreSQL은 2020년부터 2022년까지 Stack Overflow의 개발자 설문 조사 응답자들이 두 번째로 선호하는 데이터베이스였지만 그 사용량은 지속적으로 증가했습니다. 원천:
이는 소규모 스타트업이나 취미생활자 사이만의 추세가 아닙니다. 실제로 PostgreSQL 사용량은 모든 규모의 조직에서 증가하고 있습니다.
회사 규모별 PostgreSQL 사용량 비율입니다. (
Timescale에서 이러한 추세는 우리에게 새로운 것이 아닙니다. 우리는 거의 10년 동안 PostgreSQL을 믿어왔습니다. 이것이 우리가 PostgreSQL을 기반으로 비즈니스를 구축한 이유이며, 우리가
PostgreSQL을 모든 용도로 사용하는 방법에 대한 몇 가지 블로그 게시물이 있지만, 왜 이런 일이 발생하는지(그리고 더 중요한 것은 이것이 왜 중요한지)에 대한 내용은 아직 없습니다.
지금까지.
그러나 이런 일이 일어나는 이유를 이해하려면 훨씬 더 근본적인 추세와 그 추세가 인간 현실의 근본적인 본질을 어떻게 변화시키고 있는지 이해해야 합니다.
자동차, 집, 도시, 농장, 공장, 화폐, 물건 등 모든 것이 컴퓨터가 되어가고 있습니다. 우리도 디지털화되고 있습니다. 매년 우리는 우리 자신의 정체성과 행동을 더 많이 디지털화합니다. 물건을 사는 방법, 즐기는 방법, 미술품을 수집하는 방법, 질문에 대한 답을 찾는 방법, 소통하고 연결하는 방법, 우리가 누구인지 표현하는 방법.
22년 전만 해도 '유비쿼터스 컴퓨팅'이라는 아이디어는 대담해 보였습니다. 그 당시 저는 MIT AI Lab에서 대학원생으로 일을 하고 있었습니다.
그 이후로 많은 것이 바뀌었습니다. 컴퓨팅은 이제 우리 책상, 주머니, 물건, 그리고 "클라우드" 어디에나 존재합니다. 그 정도는 우리가 예측했습니다.
그러나 이러한 변화의 2차 효과는 우리 대부분이 기대했던 것과는 달랐습니다.
유비쿼터스 컴퓨팅은 유비쿼터스 데이터로 이어졌습니다 . 각각의 새로운 컴퓨팅 장치를 통해 우리는 인간 데이터, 기계 데이터, 비즈니스 데이터, 환경 데이터, 합성 데이터 등 현실에 대한 더 많은 정보를 수집합니다. 이 데이터는 우리 세계에 넘쳐나고 있습니다.
데이터 홍수로 인해 데이터베이스가 캄브리아기에 폭발적으로 증가했습니다 . 이러한 모든 새로운 데이터 소스에는 이를 저장할 새로운 장소가 필요했습니다. 20년 전에는 실행 가능한 데이터베이스 옵션이 5개 정도 있었습니다. 오늘날에는 수백 개가 있으며 대부분 특정 사용 사례나 데이터에 특화되어 있으며 매달 새로운 항목이 등장하고 있습니다.
더 많은 데이터와 더 많은 데이터베이스로 인해 소프트웨어가 더 복잡해졌습니다 . 소프트웨어 워크로드에 적합한 데이터베이스를 선택하는 것은 더 이상 쉽지 않습니다. 대신 개발자는 관계형 데이터베이스(신뢰성을 위해), 비관계형 데이터베이스(확장성을 위해), 데이터 웨어하우스(분석 서비스 기능을 위해), 객체 저장소( 오래된 데이터를 저렴하게 보관할 수 있는 능력 때문입니다). 이 아키텍처에는 시계열 또는 벡터 데이터베이스와 같은 보다 전문화된 구성 요소가 있을 수도 있습니다.
복잡해질수록 구축 시간이 단축됩니다. 복잡한 아키텍처는 더 취약하고, 더 복잡한 애플리케이션 로직을 필요로 하며, 개발 시간을 단축하고 개발 속도를 늦춥니다. 복잡성은 이점이 아니라 실제 비용입니다.
컴퓨팅이 더욱 보편화됨에 따라 우리의 현실은 컴퓨팅과 더욱 얽혀 있습니다. 우리는 컴퓨팅을 우리의 세계로 가져왔고 우리 자신도 그 세계로 가져왔습니다. 우리는 더 이상 오프라인 정체성이 아니라 오프라인과 온라인 활동의 혼합체입니다.
소프트웨어 개발자는 이 새로운 현실에서 인류의 선봉입니다. 우리는 이 새로운 현실을 형성하는 소프트웨어를 구축하는 사람들입니다.
그러나 개발자들은 이제 데이터가 넘쳐나고 데이터베이스 복잡성에 빠져 있습니다.
이는 개발자가 미래를 설계하는 대신 배관 관리에 점점 더 많은 시간을 소비하고 있음을 의미합니다.
어떻게 여기까지 왔어?
유비쿼터스 컴퓨팅은 유비쿼터스 데이터로 이어졌습니다. 이것은 하룻밤 사이에 일어난 것이 아니라 수십 년에 걸쳐 계단식 파도 속에서 일어났습니다.
각 물결마다 컴퓨터는 더 작아지고, 더 강력해지고, 더 유비쿼터스화되었습니다. 각 웨이브는 이전 웨이브를 기반으로 구축되었습니다. 개인용 컴퓨터는 더 작은 메인프레임입니다. 인터넷은 연결된 컴퓨터의 네트워크입니다. 스마트폰은 인터넷에 연결된 훨씬 더 작은 컴퓨터입니다. 클라우드 컴퓨팅은 컴퓨팅 리소스에 대한 액세스를 민주화했습니다. 사물 인터넷은 클라우드에 연결된 다른 물리적 사물의 일부로 재구성된 스마트폰 구성 요소입니다.
그러나 지난 20년 동안 컴퓨팅 발전은 물리적 세계뿐만 아니라 디지털 세계에서도 발생하여 하이브리드 현실을 반영했습니다.
컴퓨팅의 새로운 물결이 일어날 때마다 우리는 인간의 디지털 배기가스, 기계 데이터, 비즈니스 데이터, 합성 데이터 등 하이브리드 현실에 대한 새로운 정보 소스를 얻습니다. 미래의 물결은 훨씬 더 많은 데이터를 생성할 것입니다. 이 모든 데이터는 새로운 물결의 원동력이 되며, 그 중 최신은 생성 AI(Generative AI)입니다. 이는 결국 우리의 현실을 더욱 구체화합니다.
컴퓨팅의 물결은 고립되어 있지 않고 도미노처럼 계단식으로 이어집니다. 데이터의 흐름으로 시작된 것이 곧 데이터 홍수가 되었습니다. 그리고 데이터 홍수로 인해 점점 더 많은 데이터베이스가 생성되었습니다.
이러한 모든 새로운 데이터 소스에는 이를 저장할 새로운 장소, 즉 데이터베이스가 필요했습니다.
메인프레임은 다음과 같이 시작되었습니다.
인터넷의 협업 능력은 최초의 오픈 소스 데이터베이스를 포함한 오픈 소스 소프트웨어의 등장을 가능하게 했습니다.
인터넷은 또한 엄청난 양의 데이터를 생성하여 최초의 비관계형 또는 NoSQL 데이터베이스를 탄생시켰습니다.
2010년쯤에 우리는 한계점에 도달하기 시작했습니다. 그 시점까지 소프트웨어 애플리케이션은 주로 단일 데이터베이스(예: Oracle, MySQL, PostgreSQL)에 의존했으며 선택이 상대적으로 쉬웠습니다.
그러나 "빅 데이터"는 계속해서 커지고 있습니다. 사물 인터넷은 기계 데이터의 증가를 가져왔습니다. iPhone과 Android 덕분에 스마트폰 사용량이 기하급수적으로 증가하기 시작했고, 이로 인해 인간의 디지털 소모가 더욱 늘어났습니다. 클라우드 컴퓨팅은 컴퓨팅 및 스토리지에 대한 액세스를 민주화하여 이러한 추세를 증폭시켰습니다. 최근 생성형 AI(Generative AI)는 벡터 데이터 생성으로 이 문제를 더욱 악화시켰습니다.
수집된 데이터의 양이 증가함에 따라 전문 데이터베이스의 등장을 확인했습니다.
20년 전에는 실행 가능한 데이터베이스 옵션이 5개 정도 있었습니다. 오늘은
이러한 홍수와 다양한 절충안이 있는 특수 데이터베이스에 직면하여 개발자는 복잡한 아키텍처를 함께 꿰맬 수밖에 없었습니다.
이러한 아키텍처에는 일반적으로 관계형 데이터베이스(신뢰성용), 비관계형 데이터베이스(확장성용), 데이터 웨어하우스(데이터 분석용), 개체 저장소(저렴한 보관용) 및 시계열과 같은 더욱 특수화된 구성 요소가 포함됩니다. 또는 해당 사용 사례에 대한 벡터 데이터베이스입니다.
그러나 복잡성이 높아질수록 구축 시간이 단축됩니다. 복잡한 아키텍처는 더 취약하고, 더 복잡한 애플리케이션 로직을 필요로 하며, 개발 시간을 단축하고 개발 속도를 늦춥니다.
이는 소프트웨어 개발자가 미래를 구축하는 대신 배관을 유지 관리하는 데 너무 많은 시간을 소비한다는 것을 의미합니다. 이것이 오늘날 우리가 있는 곳입니다.
더 좋은 방법이 있습니다.
여기서 우리의 이야기가 반전됩니다. 우리의 영웅은 빛나는 새 데이터베이스가 아니라, 오직 마더 코어 개발자만이 좋아할 수 있는 이름을 가진 오래되고 충실한 사람입니다: PostgreSQL.
처음에는 PostgreSQL이 MySQL에 뒤처진 2위였습니다. MySQL은 사용하기 쉬웠고, 그 뒤에 회사가 있었고, 누구나 쉽게 발음할 수 있는 이름이 있었습니다. 그러나 MySQL은 Sun Microsystems(2008)에 인수되었고, 이후 Oracle(2009)에 인수되었습니다. 그리고 MySQL을 값비싼 Oracle 독재 정권으로부터 자유로운 구원자로 본 소프트웨어 개발자들은 무엇을 사용해야 할지 재고하기 시작했습니다.
동시에 소수의 소규모 독립 기업이 후원하는 분산된 개발자 커뮤니티가 PostgreSQL을 점점 더 좋게 만들고 있었습니다. 그들은 전체 텍스트 검색(2008), 창 기능(2009), JSON 지원(2012)과 같은 강력한 기능을 조용히 추가했습니다. 또한 스트리밍 복제, 상시 대기, 전체 업그레이드(2010), 논리적 복제(2017)와 같은 기능을 통해 그리고 부지런히 버그를 수정하고 거친 부분을 다듬어 데이터베이스를 더욱 견고하게 만들었습니다.
이 기간 동안 PostgreSQL에 추가된 가장 영향력 있는 기능 중 하나는 확장 지원 기능, 즉 PostgreSQL(2011)에 기능을 추가하는 소프트웨어 모듈이었습니다.
확장 기능 덕분에 PostgreSQL은 단순한 훌륭한 관계형 데이터베이스 이상의 역할을 하기 시작했습니다. PostGIS 덕분에 훌륭한 지리공간 데이터베이스가 되었습니다. TimescaleDB 덕분에 훌륭한 시계열 데이터베이스가 되었습니다. 키-값 저장소인 hstore; 그래프 데이터베이스인 AGE; pgVector, 벡터 데이터베이스입니다. PostgreSQL이 플랫폼이 되었습니다.
이제 개발자는 안정성, 확장성(비관계형 데이터베이스 대체), 데이터 분석(데이터 웨어하우스 대체) 등을 위해 PostgreSQL을 사용할 수 있습니다.
이 시점에서 현명한 독자는 “빅데이터는 어떠한가?”라고 질문해야 한다. 그것은 공정한 질문입니다. 역사적으로 "빅 데이터"(예: 수백 테라바이트 또는 심지어 페타바이트)와 관련 분석 쿼리는 자체적으로 수평 확장이 불가능한 PostgreSQL과 같은 데이터베이스에는 적합하지 않았습니다.
그것도 변하고 있습니다. 지난해 11월 '
따라서 "빅 데이터"는 역사적으로 PostgreSQL의 약점 영역이었지만 머지않아 워크로드가 너무 커지는 일은 없을 것입니다.
PostgreSQL이 답입니다. PostgreSQL은 우리가 스스로를 자유롭게 하고 미래를 건설하는 방법입니다.
각각 고유한 특징과 쿼리 언어를 가진 여러 다른 데이터베이스 시스템을 사용하는 대신, 우리는 세계에서 가장 다재다능하고 아마도 가장 신뢰할 수 있는 데이터베이스인 PostgreSQL에 의존할 수 있습니다. 우리는 배관 공사에 소요되는 시간을 줄이고 미래를 건설하는 데 더 많은 시간을 할애할 수 있습니다.
그리고 PostgreSQL은 계속해서 향상되고 있습니다. PostgreSQL 커뮤니티는 계속해서 코어를 개선하고 있습니다. 오늘날 하이퍼스케일러를 포함하여 PostgreSQL에 기여하는 더 많은 회사가 있습니다.
오늘날의 PostgreSQL 생태계(
PostgreSQL 경험을 더 좋게 만들기 위해 코어를 중심으로 구축된 보다 혁신적이고 독립적인 회사도 있습니다.
물론 우리도 있습니다.
Timescale 이야기는 아마도 조금 익숙하게 들릴 것입니다. 우리는 IoT 고객을 위한 몇 가지 어려운 센서 데이터 문제를 해결하고 있었고 데이터에 빠져 있었습니다. 이에 맞춰 우리는 최소한 두 개의 서로 다른 데이터베이스 시스템(그 중 하나는 시계열 데이터베이스)을 포함하는 복잡한 스택을 구축했습니다.
어느 날 우리는 한계점에 도달했습니다. 우리 UI에서는 device_type과 uptime을 기준으로 장치를 필터링하고 싶었습니다. 이는 단순한 SQL 조인이어야 합니다. 하지만 우리는 두 개의 서로 다른 데이터베이스를 사용하고 있었기 때문에 대신 두 데이터베이스 사이의 애플리케이션에 글루 코드를 작성해야 했습니다. 변경하는 데 몇 주가 걸리고 전체 엔지니어링 스프린트가 소요될 예정이었습니다.
그러다가 우리 엔지니어 중 한 명이 미친 아이디어를 떠올렸습니다. PostgreSQL에서 바로 시계열 데이터베이스를 구축하면 어떨까? 그렇게 하면 모든 데이터에 대해 하나의 데이터베이스만 갖게 되고 소프트웨어를 더 빠르게 출시할 수 있게 됩니다. 그런 다음 우리는 그것을 만들었고 그것은 우리 삶을 훨씬 더 쉽게 만들었습니다. 그런 다음 우리는 친구들에게 그것에 대해 말했고 그들은 그것을 시도하고 싶어했습니다. 그리고 우리는 이것이 우리가 세상과 공유해야 할 것임을 깨달았습니다.
그래서 우리는 시계열 확장 프로그램인 TimescaleDB를 오픈 소스로 공개했습니다.
그 후 7년 동안 우리는 확장과 PostgreSQL 클라우드 서비스 모두에 막대한 투자를 하여 시계열 및 분석을 위한 더 나은 PostgreSQL 개발자 경험을 제공했습니다. 쿼리 속도는 350배, 하이퍼테이블을 통한 삽입 속도는 44% 더 높아졌습니다(자동- 파티셔닝 테이블); 지속적인 집계(실시간 구체화된 뷰)를 통한 일반적인 쿼리에 대한 밀리초 응답 시간 기본 컬럼 압축을 통해 90% 이상의 스토리지 비용 절감; 계층형 스토리지를 통한 무한한 저비용 객체 스토리지; 그리고 더.
시계열 데이터에서 우리가 시작한 곳이자 우리가 가장 잘 알려진 곳이기도 합니다.
하지만 작년부터 우리는 확장을 시작했습니다.
우리는 출시했습니다
최근에,
PopSQL은 팀 협업을 위한 SQL 편집기입니다
우리는 또한 “
오늘날 Timescale은 모든 규모에서 강력한 PostgreSQL로 거듭났습니다. 이제 우리는 시계열뿐만 아니라 AI, 에너지, 게임, 기계 데이터, 전기 자동차, 우주, 금융, 비디오, 오디오, 웹3 등의 분야에서 누구도 해결하지 못하는 하드 데이터 문제를 해결합니다.
우리는 개발자가 모든 작업에 PostgreSQL을 사용해야 한다고 믿으며, 그렇게 할 수 있도록 PostgreSQL을 개선하고 있습니다.
고객은 시계열 데이터뿐만 아니라 벡터 데이터 및 일반 관계형 데이터에도 Timescale을 사용합니다. 그들은 모든 것에 PostgreSQL을 사용할 수 있도록 Timescale을 사용합니다. 당신도 할 수 있습니다:
물리적, 가상, 오프라인과 온라인 모두에서 인간의 현실은 데이터로 가득 차 있습니다. Yoda가 말했듯이 데이터는 우리를 둘러싸고 우리를 묶습니다. 이러한 현실은 소프트웨어 개발자가 작성한 소프트웨어에 의해 점점 더 많이 통제되고 있습니다.
그것이 얼마나 놀라운 일인지는 평가할 가치가 있습니다. 얼마 전인 2002년, 제가 MIT 대학원생이었을 때, 세상은 소프트웨어에 대한 믿음을 잃었습니다. 우리는 닷컴 거품 붕괴로부터 회복하고 있었습니다. 주요 비즈니스 간행물에서는 다음과 같이 선언했습니다.
그러나 오늘날, 특히 생성 AI의 세계에서 미래를 만들어가는 주체는 바로 우리입니다. 우리는 미래의 건축가입니다. 우리는 스스로를 꼬집어야 합니다.
모든 것이 컴퓨터가 되어가고 있습니다. 이것은 대체로 좋은 일이었습니다. 우리의 자동차는 더 안전하고, 집은 더 편안하며, 공장과 농장의 생산성은 더 높아졌습니다. 우리는 이전보다 더 많은 정보에 즉시 접근할 수 있습니다. 우리는 서로 더 연결되어 있습니다. 때때로 그것은 우리를 더 건강하고 행복하게 만들었습니다.
그러나 항상 그런 것은 아닙니다. 힘과 마찬가지로 컴퓨팅에도 밝은 면과 어두운 면이 있습니다. 휴대폰과 소셜 미디어가 직접적으로 영향을 미친다는 증거가 늘어나고 있습니다.
우리는 미래가 어떻게 건설되는지에 영향을 미치는 두 가지 귀중한 자원, 즉 시간과 에너지의 관리인이 되었습니다.
우리는 배관 관리에 이러한 리소스를 사용하거나 모든 것을 위한 PostgreSQL을 수용하고 올바른 미래를 구축하도록 선택할 수 있습니다.
내 생각에 당신은 우리가 어디에 서 있는지 알고 있는 것 같아요.
읽어 주셔서 감사합니다. #Postgres4Life
(
이 게시물은 Ajay Kulkarni 가 작성했습니다.