소중한 질문 감사합니다!
Lock은 edge (source, target) pair 단위로 잡습니다 (예: Alice→Phone). 같은 edge에 동시에 쓰는 경우만 경합이 생기는데, 실제로 한 사용자가 같은 대상에 동시에 좋아요 누르는 경우는 거의 없어서 경합이 낮습니다. 이게 저희 데이터베이스 유즈케이스의 특징입니다.
Write 트래픽은 피크 기준 분당 수십만 건 정도입니다. 읽기가 100만+이고 쓰기는 그보다 낮아요.
벤치마크 참고 (읽기 85%, 쓰기 15%) - https://actionbase.io/ko/operations/benchmarks/
핫 엔티티(인기 상품 등)는 lock 경합이 생길 수 있는데, 이건 count 업데이트 때문이에요(HBase Increment). 이 부분은 별도로 최적화해서 처리하고 있습니다. 고빈도 쓰기 관련: https://actionbase.io/ko/stories/kakaotalk-gift-recent-views/
비슷한 use case를 가진 곳에서 잘 쓸 수 있을 거 같습니다. 공개해주셔서 감사합니다!
다만 ingestion에서 Lock을 쓰는 부분에서 문제가 없었는지 궁금한데요. 데이터 Write의 경우 트래픽이 어느 정도 됐었나요? Lock 경합 등으로 인해 문제가 되는 경우는 없었는지 궁금합니다.