Sqlite3 및 Javascript로 데이터를 엄청나게 빠르게 제공

Sqlite3 및 Javascript로 데이터를 엄청나게 빠르게 제공

2022-10-19 last update

6 minutes reading rust webperf sqlite javascript

Sqlite3 및 Javascript를 사용하여 데이터를 엄청나게 빠르게 제공



나는 SQLite3를 사랑한다. 개인 프로젝트를 위한 사실상의 데이터베이스입니다. 사람들이 수입하는 것을 보았습니다 millions of rows per minute . NOSQL Database 으로 사용되는 것을 보고 깜짝 놀랐습니다. SQLite 데이터베이스everywhere를 호스팅할 수 있다는 점이 좋습니다. SQLite3의 다양성은 놀랍습니다.

웹 서버와 함께 사용할 때 SQLite3의 성능을 살펴보고 싶었습니다. 실제로 2022년 유럽 에너지 위기와 함께 비용 효율적인 솔루션을 찾는 것이 중요합니다.

Go, Ruby, JavaScript, Rust 등 다양한 프로그래밍 언어를 실험했습니다.

내 목표: 달성 가능한 동시성이 무엇인지 파악하는 것이 현명합니다.

코드 복잡성과 속도의 균형을 맞추었습니다. 각 구현에 너무 많은 시간을 소비하고 싶지 않았습니다. 내가 사용한 SQLite 쿼리는 간단합니다. 하나의 삽입 문, 하나의 쿼리 문. 이것은 SQLite 성능을 검증하기 위한 테스트가 아닙니다. SQLite가 빠르다는 것을 알고 있습니다. 이것은 웹 서버에 대한 SQLite 쿼리의 차단 영향을 확인하는 테스트입니다.

JavaScript 결과는 저를 놀라게 했습니다.

마디:
  • sqlite 삽입 사용: 초당 16k 요청
  • sqlite 선택: 초당 31k 요청



  • 녹:
  • sqlite 삽입 사용: 초당 14k 요청
  • sqlite 선택: 초당 61k 요청

  • Rust는 삽입에서는 느리지만 쿼리에서는 두 배 빠릅니다.



    bun.sh(새로운 자바스크립트 런타임):
  • sqlite 삽입 사용: 초당 21k 요청
  • sqlite 선택: 초당 75k 요청



  • 뭐? bun.sh는 삽입에서 두 배 빠르며 선택에서 더 좋습니다.
    우리는 누구나 하나의 서버에서 초당 수만 건의 요청을 처리할 수 있는 시대에 살고 있습니다(제가 사용한 서버는 3년 전입니다).
    멋진 데이터베이스가 필요하지 않습니다.
    동일한 호스트에서 호스팅되는 sqlite3 데이터베이스면 충분합니다.

    들었던 기억이 나네요

    The engineering under JavaScript is really pretty phenomenal
    

    bun.sh는 JavaScript를 위한 경이로운 엔지니어링의 새로운 예입니다.
    엄청나게 빠른 모든 JavaScript 최적화를 Sqlite3과 결합하면 컴파일된 언어와 동등한 성능을 얻을 수 있습니다.

    더 빨리 녹이 슬 수 있다고 생각합니다.
    그러나 구현 세부 사항을 파악하려면 더 많은 작업이 필요합니다.
    bun.sh + SQLite3은 내 모든 성능 요구 사항에 충분합니다.

    참고문헌



  • Javascript의 John Carmack:
  • bun.sh
  • ThePrimeagen과 같이 엄청나게 빠름
  • 내 테스트 코드: https://github.com/aurelienbottazini/sqlite-performance-test
  • Insert millions of rows per minute
  • SQLite as a NOSQL Database
  • Host SQLite on Github pages