所以这更像是一个概念性问题。可能有一些基本概念我不明白,所以请指出我理解中的任何错误。
我的任务是设计一个框架,其中一部分是我有一个MySQL数据库和一个充当数据访问层的REST API。现在,用户应该能够解析各种数据(JSON,CSV,XML,文本,源代码等)并将其发送到REST API,后者将数据持久保存到数据库。
问题1:我是否应该指定发送到REST API的所有数据都应该是JSON格式,无论解析什么?这将确保(最好地理解我)语言独立性,并为REST API提供一种通用格式来处理。
问题2:谈到数据模型时,我应该指定什么?它是否像一个模型适合所有类型的东西,或者数据模型是否可以根据传入的数据进行更改?
问题3:当我想到一个关系数据模型时,会想到创建关系的外键思想。现在,某些数据可能根本不包含任何关系。如果我们想到像Customer
Order
那样的数据,那么关系很容易识别。但是,如果数据根本没有任何关系呢?关系模型如何适应这种情况?
非常感谢任何帮助/建议。谢谢!
编辑:
首先,数据可以是结构化的(比如XML)和非结构化的(比如两个文本文件)。我希望DAL能够处理和保存任何数据(这就是为什么我想到了DB前面的REST接口)。
其次,我最近也考虑过将MongoDB作为一个选项进行调查(之前我从未使用过NoSQL DB)。如果REST中的传入数据是JSON,那么使用它是有意义的。根据我的理解,我可以在Mongo中创建一个集合。这比使用Relational DB更有意义吗?
最后,至于我想对数据做什么,我有一个工具,可以对数据进行一种差异分析(想想git diff
)。假设我发送了两个XML文件,该工具从数据库中检索它并执行差异分析并将结果存储回DB中。
根据这些要求,最佳的解决方法是什么?
答案取决于它是什么类型的数据。对于相同的数据,所有这些不同的数据类型是否使用不同的表示法?如果是这样,那么存储在规范化的数据库表中是可行的方法。如果它恰好是任意字符串碰巧有某种形式的编码,那么它最好以raw格式存储。
同样,这取决于你之后想要做什么。您在分析数据,并报告它吗?您正在阅读一种格式并转换为另一种格式吗?在某些符号或其他符号中是否都是某种形式的键值对
如果不了解你想要实现的目标,就无法进一步回答这个问题。