一個面向文檔數據庫的類ORM庫:Biggy

jopen 10年前發布 | 12K 次閱讀 Biggy 持久層框架

Biggy面向.NET,與Node的NeDB數據庫相當。此后,它發展成為一個類ORM庫,但遵循文檔數據庫的準則。表面看來,開發人員使用的似乎是正常的列表。但這些列表是由一個基于文檔的存儲層提供支持,比如:

  • 在磁盤上的JSON文件中(每個記錄類型T一個文件)
  • 使用內置的JSON數據類型存儲在Postgres數據庫中
  • 使用普通文本存儲在SQL Server中
  • </ul>

    其它存儲選項,如MongoDB和Azure Table Storage,目前正在開發之中。

    下面是一個例子,在Postgres中新建一個名為“products”的表,并把一條記錄存入其中:

    var products = new PGList<Product>("tekpub", "products");
    var newProduct = new Product();
    //添加到表中
    products.Add(newProduct);

    由于所有記錄的副本都存儲在內存中,所以可以完全在內存中使用正常的LINQ查詢。但如果需要更強大一點的功能,則可以針對特定的行啟用全文搜索。

    要實現這一點,開發人員需要將FullText特性應用到他想索引的屬性上。這會在表創建的時候“將該列中的文本分離出來”,以便單獨對它進行索引。此后,就可以在它上面進行全文搜索。

    應用場景

    顯然,開發人員不應該使用這樣一個東西將整個數據庫保存在內存中。它主要用于Rob Conery所說的“輸入數據”。這類數據很少發生變化,而且需要即時提供,如產品目錄。從這種意義上講,Biggy很像一個可更新的緩存。

    Biggy總是實時可用,這是它與緩存的最大不同之一。典型的設計模式是,在應用程序啟動的時候,把整個表從磁盤或數據庫加載到內存中。在一些基礎的基本問題測試中,Biggy能夠在1秒鐘內從Postgres加載10萬條記錄。

    不過,它確實有一些與緩存相同的局限。例如,如果同時運行一個應用程序的多個實例,那么沒有辦法使內存中的實例保持同步。

    項目主頁:http://www.baiduhome.net/lib/view/home/1395321888663

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!