ホームページ  >  に質問  >  本文

数据库 - 想做一个多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如何查询?

阿神阿神2736日前739

全員に返信(6)返信します

  • PHP中文网

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

    データ量が多くて手間がかかる場合は、MySQL と Sorl の組み合わせを検討できます。

    データ量はそれほど多くないので、タグをカテゴリとして使用し、MySQL に保存することを検討できます。

    MySQL はあなたが思っているほど遅くはありません。

    返事
    0
  • 黄舟

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

    モンゴデータベース。理由はありません、ただ好きなだけです。

    返事
    0
  • 大家讲道理

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

    MongoDB は明らかに優れていますが、これを行うためにリレーショナル データベースを使用するのは単に惨事です

    返事
    0
  • ringa_lee

    ringa_lee2017-04-22 08:58:05

    MongoDB モデルの設計はそのように設計しないのが最善です。次のようにする必要があります

    会議テーブル:
    {_id: 42、名前: "someName"、タグ: ["鶏"、"オウム"、"ホバークラフト"]}

    人物テーブル:
    {_id: "somebody@gmail.com"、名前:"LiMing"、電話:"1381671537"}

    個人活動表:
    {_id:56、人物:
    {_id: 42、名前: "someName"、タグ: ["鶏"、"オウム"、"ホバークラフト"]}、
    イベント: {_id: 42、名前: "someName"、タグ: ["鶏"、"オウム"、"ホバークラフト"]}
    }

    対応するインデックスを構築します

    返事
    0
  • PHP中文网

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

    ちょっとしたアドバイス: 自分で制御できないテクノロジーは使用しないでください

    使い慣れたもの、またはより熟練したものを使用してください。

    どちらも使用したことがない場合は、MongoDB を検討してください。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-22 08:58:05

    タグシステムについては、redisを使用した方が便利だと思います。この問題に対しては、redis で SET を使用するだけで済みます。

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

    Redis セットは関係を表すのに適しています。セットを使用してタグ付けシステムを作成し、すべてのタグを表すことができます。その後、指定されたタグを持つすべてのオブジェクトの ID を、この特定のタグを表すセットに追加できます。 SADD コマンド。SINTER を使用して、すべてのオブジェクトのすべての ID に同時に 3 つの異なるタグを付けますか?

    他の部分にmongoを使用する場合、リアルタイム更新される個別のタグの増減や、特定のタグ内のイベントの増減にはredisを使用することもできます。

    各タグが採用された回数を記録したい場合は、キーとしてタグテキスト、値として採用数を使用してハッシュを追加するだけです。

    返事
    0
  • キャンセル返事