Go语言mongodb go语言mongo( 三 )


创建数据库并不是必须的操作,数据库与集合只有在第一次插入文档时才会被创建,与对数据的动态处理方式是一致的 。简化并加速开发过程,而且有利于动态分配命名空间 。如果担心数据库或集合被意外创建,可以开启严格模式
以上的命令只是简单实例,假设如果你之前没有学习过任何数据库语法,同时开始学sql查询语法和MongoDB 查询语法,你会发现哪一个更简单呢?如果你使用的是java驱动去操作MongoDB,你会发现任何的查询都像Hibernate提供出来的查询方式一样,只要构建好一个查询条件对象,便能轻松查询(接下来会给出示例),博主之前熟悉ES6,所以入手MongoDB js shell完成没问题,也正因为这样简洁,完善的查询机制 , 深深的爱上了MongoDB 。
这里引用的是最新的驱动包,提供了一套新的访问连接方式
这里只举例了简单的链接与简单的MongoDB操作 , 可见其操作的容易性 。使用驱动时是基于TCP套接字与MongoDB进行通信的,如果查询结果较多,恰好无法全部放进第一服务器中,将会向服务器发送一个getmore指令获取下一批查询结果 。
插入数据到服务器时间,不会等待服务器的响应,驱动会假设写入是成功的 , 实际是使用客户端生成对象id,但是该行为可以通过配置配置 , 可以通过安全模式开启,安全模式可以校验服务器端插入的错误 。
开源数据统计平台 -- GoAnalytics本项目用于移动端的数据统计,项目地址:。开源的数据统计countly做的很好,但是基础免费版的功能实在不够看,因此我就决定用go语言来写了这个项目,一来可以在实践中学习go语言,二来也可以开发功能完整的开源平台 。该项目正在开发中,欢迎有兴趣的gopher一起参与 。
数据存储方面使用的是mongodb 。由于数据统计业务几乎不涉及到事务以及严格的一致性场景,而且mongodb的自动分片功能可以支撑较大的数据量 。使用大数据的存储组件的话就太过于重了 。因此选用mongodb 。
业务逻辑整体基于事件的发布订阅 。当收到客户端请求,frontend 会对请求数据进行处理,然后发布响应的事件 。backend 收到事件后进行统计处理 。
后台展示基于Vue-Admin-Template开发,本人前端能力基本就是依葫芦画瓢,希望有前端大神来开发后台页面,项目地址:
目前客户端API仅有2个 。一个是上报 openApp 打开APP时间,一个是上报 usageTime 一次启动使用时长事件 。SDK方面也需要移动端的大神开发,感兴趣的大佬可以一起开发 。
下面放一点后台页面的效果图:
GoAnalytics是基于go实现的一个数据统计平台,用于统计移动端的数据指标 , 比如启动次数、用户增长、活跃用户、留存等指标分析 。前端数据展示项目是goanalytics-web。目前正在积极开发中,欢迎提交新的需求和pull request 。
Go版本需要支持module,本地开发测试
cmd/goanalytics_kafka 和 goanalytics_rmq 是分别基于 kafka 和 rocketmq 的发布订阅功能做的数据发布
和订阅处理,横向扩展能力比 local 高 。另外由于 rocketmq 还没有原生基于 go 的客户端(原生客户端正在开发中
2.0.0 road map ),可能会存在问题 。
项目结构
├── README.md
├── api
│├── authentication用户认证、管理API
│├── middlewaresGIN 中间件
│└── routerAPI route
├── cmd
│├── account生成admin账号命令
│├── analytic_local不依赖消息系统的goanalytics
│├── goanalytics_kafka基于kafak的goanalytics
│├── goanalytics_rmq基于rocketmq的goanalytics

推荐阅读