首页 文章

Mongo DB跟踪DDL的变化

提问于
浏览
0

我是Mongo DB的新手 . 我来自RDBMS / MPP / ETL背景,我使用的大多数数据存储都有关于对象的元数据(表格视图等) . 我怀疑是Mongo DB特有的 . 它有任何数据字典吗?像Oracle user_tables或者有关集合的任何其他元信息,因为MongoDB是一个架构较少的DB,因此应用程序可以更改插入数据而不需要更改架构,因此应用程序可以在运行ETL作业之前找到任何结构更改,这对于涉及MongoDb很重要 . 搜索字典或跟踪DDL变化的任何API信息,没有发现任何内容 . 任何人都可以引导我查看与此相关的链接或信息 . 如果没有这样的选项,可以采取更好的最佳做法,以避免这些模式演变

谢谢Anoop R.

2 回答

  • -1

    使用Mongodb的一个优点是它的架构较少的存储文档结构 . 现在,与RDBMS表字典不同,该模式存在于MongoDb用户的应用程序层中 . 这使得应用程序可以灵活地设计/更改模式,无需等待任何alter语句依赖项 .

    虽然说Mongodb 3.2引入了模式验证,但3.4丰富了它 . 您可以在此处了解有关验证的更多信息Mongodb document validation . 验证规则是使用validator选项在每个集合的基础上指定的,该选项采用指定验证规则或表达式的文档 .

    关于模式验证的注意事项不是跟踪ddl的变化,而是 Build 一个商定的定义 .

  • 0

    我得到了一个实际上并不是我想要的解决方案但是我认为我们可以使用它来管理

    数据类型的默认核对表

    key_type_default_count = {
        int: 0,
        float: 0,
        str: 0,
        bool: 0,
        dict: 0,
        list: 0,
        set: 0,
        tuple: 0,
        None: 0,
        object: 0,
        unicode: 0,
        "other": 0,
    }
    

    自定义代码获取mongo连接

    client = create_mongo_con(v_env,v_con_name)
    print client
    
    db = client[v_db_name]
    collection = db[v_collection]
    

    主要代码

    key_type_count = defaultdict(lambda: dict(key_type_default_count))
    
    
    mongo_collection_docs = collection.find({},{"_id":0}).limit(30)
    #print mongo_collection_docs'
    print type(mongo_collection_docs)
    
    for doc in mongo_collection_docs:
    
        for key, value in doc.items():
            print ' my key '+str(key)
            print 'my value is '+str(value)
            print ' my value type '
            print type(value)
            if type(value) in key_type_count[key].keys():
                key_type_count[key][type(value)] += 1
            else:
                key_type_count[key]["other"] += 1
        total_docs += 1`
    

    你可以从我得到这个想法的地方详细介绍这个https://github.com/nimeshkverma/mongo_schema但是那段代码不起作用 . 我编辑了一些部分,现在我能够生成一个像这样的漂亮输出
    enter image description here

    但现在我面临一个问题,所有的字符串字段被检测为unicode . 我需要弄明白这将发布如果我们得到一个解决方案 . 如果任何人在python中遇到与str和unicode相同的问题请评论

相关问题