我想存储用户上传的每个媒体(图像/声音/视频/ Pdf)的标签。在将来,我想使用此标签搜索媒体。我是初学者,我用一种方法来做这件事。
我制作了两张桌子
Mediatags(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]
用户每次上传都会重复此操作。当我必须搜索特定标签时,例如: 搜索'Tag1'。它会找到Tag1的标签ID为'T1' 它将查找Mediatags表中标签ID为“T1”
的每个meadiid然后我会得到那些标签为T1 = Tag1
的媒体我正在使用MySQL。现在我有另一种机制,
如果我为包含具有该标记的所有媒体ID的每个标记创建XML文件。 在这个例子中,将有2个XML文件TAG1.XML,Tag2.XML,两者都将包含数据M1 它在搜索时创建了两个步骤。 找到该标记的XML文件。我们得到了所有使用过该标签的媒体。 所以在这里,我将找到XML文件TAG1.XML并阅读它。它会给我所有使用标签M1的媒体ID。我认为搜索时可以提供帮助。但它会生成太多的XML文件!我会用字母词典对它们进行排序。
我只是想知道, 1.使用这种XML方法然后MySQL有效吗? 2.在MySql 2表中查找数据,然后查找存储在固定目录中的XML文件,哪个更好?
如果我使用第一种方法,MySql表中会有很多行,其中第二种方法会有人类XML文件(XML文件不会很重,但会有很多XML文件!)
这就是为什么我很困惑什么是更优选的appraoch! 请提出建议!
答案 0 :(得分:1)
这两种方法都有效。你的问题是效率,而不是能力(如果我理解你)。要回答效率问题,您需要了解很多关于应用程序的要求。
以下是一些问题要问自己:
如果您的系统具有较少的更改和查找量,则使用XML具有优势。它定义的数据存储方式更灵活。 XPath查询语言很难学习,但是一旦你擅长它就会很好。但除非你投资安装和学习使用像MarkLogic这样的XML感知服务器,否则它不会很快。它会很慢。
否则,坚持使用MySQL。它具有一些关键优势,包括FULLTEXT
查询功能。
您所做的是所谓“语义网”工作的一部分。您可以对此进行一些阅读,并使用名为“Dublin Core”的方案来表示元数据。很多智力已经开始尝试解决这个问题。尝试解释结果的能力略有下降,这使得学习语义网成为一个艰难的过程,但它仍然值得。
请考虑使用WordPress,Drupal或Joomla等内容管理系统!建立你的第一个版本的系统。您也可以考虑使用MediaWiki或Twiki等wiki平台。
您会发现这些系统很好地支持各种标记(分类)方案。至于搜索:它只是有效。以“{1}}开头的”坚持构建“的Web应用程序会在您获得任何结果之前进行大量重复和枯燥的工作。
如果你正在建造一个游行花车,你可以从一辆卡车开始,而不是一桶螺栓,锯子和一些木材。同样的网站交易。