设为首页 收藏本站
查看: 1152|回复: 0

[经验分享] Adhesive框架系列文章--Mongodb数据服务使用实践

[复制链接]

尚未签到

发表于 2015-7-6 06:44:08 | 显示全部楼层 |阅读模式
  在此文中,我们会实践一下,如何使用Mongodb数据服务存储新的自定义数据。之前我们说过了,使用Mongodb数据服务只有4步这么简单:
  1)定义实体
  2)定义元数据
  3)配置Mongodb数据服务
  4)调用API插入数据
  在这里,我们希望使用Mongodb存放书籍借阅的信息:
   public enum Status
{
借出 = 1,
归还 = 2,
丢失 = 3,
}
[MongodbPersistenceEntity("Test", DisplayName = "书籍借阅信息", Name = "Book")]
public class Book
{
[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.AscendingAndUnique, IsPrimaryKey = true)]
[MongodbPresentationItem(ShowInTableView = true, DisplayName = "主键")]
public string ID { get; set; }
[MongodbPersistenceItem(IsTableName = true)]
[MongodbPresentationItem(DisplayName = "部门", ShowInTableView = true)]
public string DeptName { get; set; }
[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Descending, IsTimeColumn = true, ColumnName = "T")]
[MongodbPresentationItem(MongodbSortOption = MongodbSortOption.Descending, DisplayName = "时间", ShowInTableView = true)]
public DateTime ServerTime { get; set; }
[MongodbPresentationItem(DisplayName = "书名", ShowInTableView = true)]
public string Name { get; set; }
[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)]
[MongodbPresentationItem(DisplayName = "借书者",  ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.TextBoxFilter)]
public string UserName { get; set; }
[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)]
[MongodbPresentationItem(DisplayName = "状态变化", ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.DropDownListFilter)]
public Status Status { get; set; }
[MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)]
[MongodbPresentationItem(DisplayName = "书籍分类", ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.CheckBoxListFilter)]
public string Category { get; set; }
[MongodbPresentationItem(DisplayName = "备注")]
public string Memo { get; set; }
}
  其中包含:
  1)主键ID,显示在表格视图中,做唯一索引
  2)部门名,显示在表格视图中,作为表名
  3)书名,显示在表格视图中
  4)时间,显示在表格视图中,倒序排列,倒序索引
  5)借书者,显示在表格视图中,可以通过文本框进行搜索,索引
  6)状态变化,显示在表格视图中,这是一个枚举,可以通过下拉列表进行搜索,索引
  7)书籍分类,显示在表格视图中,可以通过复选框进行搜索,索引
  8)备注,不显示在表格视图中
  并且,我们把这个实体存放在名为Test的分类中,数据库名也就是为Test__Book__年月(分库)。
  
  在定义了数据之后只需调用API插入数据即可:

var book = new Book()
{
DeptName = DeptName.SelectedValue,
ID = Guid.NewGuid().ToString(),
Memo = Memo.Text,
UserName = UserName.Text,
ServerTime = DateTime.Now,
Name = BookName.Text,
Status = (Status)Enum.Parse(typeof(Status), Status.SelectedValue),
Category = BookCategory.Text
};
MongodbService.MongodbInsertService.Insert(book);
  前台:

部门

Tech
Sales
Market

 状态

借出
归还
丢失

 分类
技术书
 书名
《乔布斯传》
 借书者
朱晔
 备注
是一本好书
  
  之前我们说过,为了安全考虑,如果要把数据提交到Mongodb数据服务中,必须在配置服务中进行配置,把类型注册进去,打开配置后台:
DSC0000.png
  进入全局配置中的Mongodb服务配置(也就是客户端配置),进入配置项列表,增加一项:
DSC0001.png
  名字填写类型的完整名,比如Adhesive.Test.WebApp.Book,然后修改类型完整名也为Adhesive.Test.WebApp.Book:
DSC0002.png
  这就完成了客户端的配置,同样对于服务端,进入Mongodb服务端配置节点,再进入服务配置列表
DSC0003.png
  增加一项,命名为Adhesive.Test.WebApp.Book,然后修改类型完整名也为Adhesive.Test.WebApp.Book:
DSC0004.png
  这里大部分配置和客户端配置差不多,可以从“是否提交到数据库”这个配置看出这是服务端的配置。并且可以看到,服务端使用8个线程来提交数据,而客户端只有一个线程。
  至此,我们就可以打开前台提交数据了:
DSC0005.png
  插入一些数据后到后台查看:
DSC0006.png
  点击进入列表视图:
DSC0007.png
  我们插入了三条记录,由于我们在列上定义过搜索的规则,我们可以打开高级数据筛选:
DSC0008.png
  比如,我们只查看状态变化是借出的记录:
DSC0009.png
  我们再添加几条记录,借书者其它名字:
DSC00010.png
  来尝试搜索一下陈锋借出书籍的记录:
DSC00011.png
DSC00012.png
  结果正式我们需要的!
  
  当然,分组统计和数据量统计功能也同样可用:
  
DSC00013.png
DSC00014.png
  数据想怎么看就怎么看!
  
  不需要考虑数据提交时的异步队列、不需要考虑数据的索引、不需要考虑数据的分表分库、不需要考虑数据呈现后台、不需要考虑实现配置,只需要写自己的业务逻辑代码,一切交给Mongodb数据服务。其实Mongodb数据服务主要用来存对内的非业务逻辑的日志、统计和状态数据,因为通用的数据后台完全可以满足我们的需求。在下一篇文章中,我们会介绍如何针对新的数据进行报警的配置。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-83506-1-1.html 上篇帖子: MongoDB在windows下安装配置 下篇帖子: MongoDB学习笔记(入门)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表