no-sql(mongodb) 스키마 설계 조언 부탁드립니다.

김제연   
   조회 4169   추천 0    

 이것저것 몽고db에 대해서 .. 공부하고 이제 .. 적용 시키려고 하는데 .. 하나 궁금한게 있어서 

어떻게 해야 할지 몰라 혹시 사용 하고 계시는분 계시면 조언 듣고자 질문 드립니다.. 

기존 mysql 에서는.. 사용자 및 업체 들을 테이블로 나눴습니다.. 나눈 이유는 아래 질문 드리는것처럼 

입력 받는 필드의 차이 때문입니다.. 예를들면 

공장: 공장이름 , 전화번호, 팩스번호, 사업자번호 ...

판매처 : 판매처이름, 판매처 전화번호, 팩스번호 사업자번호, 

사용자: 이름, 전화번호..소속 회사 


"id":"k3341095",

    "password":"",

    "info": {

        "type": [

            'distribution', 'shop'

        ],

        "name": '제연주식회사',

        "ceo": '김제연',

        "phone": "01*-****-****"

        "phone": "0**-***-****",

        "fax": "0**-***-****",

        "email": "***@*****.com",

        "address": "경기도 의정부시 ",

        "reg_code": "213-01-202838"

        },

회사의 정보가 이렇다고 하면 

사용자는

"id":"k3341095",

    "password":"",

    "info": {

        "type": [

            'distribution', 'shop'

        ],

        "name": '김제연',

        "phone": "01*-****-****",

        "email": "****@*****.com"

        },


이런식으로 공장과 판매처는 거의 비슷비슷 해서 합치는게 수월하지만.. 사용자의 경우 info에 들어가는 

내용이 전혀 틀려 집니다.. nosql의 장점중 하나가 비정규화 이고 ... 

현재 mysql 상에서 user, factory, ... 등.. 사용자별로 테이블이 나눠져있는게 비효율적이라고 생각하고 있어서 

하나로 합쳐서 하나의 nosql 콜렉션에서 관리하고 싶은데 ... 저런식으로 입력값의 필드가 .. 서로 다를경우

어떻게 해야 하는지 난감합니다.. nodejs + mongodb 를 사용해서 만들고 있는데 

mongoose 에서는 schema 를 생성해서 관리 해야 할텐데 .. 

그냥 info를 통으로 OBJECT형식으로 놓고 아무 제약없이 사용해야 할것 같은데 그게 맞는건지도 모르겠구요. 


아시는분 계시면.. 조언좀 부탁 드리겠습니다.. 갑자기 해야 할게 많은데 설계부터 막히니 너무 답답하네요 

블로그나 카페 구글 검색해도 .. sub-document 나 reference 에 관한 글들만 있지 .. 저렇게 .. 

서로다른 필드를 가진 스키마 설계에 대한 글이 나온 곳은 없는거 같아서 .. 막막합니다.. 도움좀 주세요.

짧은글 일수록 신중하게.
회원K 2018-07
필드 나누는게 비효율적인 것은 아닙니다.

비정규화 = 다른 DB 연동이 힘듬
공장, 판매자, 사용자에 대한 구분자를 두어 각 성격을 구분하고, 비슷한 성격의 필드명(이름,전화번호,연락처)들은 같은 이름으로 정의하고, 그외 각 구분자에 따른 필드항목(예: 사용자는 없고, 공장에 있는 CEO항목)들을 추가로 정의해서 id별 도큐먼트를 만들고 콜렉션으로 그냥 같이 넣으면 되지 않을까요? 입력 추가시 키 중복나지 않게 입력하고, 검색시 구분자별 검색 혹은 공통필드별 검색에 대해 정의하고, 키별 삭제만 잘 이루어지면 생각하시는대로 구현될 수 있을것 같습니다.
정희섭 2018-07
고객 공장 이런 데이터가 수만개 되어도 mysql 에서 mongodb 로 이전하는게 그닥 뭔가 효율적이지 않을거 같네요
어차피 db에서 인출할때 100미리초가 걸리나 200 미리초 걸리나 어느 정도 미만이면 사용자가 보기엔 그닥 차이가 없는걸거란 말이죠...
거기다 이런 종류 데이터는 사람이 다른일 하다 까먹는시간이 많지 않나 싶기도 하네요
     
김제연 2018-07
no-sql 로 이전이 성능이슈 만으로 바라보시는 분들이 많은데 제가 간단한것 만들어보니 ..
정규화도 .. 머리가 나빠서 잘 못하고 제 성격엔 그냥 json 으로 정규화 없이 개발하는게 편하고 해서 mongodb를 선택한겁니다.
mongodb 가 아니라 다른 db를 선택해도 ... 방식엔 크게 다르지 않더군요 .. 나중에 geo query 기능도 사용하게 되고 해서
선택하게 되었습니다.
크럭스 2018-07
저라면 PostgreSQL로 쓰고 info 컬럼(또는 다른 row별로 유동적인 데이터)은 json 타입으로 퉁쳐서 관리할거 같네요
제온프로 2018-07
그렇다면 차라이 한개의 Table에 모두 넣고..

DB_Type 필드에서..

판매자 : 1
사용자 : 2
관리자:  5
최고관리자: 9

이렇게 해보는 것도 방법이겠네요..
관리는 편하겠습니다.


QnA
제목Page 3971/5718
2015-12   1744347   백메가
2014-05   5213389   정은준1
2018-06   4165   화란
2019-01   4165   샤릉합니다
2017-08   4165   song05
2016-03   4165   전설속의미…
2016-03   4165   박명근TN
2014-02   4165   김건우
2019-05   4165   스무프
2017-04   4165   phose
2015-10   4165   싼럽댄스
2018-07   4165   무아
2016-11   4165   김가피시
2014-02   4165   김민철GC
2018-04   4165   김건우
2014-11   4165   부산대빵
2018-08   4165   빠시온
2017-12   4165   쉘든쿠퍼
2015-04   4165   소년시대
2015-02   4165   소년시대
2015-05   4164   우진신
2017-03   4164   앤드유저