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