【发布时间】:2023-01-15 09:42:00
【问题描述】:
我的目的是构建 api json 验证器,它将根据预定义的 json 模式验证大量请求。
基本上可以将模式预处理为关系数据库,这取决于我的选择,我们希望获得最佳性能。
json 模式是动态的,可能会从一个 api 更改为另一个: 其中一种模式的示例:
{
"key": "key",
"method": "POST",
"query_params": [
{
"name": "query_params_field1",
"types": ["String"],
"required": true
},
{
"name": "query_params_field2",
"types": ["String"],
"required": true
}],
"headers": [{
"name": "header_field1",
"types": ["String", "Long" ], //....
"required": false
},
{
"name": "header_field2",
"types": ["String"],
"required": true
}], // ....
"body": [
{
"name": "email",
"types": ["String", "Email" ], // ....
"required": true
},
{
"name": "arr",
"types": ["Array"],
"required": true
} ...
]
}
// example of API request fits to will schema
{
"key": "key",
"method": "POST",
"query_params": [],
"headers": [
{
"name": "header_field1",
"value": "xxxxxxxxxxx"
} ...
],
"body": [
{
"name": "email",
"value": "myemail@email.com"
},
{
"name": "arr",
"value": [
{
"city": "nyc",
"street": "my street"
},
{
"city": "paris",
"street": "abcd"
} ...
]
}
]
}
我们可以看到这个请求没有通过验证,因为它在 query_params 中缺少字段,
如果类型不适合,它也可能会失败。
基本上我已经通过代码实现了它并且它可以工作,但是现在请求的规模变得巨大〜(5K /秒)并且模式的数量也增加了,所以我正在考虑使用一些数据库来存储这种模式并以最佳性能对数据库进行验证。 假设数组中的类型数量可能会发生变化并变得更大
我的问题是更多的架构和一般选择哪个数据库?
我在考虑 2 使用 mongo,因为它是本机文档/json 或像 Cassandra 这样的“列 DB”,但它需要做一些预处理并在按列之前扁平化模式,所以我会有很多重复数据。
我知道有一些权衡,比如存储/缩放等。
我想了解他们并据此决定选择哪个数据库或
甚至可能是另一种解决方案,如内存中(键值)?
【问题讨论】:
标签: mongodb caching database-design cassandra architecture