이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요


목차

1. 개요
2. 그 이유
2.1. 처음에는...
2.2. 그 결과
2.3. 근데 문제를 알면서도 왜 지금도 안 바꾸냐?

1. 개요

아는 사람은 알겠지만 오픈나무DB의 모든 데이터를 TEXT 혹은 LONGTEXT로 저장한다

이는 사실 굉장한 메모리 낭비이고 최적화 측면에서 최악이다

그럼에도 불구하고 왜 이렇게 쓰는가에 대한 글이다

2. 그 이유

2.1. 처음에는...

오픈나무의 시작 지점을 보면 알겠지만 사실 대규모 위키에 최적화된 위키 엔진이 아니였다 지금도 아니지만

그래서 이 정도 규모에서는 모든 데이터를 TEXT로 저장해도 별 문제 없겠구나하고

개발 효율 증가 및 추후 데이터를 완전 변경해야할 상황 대비 겸사 TEXT로 저장했다

2.2. 그 결과

예를 들어서 ORDER BY를 ID 필드에 쓴다고 쳤을 때 ID 필트는 TEXT 타입이므로 TEXT 타입으로 정렬하면 10 다음 100이 온다

그래서 INT 타입으로 변환해서 서로 비교해줘야 한다 -> 성능 로스가 장난 아닐 것 같다(1)

또한 전부 TEXT 타입이므로 나무위키 DB의 HISTORY를 전부 올리면 용량이 장난 아니고 메모리 소모가 굉장하다

2.3. 근데 문제를 알면서도 왜 지금도 안 바꾸냐?

  • 1. 테이블 구조를 바꾸려면 테이블 데이터를 전부 이전해야 하는데 그 과정에서 뭔가 잘못되면 돌이키기 어려울 것 같아서
  • 1. 특히 이제 진짜 위키 굴리는 용도로 쓰는 사람들이 있으니 예전만큼 막 갈아엎기가 좀 무섭다
  • 2. 사실 지금도 대규모 위키용 엔진은 아니라고 생각해서
  • 1. 사실 나무위키 DB 올리는 건... 그냥 미러 만들기 정도라고 생각해서 개인적으로 별로 좋아하진 않는다 게다 이제 지원도 종료해서 올리고 싶어도 올리지도 못한다
  • 2. 물론 진짜 제대로된 문서로 이루어진 대규모 위키 나온다면 갈아엎겠지만(2)
  • 3. 앞에서 말한 개발 효율 증가 및 추후 데이터 변경 상황이 지금도 생각보다 중요해서
  • 1. 아니 막짜서 막 굴리는 게 개발자의 미덕이 맞냐?(3)라고 물으면 솔직히 할 말은 없는데 이게 업도 아니고 개인 취미 생활이라서 막짜도 어떻게든 굴러가는 게 생각보다 중요하다
(1) 추측이지만
(2) 지금도 Golang으로 천천히 이주하는 게 그런 의미이다
(3) 즉 제대로 설계 안하고 짜서 돌아가는 게 정상이냐?