찾다

 >  Q&A  >  본문

数据库 - 想做一个多tag的 系统用MongoDB好还是常规的MySQL好?

我想做一个活动系统,每个活动都有很多tag, 当然有参加的人数,时间,地点。最近学习了mongodb 感觉如果用mongo会很方便: meeting table:

{_id: 42, name: "someName", tags: ["chicken", "parrot", "hovercraft"]}

person table:

{_id: "somebody@gmail.com", name:"LiMing", phone:"1381671537"}

person activity table:

{_id:56, person: "somebody@gmail.com", eventid: 42}

每个活动都会有很多人参加。我不知道如果系统大了,特别是参加的多了用mongodb好呢,还是用传统数据库mySQL好呢? 还有查询效率,比如:

db.meeting.find({tags:{$in:["tag2", "tag1"]}});

这样高么? 传统数据库要用多对多表,不知道传统查询速度高还是直接用mongoDB这样速度快。 本来想设计成一张表,如果活动人很多人参加 比如 person有 200人,会不会降低效率?有时候怕加人减人台频繁会不会有锁的问题,比如同时添加多个人到某此活动中? mongoDB多个表join如何查询?

阿神阿神2767일 전772

모든 응답(6)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-22 08:58:05

    데이터의 양이 많고 노력이 많이 든다면 MySQL과 Sorl을 결합하는 것을 고려해 볼 수 있습니다.

    데이터의 양이 많지 않기 때문에 태그를 카테고리로 활용하여 MySQL에 저장하는 것도 고려해 볼 수 있습니다.

    MySQL은 생각만큼 느리지 않습니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-22 08:58:05

    mongodb. 이유는 없습니다. 그냥 마음에 듭니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-22 08:58:05

    MongoDB는 확실히 좋지만 이를 위해 관계형 데이터베이스를 사용하는 것은 재앙입니다

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-22 08:58:05

    MongoDB 모델 디자인은 그렇게 디자인하지 않는 것이 가장 좋습니다. 다음과 같아야 합니다

    회의 테이블:
    {_id: 42, 이름: "someName", 태그: ["chicken", "parrot", "hovercraft"]}

    개인 테이블:
    {_id: "somebody@gmail.com", 이름:"LiMing", 전화번호:"1381671537"}

    개인 활동 테이블:
    {_id:56, 사람:
    {_id: 42, 이름: "someName", 태그: ["chicken", "parrot", "hovercraft"]},
    이벤트: {_id: 42, 이름: "someName", 태그: ["chicken", "parrot", "hovercraft"]}
    }

    그리고 해당 인덱스를 구축합니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-22 08:58:05

    약간의 조언: 숙달할 수 없는 기술은 사용하지 마세요.

    자신에게 익숙한 것과 더 능숙한 것을 사용하세요.

    둘 중 하나도 사용하지 않았다면 MongoDB를 고려해 볼 수 있습니다.

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-22 08:58:05

    Tag 시스템의 경우 redis를 사용하는 것이 더 편리할 것 같습니다. 이 문제의 경우 redis에서 SET을 사용할 수 있습니다.

    http://redis.io/topics/data-types

    Redis 세트는 관계를 나타내는 데 적합합니다. 세트를 사용하여 모든 태그를 나타내는 태그 지정 시스템을 만든 다음 특정 태그를 나타내는 세트에 특정 태그가 있는 모든 객체의 ID를 추가할 수 있습니다. SADD 명령을 사용하여 세 가지 다른 태그를 가진 모든 개체의 ID를 동시에 원하십니까?

    다른 부분에 mongo를 사용한다면 개별 실시간 업데이트 태그 증감과 특정 태그의 이벤트 증감에도 redis를 사용할 수 있습니다.

    각 태그가 채택된 ​​횟수를 기록하려면 태그 텍스트를 키로, 채택 횟수를 값으로 사용하여 HASH를 추가하면 됩니다.

    회신하다
    0
  • 취소회신하다