인터넷에 https://cldellow.com/2018/06/22/sqlite-parquet-vtable.html이 글을 읽고나서 apache Parquet  에 대해 관심이 생겼다.  https://github.com/cldellow/sqlite-parquet-vtable이 sqlite 확장을 이용하면 sqlite 를 이용해서 10억 데이터에 대해 query 를 날릴 수 있는 것 같다. 물론 그냥 sqlite 로도 query 를 날릴 수 있긴한데, 좀 많이 느리다. 내가 1000만 데이터를 sorting 하려고 했는데, 이게 좀 많이 느렸다. indexing 을 하면 좀 괜찮긴 한데, 뭔가 DB가 커진 것 같았다. 그래서 좀더 빠르게 query 를 날릴 수 있는 방법을 찾다가 맨 위 블로그를 발견했다. 

 이 Parquet 라는게 apache arrow 로 통합되었다고 한다. 그래서 코드를 어찌어찌  https://github.com/apache/arrow 을 이용해서 sqlite-parquet-vtable 코드를 수정해봤다. 그런데 메모리 에러가 발생했다. 이 작업을 거의 2달 동안 했는데... 실패했다. (시작할 때는 https://yiunsr.tistory.com/824이 글을 올릴 떄 쯤이니 꽤 오랬동안 붙잡고 있었네...). 뭐, 이런 일은 또 시기가 지나면 버그들이 수정될 테니 그 때 쯤에 다시 도전해봐야겠다.

 평소에 GPGPU에 조금씩 관심을 가지고 있었는데, https://github.com/bakks/sphyraena 이 글을 읽고 opencl 에 관심이 생겼다. 위의 프로젝트는 cuda 를 이용해서 sqlite 속도 를 개선 한 것이다. 사실 코드만 봐서는 어떻게 동작하는 것인지 알 수 없다. 이런 방식을 이용한다면 sqlite 속도를 끌어 올릴수 있을 것 같아서 opencl 쪽 동작을 살표보고 있다. cuda 가 아닌 opencl 을 보는 이유는 범용성이 좀 더 좋기 때문이다. cuda 를 지원하는 그래픽 카드도 opencl1.2 까지는 지원하기 때문이다. 맥에서도 아직까지는 1.2 정도는 지원하는 것 같다. 그래서 현재 내가 생각하는 버전은 opencl1.2 이다. 물론 맥이 opencl 을 버린다는 이야기가 있어서 그렇긴 한데, 어째든 opencl1.2 까지는 지원하고 있다. 

 opencl 을 좀 더 싶게 배우기 위해 pyopencl 을 이용하려고 한다. 어차피 둘다 내부적으로는 C 코드를 컴파일 해서 동작하는 방식이다. 그리고 뭔가 유틸리티가 조금은 잘 갖춰진 것 같다. 공부가 잘 된다면 전부터 고민하고 있던, light spread sheet 에 적용해볼 생각이다. 

안돼요(여기서 안돼요는 동작하지 않는다는 의미이다.), 느려요. 이 말을 들으면 난감하다.

느리다는 것은 여러 의미가를 담고 있다. 인터넷이 느려서 느려요. 서비스 로직의 결과가 느려서 느려요. 사용자의 컴퓨터가 느려서 자바스크립트가 많아서 느려요. 화면 스크롤이 느려요. 리스트 개수가 많으면 느려요. 저장 할 때 느려요. 상세 페이지 볼 때 느려요. 검색할 때 느려요. 맵이 느려요. 등등의 의미를 담고 있다. 

안돼요라는 의미도, 제 계정에서만 안돼요. 인터넷이 잠시 끊껴서 안돼요. 권한이 없어요. 저장할 때 안돼요. 등등이 있다. 

어떤 경우에는 개발자만 이해할 수 있는 문제이고, 어떤 경우는 비개발자도 알 수 있는 경우가 있다. 어떤 경우에는 비개발자도 알 수 있도록 에러 문구를 넣기도 한다. 

어째든 그냥 무턱되고 "느려요." 라는 말을 들으면 참 난감하다. 그래서 불필요한 서버 사이드 개선을 하기도 하고, 서버 사양을 높이기도 한다. 어떤 면에서는 비개발자도 그 정도는 알 수 있는 것인데 라는 생각이 들기도 한다. 버그 리포팅 같은 경우도 상세히 해주면 참 좋은데 라는 생각이 많이 든다.