gpt4 book ai didi

mongodb - 如何在 REST API 中管理数据库版本

转载 作者:行者123 更新时间:2023-12-04 02:26:55 25 4
gpt4 key购买 nike

假设我有一个名为 APPO v1 的移动应用程序,它从 REST API v1 获取资源。 APPO v1大约有数千名用户
现在我正在使用 API v2 开发 APPO v2。 api 和 app 都有新的功能和数据库中的新字段。一些字段也被修改。
API v1 数据库架构:

{
"user_id": NumberLong(616),
"name": "XYZ",
"city":"Dhaka"
"password": "raw password: 12345678",
"gender": ""
}
API v2 数据库架构:
{
"user_id": "STRING HASH",
"name": "XYZ",
"address":"98/3 Circle road, Dhaka 1209"
"password": "MD5 HASH",
"NEW_FIELD": NumberLong(5)
"ANOTHER_FIELD": ""
}
变化:
  • 用户 ID 的数据类型已更改
  • 短城市名称替换为地址字符串
  • 密码格式已更改
  • 性别字段被删除
  • 添加了一些新字段

  • 如何处理数据库?
    我的解决方案 1: 通过 v1 和 v2 分隔 DB。重新格式化 v1 并粘贴到 v2
    解决方案 1 的问题: 所有用户都不会在一天内更新应用程序。如果 v1 用户将他们的应用更新到 v2,他们可能会丢失最近的数据。我必须在两个数据库之间做一个同步器
    我的解决方案 2: 由于我的应用程序 v1 使用原始密码,我必须立即保留它。我应该把这两个 SCHEMA
    {
    "user_id": NumberLong(616),
    "user_id_hash": "STRING HASH",
    "name": "XYZ",
    "city":"Dhaka"
    "address":"98/3 Circle road, Dhaka 1209"
    "password": "raw password: 12345678"
    "password_md5": "MD5 FORMAT",
    "gender": ""
    "NEW_FIELD": NumberLong(5)
    "ANOTHER_FIELD": ""
    }
    解决方案2的问题: 当版本大于10或更多时会产生巨大的垃圾。在 v10 我不需要 v6,v5.......v1 数据
    注意:字段与 REST 模型无关。所有都是这种情况的示例字段
    我完全不知道如何处理。我非常感谢您的耐心和您的建议!
    提前致谢!

    最佳答案

    如果您不想对数据库进行非规范化,我有一个解决方案。您可以使用桥接模式解决此问题。当您有相同类型的多个问题/实现(API v1 & API v2...等),但客户端将只连接一个实现(例如 API v1 )时,您需要实现一个桥接对象,它会理解,在哪里放置客户端,我的意思是需要实现。从技术上讲,您必须分别为每个问题编写业务逻辑,但只有一个 REST Api 就足以将客户端重定向到该实现。谢谢

    关于mongodb - 如何在 REST API 中管理数据库版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29361488/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com