广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB 表结构分析工具介绍 -- Variety
  • 508
分享到

MongoDB 表结构分析工具介绍 -- Variety

2024-04-02 19:04:59 508人浏览 薄情痞子
摘要

今天给大家介绍一款分析mongoDB数据库表结构的软件 -- Varity.对于MonGoDB这种Schema Free的数据库来说,用软件自带的查询collection中存储的数据情况很难一眼就看出具体的

今天给大家介绍一款分析mongoDB数据库表结构的软件 -- Varity.对于MonGoDB这种Schema Free的数据库来说,用软件自带的查询collection中存储的数据情况很难一眼就看出具体的数据结构,Tomá Dvoák 作者写了一个Variety.js的脚本就很容易理解没个collection中的数据结构。作者将工具托管在GitHub上,并且欢迎任何人来提供建议或者添加功能。以下Variety的特点翻译自作者的博客:


collection信息输出格式是ASCII的。

  • 可以很清晰看到每个key使用的是什么类型的数据格式

  • 可以看到没个key在这个collection的使用率是多少

  • 可以限制documents的查询数量

  • 可以限制查询documents的深度

  • 可以只分析documents的子集

  • 可以对查询结果排序

  • 可以保存查询结果

  • 可以以JSON格式输出

  • 工具简介易用,没用任何其他库依赖

Variety的下载地址 https://github.com/variety/variety。


使用方法:


mongo DATABASE_NAME --eval "var collection = 'COLL_NAME' " variety.js,比如我的DATABASE_NAME 是test, COLL_NAME是users,


我事先插入的数据是

db.users.insert({name: "Tom", bio: "A nice guy.", pets: ["monkey", "fish"], someWeirdLegacyKey: "I like Ike!"});
db.users.insert({name: "Dick", bio: "I sWordfight.", birthday: new Date("1974/03/14")});
db.users.insert({name: "Harry", pets: "egret", birthday: new Date("1984/03/14")});
db.users.insert({name: "Shanker", bio: "a va?"});


正常的查询Users的回显是这样的


> db.users.find()
{ "_id" : ObjectId("56cfc28fbdae9b9a922a19cb"), "name" : "Tom", "bio" : "A nice guy", "pets" : [  "monkey",  "fish" ], "someWeirdLegacyKey" :                                                                                     "I like ike!" }
{ "_id" : ObjectId("56cfc2acbdae9b9a922a19cc"), "name" : "Dick", "bio" : "I swordfight." }
{ "_id" : ObjectId("56cfc2c6bdae9b9a922a19cd"), "name" : "Harry", "pets" : "egret" }
{ "_id" : ObjectId("56cfc2e0bdae9b9a922a19ce"), "name" : "Shanker", "bio" : "caca" }


用Variety查询结果是这样的

mongo test --eval "var collection = 'users'" variety.js
MongoDB shell version: 2.4.9
connecting to: test
Variety: A MongoDB Schema Analyzer
Version 1.5.0, released 14 May 2015
Using collection of "users"
Using query of { }
Using limit of 4
Using maxDepth of 99
Using sort of { "_id" : -1 }
Using outputFORMat of "ascii"
Using persistResults of false
Using resultsDatabase of "varietyResults"
Using resultsCollection of "usersKeys"
Using resultsUser of null
Using resultsPass of null
Using plugins of [ ]
+--------------------------------------------------------------------+
| key                | types                | occurrences | percents |
| ------------------ | -------------------- | ----------- | -------- |
| _id                | ObjectId             |           4 |    100.0 |
| name               | String               |           4 |    100.0 |
| bio                | String               |           3 |     75.0 |
| pets               | String (1),Array (1) |           2 |     50.0 |
| someWeirdLegacyKey | String               |           1 |     25.0 |
+--------------------------------------------------------------------+

是不是格式很友好,很容易读懂了呢?


如果数据库用的不是默认端口,可以用--port参数:

mongo DATABASE_NAME --port 27111 --eval " var collection = 'COLL_NAME' " variety.js


如果db文件不在默认文件,可以用--dbpath参数:

mongo DATABASE_NAME --dbpath /path/to/database/folder --eval "var collection = 'COLL_NAME' " variety.js


如果需要对查询进行排序的话可以这样用:

mongo DATABASE_NAME --eval "var collection = 'COLL_NAME', sort = { date : -1 }" variety.js


如果需要JSON的输出格式的话可以这样用:

mongo DATABASE_NAME --eval "var collection = 'users', outputFormat = 'json' " variety.js


如果一个collection有10亿个数据,我们可以限制查询的数量,用limit来限定:


mongo DATABASE_NAME --eval "var collection ='users', limit = 1000 " variety.js

如果某个colletions嵌套的层数太多了,可以用maxDepth来限制查询:


db.users.insert({name:"Walter", someNestedObject:{a:{b:{c:{d:{e:1}}}}}});
[ibmcloud@bravo:~/variety04:05]$mongo test --eval "var collection = 'users' " variety.js
MongoDB shell version: 2.4.9
connecting to: test
Variety: A MongoDB Schema Analyzer
Version 1.5.0, released 14 May 2015
Using collection of "users"
Using query of { }
Using limit of 5
Using maxDepth of 99
Using sort of { "_id" : -1 }
Using outputFormat of "ascii"
Using persistResults of false
Using resultsDatabase of "varietyResults"
Using resultsCollection of "usersKeys"
Using resultsUser of null
Using resultsPass of null
Using plugins of [ ]
+----------------------------------------------------------------------------+
| key                        | types                | occurrences | percents |
| -------------------------- | -------------------- | ----------- | -------- |
| _id                        | ObjectId             |           5 |    100.0 |
| name                       | String               |           5 |    100.0 |
| bio                        | String               |           3 |     60.0 |
| pets                       | String (1),Array (1) |           2 |     40.0 |
| someNestedObject           | Object               |           1 |     20.0 |
| someNestedObject.a         | Object               |           1 |     20.0 |
| someNestedObject.a.b       | Object               |           1 |     20.0 |
| someNestedObject.a.b.c     | Object               |           1 |     20.0 |
| someNestedObject.a.b.c.d   | Object               |           1 |     20.0 |
| someNestedObject.a.b.c.d.e | Number               |           1 |     20.0 |
| someWeirdLegacyKey         | String               |           1 |     20.0 |
+----------------------------------------------------------------------------+
[ibmcloud@bravo:~/variety05:06]$mongo test --eval "var collection = 'users', maxDepth = 3" variety.js
MongoDB shell version: 2.4.9
connecting to: test
Variety: A MongoDB Schema Analyzer
Version 1.5.0, released 14 May 2015
Using collection of "users"
Using query of { }
Using limit of 5
Using maxDepth of 3
Using sort of { "_id" : -1 }
Using outputFormat of "ascii"
Using persistResults of false
Using resultsDatabase of "varietyResults"
Using resultsCollection of "usersKeys"
Using resultsUser of null
Using resultsPass of null
Using plugins of [ ]
+----------------------------------------------------------------------+
| key                  | types                | occurrences | percents |
| -------------------- | -------------------- | ----------- | -------- |
| _id                  | ObjectId             |           5 |    100.0 |
| name                 | String               |           5 |    100.0 |
| bio                  | String               |           3 |     60.0 |
| pets                 | String (1),Array (1) |           2 |     40.0 |
| someNestedObject     | Object               |           1 |     20.0 |
| someNestedObject.a   | Object               |           1 |     20.0 |
| someNestedObject.a.b | Object               |           1 |     20.0 |
| someWeirdLegacyKey   | String               |           1 |     20.0 |
+----------------------------------------------------------------------+


如果需要制定条件的查询,比如carddAbout为true的,可以这样:

mongo DATABASE_NAME --eval "var collection = 'COLL_NAME', query = {'caredAbout':true}" variety.js

需要注意的是,Variety在对数据结构进行分析的时候,实际是用mapReduce来做的,会进行全表扫描操作,所以如果是对线上库进行分析,那么建议最好使用一个不提供服务的备份库或者在业务低峰来做。避免给线上业务造成压力。



参考地址:

Http://www.acetolyne.net/Projects7/node/48

https://github.com/variety/variety

http://www.mongoing.com/arcHives/2282



您可能感兴趣的文档:

--结束END--

本文标题: MongoDB 表结构分析工具介绍 -- Variety

本文链接: https://www.lsjlt.com/news/44098.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB 表结构分析工具介绍 -- Variety
    今天给大家介绍一款分析MongoDB数据库表结构的软件 -- Varity.对于MongoDB这种Schema Free的数据库来说,用软件自带的查询collection中存储的数据情况很难一眼就看出具体的...
    99+
    2022-10-18
  • 在线更改MySQL表结构工具gh-ost的特点介绍
    无触发器:这也是其他工具最受诟病之处。触发器方案会对MySQL的性能造成比较大的影响,严重时甚至会拖垮主库。 轻量级:gh-ost获取数据表修改操作的方法是伪装成从库连入,获取并解析二...
    99+
    2022-11-30
    mysql gh-ost 介绍
  • 如何分析工具perf的介绍与使用
    这期内容当中小编将会给大家带来有关如何分析工具perf的介绍与使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。测试环境:Ubuntu16.04 + Kernel:4.4.0-31apt-get...
    99+
    2023-06-05
  • 查询日志分析工具pt-query-digest详细介绍
    下面一起来了解下查询日志分析工具pt-query-digest,相信大家看完肯定会受益匪浅,文字在精不在多,希望查询日志分析工具pt-query-digest这篇短内容是你想要的。pt-query-dige...
    99+
    2022-10-18
  • 网络安全流量分析工具蚁剑详细介绍
    目录1. 未加密流量形式2. RSA 加密3. Base64 加密4. cHr 加密5. 其他25号那一天,冰蝎恰好更新到了 4.0 版本,当时引得流量监控的老哥很紧张,告诉我要看好...
    99+
    2022-11-13
  • 数据分析 | 数据可视化图表,BI工具构建逻辑
    本文源码:GitHub·点这里 || GitEE·点这里一、数据可视化1、基础概念数据可视化,是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽取出来的信息,包括相应信息单位的各种属性和变量。...
    99+
    2023-06-02
  • 基于Java的数据库结构维护工具Dzo 3.0的示例分析
    基于Java的数据库结构维护工具Dzo 3.0的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Dzo 是一个数据库的小工具,用以帮助维护不同的数据库结构,当前支持 My...
    99+
    2023-06-17
  • 苹果电脑MacBook M1芯片安装SPSS(数据分析工具)教程详细介绍:保姆级教程!!!
    首先声明此文章仅供帮助学习的朋友安装使用SPSS软件,不许用于任何商业性行为。 1.下载安装包部分2.MAC M1操作部分3.SPSS安装过程部分软件安装部分文件更换部分 4.SPSS软件功能调整部分感谢 特别强调:在安装过...
    99+
    2023-08-16
    数据分析 macos 数据挖掘
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作