我想为用户上传的每个媒体(图像/声音/视频/Pdf)存储标签。将来我想使用这个标签来搜索媒体。我是一名初级开发人员,我使用了一种方法来做到这一点。
我做了两个表
- 标签(标签标识符,标签名)
媒体标签(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 文件!)
这就是为什么我对什么是更优选的方法感到困惑! 请推荐!
最佳答案
这两种方法都有效。你的问题是效率,而不是能力(如果我理解你的话)。要回答效率问题,您需要非常了解应用程序的要求。
这里有一些问题要问自己:
- 数据项(艺术家简介)是否会相当静态,或者您的系统是否会一直有大量数据项来来去去?
- 您是否计划对这些项目进行大量动态查找?
- 您的查找是按标签还是按内容,或两者兼而有之?
如果您的系统的更改和查找量较少,则使用 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/