我目前正在处理一个项目,其中有一个非常不寻常的需求,希望能得到一些建议,以便最好的方法来处理它,甚至可以提供一些指针来帮助我建立一个解决方案。
好的,这就是我需要做的。应用程序存储和管理各种类型的媒体文件,但每个应用程序的部署都具有完全不同的媒体文件元数据要求。
这些元数据可以包含任意数量的不同类型的字段(单行文本、多行文本、复选框、选定值等),通常需要验证,特别是存在性和唯一性验证。
应用程序需要能够轻松检索值,并且最重要的是必须能够处理这些字段的完整搜索功能。
我考虑的一种选择是使用属性列表排列,其中数据库表仅包含每个媒体文件的每个元数据字段的属性名称和值。然而,在原型设计此解决方案时,很快变得明显,当数据库可能相当大时,即使对于记录的搜索和检索而言,它也不能足够高效,例如最近的部署有3000个媒体文件,有超过20个元数据字段。此外,执行搜索和检索相关记录的查询很快变得非常复杂。
系统当前使用的另一种选择是预先定义元数据配置,并在部署期间运行迁移以创建具有标准名称的表和模型,以便媒体模型可以与其关联,然后系统将使用该模型。这通常工作得很好,但它确实会导致一些重大的部署和测试问题。
例如,当您不知道配置信息直到部署时,编写单元测试变得更加具有挑战性。虽然我可以编写一个示例配置并通过那样来测试代码,但它不允许我测试特定部署的具体要求。
同样,在开发中,它目前需要我将配置文件中的迁移复制到主文件夹中,并运行它,进行所有的测试和开发,然后我必须记住回滚并从主文件夹中删除该迁移,以使应用程序处于标准状态。当我进行错误修复并需要将应用程序置于特定配置以进行测试和调试时,这尤其具有挑战性。尝试在各种配置之间切换成为一个真正的噩梦。
理想情况下,我希望能够在服务器启动时从配置文件动态创建包括验证等在内的表格和模型。更好的情况是,如果我可以在一个数据库中维护多个元数据设置,并且每个设置都有自己的表格,那么我只需要改变应用程序当前使用的配置文件即可在它们之间切换。
我相信这可以通过Rails来实现,但在过去几天的研究中,我找到的关于如何构建它的信息非常少,因此任何帮助或建议将不胜感激!