天天看點

Adhesive架構系列文章--Mongodb資料服務使用實踐

在此文中,我們會實踐一下,如何使用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);      

前台:

部門
        <asp:DropDownList ID="DeptName" runat="server">
            <asp:ListItem>Tech</asp:ListItem>
            <asp:ListItem>Sales</asp:ListItem>
            <asp:ListItem>Market</asp:ListItem>
        </asp:DropDownList>
        &nbsp;狀态
        <asp:DropDownList ID="Status" runat="server">
            <asp:ListItem>借出</asp:ListItem>
            <asp:ListItem>歸還</asp:ListItem>
            <asp:ListItem>丢失</asp:ListItem>
        </asp:DropDownList>
        &nbsp;分類
        <asp:TextBox ID="BookCategory" runat="server">技術書</asp:TextBox>
        &nbsp;書名
        <asp:TextBox ID="BookName" runat="server">《喬布斯傳》</asp:TextBox>
        &nbsp;借書者
        <asp:TextBox ID="UserName" runat="server">朱晔</asp:TextBox>
        &nbsp;備注
        <asp:TextBox ID="Memo" runat="server">是一本好書</asp:TextBox>      

之前我們說過,為了安全考慮,如果要把資料送出到Mongodb資料服務中,必須在配置服務中進行配置,把類型注冊進去,打開配置背景:

Adhesive架構系列文章--Mongodb資料服務使用實踐

進入全局配置中的Mongodb服務配置(也就是用戶端配置),進入配置項清單,增加一項:

Adhesive架構系列文章--Mongodb資料服務使用實踐

名字填寫類型的完整名,比如Adhesive.Test.WebApp.Book,然後修改類型完整名也為Adhesive.Test.WebApp.Book:

Adhesive架構系列文章--Mongodb資料服務使用實踐

這就完成了用戶端的配置,同樣對于服務端,進入Mongodb服務端配置節點,再進入服務配置清單

Adhesive架構系列文章--Mongodb資料服務使用實踐

增加一項,命名為Adhesive.Test.WebApp.Book,然後修改類型完整名也為Adhesive.Test.WebApp.Book:

Adhesive架構系列文章--Mongodb資料服務使用實踐

這裡大部配置設定置和用戶端配置差不多,可以從“是否送出到資料庫”這個配置看出這是服務端的配置。并且可以看到,服務端使用8個線程來送出資料,而用戶端隻有一個線程。

至此,我們就可以打開前台送出資料了:

Adhesive架構系列文章--Mongodb資料服務使用實踐

插入一些資料後到背景檢視:

Adhesive架構系列文章--Mongodb資料服務使用實踐

點選進入清單視圖:

Adhesive架構系列文章--Mongodb資料服務使用實踐

我們插入了三條記錄,由于我們在列上定義過搜尋的規則,我們可以打開進階資料篩選:

Adhesive架構系列文章--Mongodb資料服務使用實踐

比如,我們隻檢視狀态變化是借出的記錄:

Adhesive架構系列文章--Mongodb資料服務使用實踐

我們再添加幾條記錄,借書者其它名字:

Adhesive架構系列文章--Mongodb資料服務使用實踐

來嘗試搜尋一下陳鋒借出書籍的記錄:

Adhesive架構系列文章--Mongodb資料服務使用實踐
Adhesive架構系列文章--Mongodb資料服務使用實踐

結果正式我們需要的!

當然,分組統計和資料量統計功能也同樣可用:

Adhesive架構系列文章--Mongodb資料服務使用實踐
Adhesive架構系列文章--Mongodb資料服務使用實踐

資料想怎麼看就怎麼看!

不需要考慮資料送出時的異步隊列、不需要考慮資料的索引、不需要考慮資料的分表分庫、不需要考慮資料呈現背景、不需要考慮實作配置,隻需要寫自己的業務邏輯代碼,一切交給Mongodb資料服務。其實Mongodb資料服務主要用來存對内的非業務邏輯的日志、統計和狀态資料,因為通用的資料背景完全可以滿足我們的需求。在下一篇文章中,我們會介紹如何針對新的資料進行報警的配置。

作者:

lovecindywang

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀