전체 글
-
JanusGraph카테고리 없음 2024. 9. 6. 10:58
Index ManagementIndexing for Better Performance대부분의 그래프 쿼리는 해당 property로 식별되는 vertex 또는 edge 리스트에서 순회를 시작graph indexes: 대규모 그래프에서 이러한 전역 검색 작업을 효율적으로 수행vertex-centric indexes: 그래프를 통한 실제 순회 속도를 향상 g.V().has('name', 'hercules')g.E().has('reason', textContains('loves'))graph index없이 위와 같은 쿼리를 질의하면 edge나 vertext에 대해 full scan을 해야한다. 매우 비효율적이다.Janus는 composite 및 mixed index가 있다.composite 인덱스는 매우 빠르..
-
Database의 파일시스템 EXT4, XFS 비교 (Feat. MongoDB, ScyllaDB)Software Development/Database 2024. 6. 22. 00:00
https://www.mongodb.com/docs/manual/administration/production-notes/#kernel-and-file-systems Production Notes - MongoDB Manual v7.0This page details system configurations that affect MongoDB, especially when running in production.To learn more about running in production for deployments hosted in MongoDB Atlas, see Atlas Production Notes.For running in production, refer to the Recommewww.mongodb..
-
[Kotlin] 코틀린 코루틴의 정석 요약Software Development/기타 2024. 6. 9. 00:00
개발 도서를 읽으면서 많은 번역본을 읽을 때 마다 번역에 대한 아쉬움을 느낄 때가 있었습니다.'코틀린 코루틴의 정석'을 읽으면서 코루틴의 동자원리에 대해서 잘 이해할 수 있었습니다.이번 요약을 통해서 나중에 필요시에 가볍게 꺼내볼 수 있으면 좋겠습니다.자세한 내용은 아래의 책에 있습니다.http://www.acornpub.co.kr/book/kotlin-coroutines 코틀린 코루틴의 정석많은 개발자들이 어렵게 느끼는 비동기 프로그래밍을 다양한 시각적 자료와 설명을 통해 누구나 쉽게 이해할 수 있도록 쓰인 책이다.www.acornpub.co.kr코루틴의 이점은 성능, 안정성, 가독성에 있다.멀티 스레드 프로그래밍 방식은 사용자가 스레드를 기반으로 작업하기 때문에 스레드 블로킹을 극복하기 어려웠다.이를..
-
CPython InternalsSoftware Development/Python 2024. 6. 1. 00:00
해당 글은 CPython Internals 책을 읽으면서 중요하게 봤었던 내용의 일부를 요약한 것입니다. 자세한 내용은 아라의 책에 있습니다.https://product.kyobobook.co.kr/detail/S000061776273 CPython 파헤치기 | 앤서니 쇼 - 교보문고CPython 파헤치기 | 인터프리터 레벨에서 살펴보는 파이선 내부 동작 원리파이썬이 인터프리터 레벨에서 작동하는 방식을 이해하면 파이썬의 기능을 최대한 활용할 수 있고 애플리케이션을 최적product.kyobobook.co.kr"아무리 성공적인 혁신이라도 한때는 아이디어였다. 헌신, 학습, 협력이 성공과 성장을 위한 기반이다. 지금 하는 게 아예 안 하는 것보다 낫다."파이썬 언어와 문법컴파일러: 한 언어를 다른 언어로 변..
-
[Kafka] 단일 파티션에 대한 고민Software Development/Data Engineering 2024. 5. 27. 14:23
이름에서 알 수 있듯이 단일 파티션 topic은 파티션이 하나만 정의된 Kafka topic입니다. 이 옵션은 몇 가지 제한 사항이 있습니다.1. consumer group 사이즈에 관계없이 한 번에 하나의 consumer group 멤버가 메세지를 처리할 수 있습니다.2. group member와 메세지 처리를 나눠서 할 수 없기 때문에 최대 처리량은 단일 consumer와 동일합니다.3. 2 이상의 consumer 그룹의 경우 1개 빼고 전부 유휴 상태로 있게됩니다. 처리량 및 확장성의 관점에서 아주 나쁜 선택입니다. 카프카의 파티셔닝 기능을 포기하는 것은 거의 필수인데, 드물게 예외케이스가 있긴 합니다. 모든 메시지가 동일한 파티션 내에 있으므로 해당 주제 내에서 메시지의 grobal (쓰기) o..
-
[Distributed System] Interprocess CommunicationSoftware Development/Distributed System 2023. 8. 6. 17:06
The API for Internet protocols The characteristics of interprocess communication 두 쌍의 프로세스가 통신하려면, send, receive가 필요 Synchronous and asynchronous communication Queue는 메세지 destination과 관련이 있음. 송신 프로세스는 원격 큐에 메세지를 추가. 수신 프로세스는 로컬 큐에서 메세지 제거. 송수신 프로세스의 통신은 동기 비동기 중 하나. 동기 통신은 모든 메세지가 동기적으로 처리. 송신, 수신은 blocking 오퍼레이션임. 송신 또는 수신 프로세스의 이슈가 서로의 통신에 영향을 미침. 비동기 통신은 send operation을 non-blocking으로 사용. 로컬 ..
-
[몽고디비] Query PlansSoftware Development/Database 2023. 5. 9. 14:58
https://www.mongodb.com/docs/manual/core/query-plans/ Query Plans — MongoDB Manual Docs Home → MongoDB Manual For a query, the MongoDB query optimizer chooses and caches the most efficient query plan given the available indexes. The evaluation of the most efficient query plan is based on the number of "work units" (works) performed by www.mongodb.com 위의 사이트에서 참고하였습니다. 쿼리 성능이 제대로 안나오는 원인은 인덱스랑 관련..
-
[Spark] Spark JDBC와 하이브 연동 이슈들.Software Development/Data Engineering 2023. 5. 5. 11:53
Spark JDBC로 RDB의 데이터를 가져올 수 있음. 이때 성능 이슈가 있을 수 있음. fetchsize 옵션 추가해서 사이즈를 키워볼 것. partition 옵션을 사용하여 병렬로 가져올 수 있도록 쿼리 짤 것. Spark JDBC로 데이터 가져올 때, Action 한 번만 호출하도록 신경쓸 것. Cache가 좋은 대안. Spark JDBC로 가져온 데이터를 Hive metastore와 연동하는 경우가 많음. 이때 스키마 이슈가 발생할 수 있음. saveAsTable로 Overwrite하면, table drop 후 create 함. 이때 기존 스키마 전부 날라감. 스키마 날라가도, 데이터는 잘 저장될 수 있음. spark.sql로 읽는다면 큰 문제없음. 그러나 여기에 하이브가 붙는다면, 하이브가 읽..