NDJSON
Overview
In today’s data-driven world, efficiently transferring large datasets between systems is crucial. While JSON has become the standard format for data exchange, it faces limitations when handling large volumes of data or streaming scenarios. This is where NDJSON (Newline Delimited JSON) comes in – a simple yet powerful format that’s revolutionizing how we stream data over HTTP connections. In this article, we’ll explore what NDJSON is, how it differs from standard JSON, and how Apidog can help you work with NDJSON streaming endpoints.
전통방식의 JSON에 대한 제약사항, 그리고 이를 해결하기위한 새로운 포맷인 NDJSON에 대한 포스트이며 두 포맷의 차이점도 같이 기술
What is NDJSON?
NDJSON (Newline Delimited JSON) is a format that stores structured data as a sequence of JSON objects, with each object on its own line, separated by a newline character (\n). It’s also known as JSON Lines (JSONL) in some contexts.
NDJSON == Newline Delimited JSON
단일 행으로 구성된 구조화된 데이터 포맷
Example
{"id": 1, "name": "Alice", "score": 95}
{"id": 2, "name": "Bob", "score": 87}
{"id": 3, "name": "Charlie", "score": 92}
Difference
NDJSON vs. Traditional JSON: Key Differences
특징 | 전통적인 JSON | NDJSON |
---|---|---|
구조 | 단일, 완전한 문서 | 여러 개의 독립적인 JSON 객체 |
파싱 | 전체 문서를 로드해야 함 | 한 줄씩 처리 가능 |
스트리밍 | 스트리밍용으로 설계되지 않음 | 스트리밍에 적합 |
메모리 사용량 | 전체 문서를 메모리에 로드해야 함 | 한 줄씩 처리 |
파일 크기 | 사용 가능한 메모리에 의해 제한됨 | 무제한(?) |
When to Use?
사내 제품에 변경프로그램목록을 도출하고, 이를 적재하는 기능이 존재함. 어느 커밋에 어떤 파일들을 변경했는지 (Source Branch, Target Branch) 도출하고 적재해 화면에서 해당 목록을 보여주고, 해당기능에대한 리뷰를 지원함. 허나, 최초 반입 시점에 도출된 파일들은 건수자체가 너무많아 이를 데이터베이스가아닌, 파일로 관리하는 방안을 모색하던 중 알게되었고, 변경프로그램목록이 동일하게 도출되면 각 레코드들을 모아 하나의 파일에 각레코드에 대한 정보를 작성하고, 추후 해당데이터를 해당 파일을 통해 특정 버퍼에있는 레코드들을 서빙할 계획
Conclusion
요약하자면, NDJSON은 JSON 데이터 스트림을 유연하고 효율적으로 처리하는 방법을 제공함. 라인 단위로 구분된 특성 덕분에 파싱이 간소화되고 증분 처리가 가능하여 대규모 데이터셋이나 실시간 데이터 피드에 특히 유용. NDJSON을 이해하고 활용함으로써 개발자는 구조화된 데이터를 더욱 강력하고 확장 가능한 방식으로 효과적으로 관리하고 교환할 수 있음.