MySQL 与 XML 的标记机制

标签 mysql xml tags metadata

我想为用户上传的每个媒体(图像/声音/视频/Pdf)存储标签。将来我想使用这个标签来搜索媒体。我是一名初级开发人员,我使用了一种方法来做到这一点。

我做了两个表

  1. 标签(标签标识符,标签名)
  2. 媒体标签(Mediaid,Tagid)

    • 媒体是用户上传的数据
    • 标签是用于再次搜索媒体的简单词

例如,如果我上传一张图片,它将有一个 mediaid=M1,我会给它两个标签,如 Tag1、Tag2。现在

Table 1} will contain data => Row1 = T1-Tag1 ; Row2 = T2-Tag2 as schema[Tagid,Tag name]
Table 2} will contain data => Row1 = M1-T1 ; Row2 = M1-T2 as schema[Mediaid,Tagid] 

用户每次上传都会重复。例如,当我必须搜索特定标签时: 正在搜索“标签 1”。它将找到 Tag1 的标签 ID,即“T1” 它将在 Mediatags 表中查找标签 ID 为 'T1' 的每个 meadiid

然后我会得到那些标签为 T1=Tag1 的 mediaids

我为此使用 MySQL。现在我想到了另一种机制,

如果我为每个标签创建一个 XML 文件,其中包含具有该标签的所有媒体 ID。 在此示例中,将有 2 个 XML 文件 TAG1.XML 、 Tag2.XML 并且都包含数据 M1 它在搜索时创建了两个步骤。 查找该标记的 XML 文件。我们得到所有使用该标签的 mediaids。 所以在这里,我将找到 XML 文件 TAG1.XML 并阅读它。它会给我所有那些使用了标签 M1 的媒体 ID。我认为它可以在搜索时提供帮助。但是会生成太多的XML文件!我会在字母词典中对它们进行排序。

我只想知道, 1. 与 MySQL 相比,使用这种 XML 方法的效率如何? 2. 在MySql 2表中查找数据与在固定目录下查找XML文件哪个更好?

如果我使用第一种方法,MySql 表中会有很多行,而在第二种方法中会有很多 XML 文件(一个 XML 文件不会很重,但会有很多 XML 文件!)

这就是为什么我对什么是更优选的方法感到困惑! 请推荐!

最佳答案

这两种方法都有效。你的问题是效率,而不是能力(如果我理解你的话)。要回答效率问题,您需要非常了解应用程序的要求。

这里有一些问题要问自己:

  1. 数据项(艺术家简介)是否会相当静态,或者您的系统是否会一直有大量数据项来来去去?
  2. 您是否计划对这些项目进行大量动态查找?
  3. 您的查找是按标签还是按内容,或两者兼而有之?

如果您的系统的更改和查找量较少,则使用 XML 具有优势。它在定义存储数据的方式上更加灵活。 XPath 查询语言很难学,但是一旦你熟练了它就会很好用。但是除非您投资安装和学习使用像 MarkLogic 这样的 XML 感知服务器,否则它不会很快。会很慢。

否则,请坚持使用 MySQL。对于此类工作,它具有一些关键优势,包括其 FULLTEXT 查询能力。

您正在做的是所谓的“语义网”工作的一个子集。您可能会对此进行一些阅读,并阅读用于表示元数据的称为“都柏林核心”的方案。很多脑力都投入到试图解决这个问题。试图解释他们的结果的脑力略有减少,这使得学习语义 Web 成为一项艰巨的任务,但它仍然是值得的。

请考虑使用 WordPress、Drupal 或 Joomla 等内容管理系统!构建您的第一个版本的系统。您也可以考虑使用像 MediaWiki 或 Twiki 这样的 wiki 平台。

您会发现这些系统很好地支持各种标记(分类)方案。至于搜索:它很管用。以 echo "Hello, world of music!"开头的“Stick-built”网​​络应用程序; 在您获得任何结果之前需要进行大量重复和无聊的工作。

如果您要 build 游行花车,您将从一辆卡车开始,而不是一桶 bolt 、一把锯子和一些木材。网站的交易也是如此。

关于MySQL 与 XML 的标记机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14537305/

相关文章:

javascript - Node.js API - 选择逗号分隔字符串中多个值的位置

java - 实体映射中的重复列,oneToMany 关系

mysql - 连接 2 个表的准确结果

php - 我的 php 代码有问题,我需要为我的数据库划分函数

python - 将 xml 解析为 pandas 数据框会引发内存错误

c# - 标记数组 c# winforms

php echo vs 打开&关闭标签

java - 如何使动态制作的按钮在 Scrollview 中可滚动?

css - 如何通过 CSS 选择器定位标签,引用兄弟标签的内容?

struts - 如何更改链接标签: Submit to Anchor