Discourse 데이터베이스에 사용자를 직접 안전하게 삽입할 수 있을까요?

안녕하세요 여러분,

저희는 동일한 가상 머신에서 여러 Discourse 포럼을 격리된 인스턴스로 운영하고 있습니다. 각 포럼은 각각의 독립적인 Postgres 데이터베이스를 사용하지만, 모두 호스트 머신에서 실행되는 공유 스크립트로 관리되고 있습니다.

현재 저희는 설정 과정에서 초기 사용자를 자동 생성하는 방법을 찾고 있습니다. API나 CSV 가져오기를 사용하지 않고, 다음과 같은 질문을 하고 있습니다:

:light_bulb: 각 인스턴스의 데이터베이스에 사용자 기록을 직접 삽입하는 것이 가능(그리고 안전)한가요?

저희 스크립트가 이미 데이터베이스와 상호작용하고 있으므로, 이렇게 하면 프로비저닝 프로세스를 크게 간소화할 수 있을 것입니다.

직접 데이터베이스에서 사용자를 생성해 본 경험이 있는 분이 계신가요? 아니면 데이터 무결성, 세션 또는 기타 Discourse 고유 메커니즘에 대한 위험 때문에 나쁜 아이디어인가요?

어떤 조언이나 경험이든 공유해 주시면 감사하겠습니다!

데이터베이스를 직접 수정하는 것보다 Rails로 처리하는 것이 조금 더 안전하지만, 원한다면 직접 수행할 수도 있습니다. 최소한 user와 user_emails 테이블을 수정해야 하며, user_ids가 일치하는지 확인해야 한다는 점에 유의하세요.

discourse/db/fixtures/009_users.rb at main · discourse/discourse · GitHub 파일을 확인한 후, 유사하게 픽스처를 추가하는 플러그인(예: ./discourse-salesforce/db/fixtures/001_groups.rb)을 만들어 보세요.

수입(임포트) 스크립트를 예제로 활용할 수도 있습니다.

감사합니다, @pfaffman — 조언에 진심으로 감사드립니다!

한 가지 확인하고 싶은 부분이 있습니다: 이 방법을 검토하는 주요 이유 중 하나는 CSV와 API 기반 방식이 우리가 하려는 작업에는 너무 느리다는 점입니다. 우리는 격리된 인스턴스를 대량으로 생성하며, 프로비저닝 과정에서 각 인스턴스에 사용자 일괄 데이터를 빠르게 로드해야 합니다.

말씀하신 픽스처/플러그인 방식이 API나 CSV 방식에 비해 사용자 생성 속도를 훨씬 빠르게 해 줄 수 있을까요? 구체적으로는 설정 단계의 대기 시간을 줄이는 것이 목표이며, 이상적으로는 초기 DB 설정과 함께 즉시 또는 거의 즉시 실행되는 방식이었으면 합니다.

다시 한번 감사합니다!

데이터베이스를 직접 업데이트하는 예시로 일괄 가져오기 스크립트를 참고할 수 있습니다. 가져오기 스크립트에는 오버헤드가 있으므로, 픽스처에 있는 예시가 더 빠를 수 있습니다.

얼마나 많은 사용자를 추가하고 계신가요? 각 사이트마다 동일한 사용자를 사용하고 계신가요?