HubbleDotNet 軟體架構

來源:互聯網
上載者:User
文章目錄
  • Data 子模組
  • Data Structure 子模組
  • Entity
  • IO
  • Net
  • Serialization
  • Threading
  • Cache
  • Data
  • DBAdapter
  • Global
  • Index
  • Query
  • Right
  • Service
  • SFQL
  • Store
  • StoredProcedure

HubbleDotNet 目前已經有很多使用者,但大部分使用者還僅僅停留在使用層面,真正深入去研究和瞭解的人不是很多。作為一個開源項目,HubbleDotNet 除了可以提供應用的需要外,其本身的代碼對希望瞭解資訊檢索和底層軟體開發技術的開發人員也應該有一定的參考作用。為了方便對這方面感興趣的開發人員閱讀和理解 HubbleDotNet 的代碼,我把HubbleDotNet 的軟體設計架構公布出來,供大家參考。HubbleDotNet中文社區 目前還不是很活躍,主要還是我一個人在回答其他網友的提問,我希望對這方面有興趣的網友在深入瞭解了HubbleDotNet 的內部機制後,可以更多的參與到這個社區的建設中來,眾人拾柴火焰高。

 

軟體架構圖

 

 

如所示:HubbleDotNet 的軟體架構包括了如下幾個模組

1. Hubble.Framework

2. Hubble.Core

3. Hubble.Analysis

4. Hubble.SQLClient

5. QueryAnalyzer

6. HubbleTask

下面我分別介紹這幾個模組

 

Hubble.Framework

這個模組提供支撐 HubbleDotNet 核心代碼運行底層演算法。這個模組包括 Data, Entity, IO 等子模組,分別司職不同的功能。下面把一些主要的子模組大概介紹一下:

Data 子模組

這個模組主要是提供一些資料庫訪問的 Provider。目前包括 OLEDB , SQLSERVER 和 SQLITE 的 Provider

Data Structure 子模組

這個模組包括了一些基礎資料結構,比如

DFA (有窮自動機) 

Cache (緩衝的泛型類)

FingerPirntDictionary (資訊指紋字典)

HeapSort (堆排序, 包括部分堆排序演算法)

VInt(Int 序列的可變位元組碼壓縮)

VLong(Long 序列的可變位元組碼壓縮)

QuickSort(快速排序,包括部分快速排序演算法)

還有一些演算法,我這裡不再列舉,有興趣的可以直接去看代碼。

Entity

這個子模組提供核心演算法要用到的一些實體類。

IO

這個子模組提供了一些對IO操作的類封裝。和.net 的IO 模組不同的是,這裡提供的是一些面嚮應用的進階類封裝,比如記錄檔類,塊狀記憶體流等等。

Net

這個子模組提供網路訪問的類封裝。HubbleDotNet 的遠端存取和分散式查詢都要依賴於這個模組中提供的類。

Serialization

這個子模組提供一些核心演算法需要的自訂序列化類別,倒排索引的序列化依賴於這個模組的支援。

Threading

這個子模組提供多線程下的一些線程同步和管理方面的功能類。比如訊息佇列,多線程計算,共用獨佔鎖。

 

Hubble.Core

這個模組是整個HubbleDotNet 軟體系統的最核心模組,所有的資訊檢索方面的核心演算法都在這個模組中實現。同樣這個模組也有很多子模組。

Cache

這個子模組用於管理查詢快取(Query Cache)

Data

這個子模組是Core 模組的商務邏輯部分,所有的操作比如 Insert, Update, Delete 等的商務邏輯實現都在這個子模組完成。

DBAdapter

這個子模組提供資料配接器的介面以及一些HubbleDotNet 內建的資料庫適配器。資料庫適配器是HubbleDotNet 和關聯式資料庫互動的介面,任何資料來源都可以通過實現IDBAdapter 這個介面來和HubbleDotNet 對接。有關如何建立和安裝自己的資料庫適配器的方法,請參考 串連 Oracle 資料庫 

Global

這個子模組負責全域配置和一些全域的方法

Index

這個子模組負責對全文進行倒排索引,所有的索引演算法都在這個子模組實現

Query

這個子模組實現各種搜尋演算法,所有的搜尋演算法比如 Match, Contains, Like 等都在這個子模組實現

Right

這個子模組完成使用者權限管理和認證功能

Service

這個子模組實現一些後台服務,包括HubbleDotNet的核心功能的後台服務調用入口以及Task Schedule 後台服務。整個後台部分的入口就在這個模組。

SFQL

這個子模組完成對SFQL  結構化全文檢索查詢語言的解析。所有的SQL語句的解析都在這個模組完成。這個模組還包括詞法分析,文法分析,語義分析等幾個子模組。

Store

這個子模組負責索引儲存相關的操作。倒排索引的讀寫和最佳化都在這個子模組中完成。

StoredProcedure

這個子模組包含所有的系統預存程序。

 

Hubble.Analysis

這個模組實現分詞器和HubbleDotNet 的介面。HubbleDotNet 是一個開發的系統,使用者可以用HubbleDotNet 內建的 英文分詞,Apsara Distributed File System分詞和簡單分詞對全文進行分詞,也可以通過實現 IAnalyzer 介面安裝自己開發的分詞器。關於自訂分詞器的安裝方面的文章,過幾天我將提供。

 

Hubble.SQLClient

這個是 HubbleDotNet 的用戶端訪問類,他的功能和 Ado.Net 的 SqlClient 的功能是類似的,提供訪問HubbleDotNet 伺服器的用戶端支援。這個模組包括

HubbleCommand 和 HubbleConnection 兩個資料訪問類,這個兩個類分別從 System.Data.Common.DbCommand 和 System.Data.Common.DbConnection 兩個基類繼承,其調用方法和ADO.Net 的其他Provider 如SQL SERVER 的SqlCommand 和 SqlConnection 的使用方法是類似的,非常容易使用。

另外Hubble.SQLClient 模組還提供了資料緩衝的子模組,用於用戶端資料的緩衝,以提供系統並發能力和查詢速度。

 

QueryAnalyzer

這個是 HubbleDotNet 提供的一個查詢工具,這個工具可以協助你對HubbleDotNet 伺服器進行維護和管理。這個查詢工具沒有使用任何特殊的介面,它就是一個標準的HubbleDotNet 用戶端應用,很多HubbleDotNet 的功能都可以參考這個模組的代碼來實現。

 

HubbleTask

HubbleTask.exe 是服務側核心代碼的調用容器,由於 Hubble.Core.dll 是一個動態庫,所以它必須通過一個exe 檔案調用才能夠被使用。這個模組沒有太多特殊的功能,只是負責把Hubble.Core.dll 調起來。

HubbleService

HubbleService.exe 是HubbleDotNet 的後台服務,這個可執行檔的功能更簡單,它只負責HubbleTask.exe 啟動和關閉。

 

返回 HubbleDotNet 技術詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.