2021년 커스텀 플러그인 DB 데이터에 대한 최적의 컨벤션은?

도시별 토론을 핵심 기능으로 하는 임대 부동산 커뮤니티 사이트를 구축 중입니다. 사용자 데이터에는 해당 사용자가 전문 지식을 가진 도시와 그 도시와의 관계(현재 거주 중, 과거에 거주했음 등)가 포함되어 있으며, 사용자는 전문 지식이 없는 상태에서 투자하고 싶은 도시에 대한 구독도 할 수 있습니다. 모든 도시는 카테고리로 구성되며, 사용자가 지도에서 도시를 탐색할 수 있도록 지오코딩된 데이터를 표시하는 커스텀 필드가 있습니다.

DB 효율성 측면에서 구조를 어떻게 잡아야 할지 고민되는 부분이 있습니다. 도시 페이지에 접속하면 해당 도시의 "회원 전문가"를 보여주는 피드가 표시됩니다. 카테고리 페이지를 렌더링할 때마다 모든 사용자를 조회하고 그들의 커스텀 필드 및 “전문가 도시” 커스텀 필드 해시를 매핑해야 한다면, 사용자 수와 도시 수가 증가할수록 상당히 느려질 것 같습니다.

자체 Rails 앱으로 구축했다면, 조인 테이블과 모델의 has_many_through 관계 등으로 쉽게 해결할 수 있었을 것입니다. 여기서 궁금한 점은 조인 테이블이 필요한 플러그인에 대해 권장되는 접근 방식이 무엇인지입니다. 커스텀 마이그레이션과 테이블은 권장되지 않는 것으로 보이며, 일반적으로 커스텀 필드나 PluginStore를 사용하는 것이 더 나은 것 같습니다. PluginStore에 대한 실제 문서를 찾지 못했지만, 현재 조사 중입니다.

어떤 방향으로 깊이 들어가기 전에 “공식 Discourse 권장” 접근 방식에 대해 물어보는 것이 현명하다고 생각되어 질문드립니다.

감사합니다 :slight_smile:
Zach

초기에는 그랬을 수 있지만, 요즘은 그 반대입니다. 우리가 직접 만든 플러그인 중에서도, 투표 플러그인이나 폴링 플러그인처럼 그럴 만한 이유가 있는 경우 커스텀 필드에서 자체 테이블로 마이그레이션했습니다.

풍부한 데이터 모델을 가진 플러그인은 자체 모델, 테이블, 관계 및 마이그레이션을 생성해야 합니다. 훨씬 유지보수가 쉽고 뛰어난 성능을 제공합니다. 다만 N+1 문제를 주의하세요. :wink:

아, 알겠습니다. 정말 다행이네요. 물어봐서 다행이에요. :wink: 플러그인 내에서 코어 모델을 수정하는 권장 방법이 있나요?

커스텀 defs와 관계를 추가하고 싶은데, 예를 들어 제 새 테이블을 이용한 hasmanythrough 같은 것들이요. 카테고리나 사용자 등의 ID를 전달해야 하는 제 새 모델의 함수를 호출하는 것 외에는 최선의 방법이 무엇인지 정확히 모르겠어요.

이 게시물을 찾았지만, 답변을 받지 못한 것 같네요.

위에서 언급한 Poll 플러그인에는 몇 가지 예제가 있습니다:

완벽해요. 이렇게 될 수 있다니 정말 설레요! 감사합니다.