kookmin-sw / capstone-2020-5

악성코드 분석 보조 도구 asi
1 stars 0 forks source link

엘라스틱서치의 데이터 단위 문제 #12

Open Jaymel opened 4 years ago

Jaymel commented 4 years ago

현재 엘라스틱서치의 기본 단위는 함수의 mnemonic으로 구성되어 있음. 이때 다음과 같은 문제가 발생할 수 있음.

  1. 중복 미처리로 추후 용량 및 검색 시간의 문제가 발생할 수 있음.
  2. mnemonic 펑션 중 포함하고 있는 mnemonic이 많은, 즉 여러 block을 포함하고 있는 특정 펑션들이 최다 검색으로 자주 return될 수 있음. 즉 유사도 검색 결과의 편중성이 생길 수 있음.
  3. 하이라이팅이 힘듦. 예를 들어 입력한 펑션을 n그램 모델을 적용한 후 각 n그램마다 유사도 검색을 해서 1000개의 mnemonic이 포함된 펑션을 최다 검색 결과로 return 받았을 때 입력한 펑션의 n그램 모델에서 각 n그램이 return 받은 펑션의 어느 부분에 위치하는지 등을 하이라이트해서 표현하는게 힘듦. 단순하게 입력받은 펑션이 정상 DB안에 존재한다만 보여주는 건 가능함.

이하는 새로운 단위에 대한 제안임. 하나의 mnemonic 펑션은 여러개의 mnemonic 블럭들로 이루어져있는데 이 각각의 mnemonic 블럭을 단위로 삼는 것임.

펑션 단위에 비해 블록 단위가 얻을 수 있는 이점은

  1. 블록이 모인 펑션 단위는 중복될 가능성이 현저히 적어 중복처리가 힘들지만 블록 단위는 중복이 매우 많을 것임. 중복 처리를 통해 유니크한 DB 구성이 가능.
  2. 펑션에 비해 블록의 길이가 훨씬 적은 편이니 데이터의 편중성 역시 어느정도 해소됨. 물론 완벽히 해소되는 것은 아니지만 유니크한 DB가 구성되었으므로 n그램의 크기를 매우 키워 거의 발생하지 않게 할 수 있다고 예상됨.
  3. 상대적으로 적은 블록 크기와 유니크한 DB로 하이라이팅, 즉 시각화 부분에서 이득이 있다고 생각함.

다만 펑션에서 블록 단위로 재설계했을 때 엘라스틱서치의 DB 재구성을 요구함. 이에 대한 의견을 묻습니다.