HubbleDotNet Software Architecture

Source: Internet
Author: User
Document directory
  • Data submodule
  • Data Structure submodule
  • Entity
  • IO
  • Net
  • Serialization
  • Threading
  • Cache
  • Data
  • DBAdapter
  • Global
  • Index
  • Query
  • Right
  • Service
  • SFQL
  • Store
  • StoredProcedure

HubbleDotNet already has many users, but most of them are still at the usage level. There are not many people who really study and understand HubbleDotNet deeply. As an open-source project, HubbleDotNet not only provides application requirements, but also provides its own code for developers who want to understand information retrieval and underlying software development technologies. To help developers interested in this aspect read and understand the HubbleDotNet code, I will publish the software design architecture of HubbleDotNet for your reference. The Chinese community of HubbleDotNet is not very active yet. I am answering questions from other netizens. I hope that after having a deep understanding of the internal mechanism of HubbleDotNet, more people can participate in the construction of this community.

 

Software Architecture

 

 

As shown in: the software architecture of HubbleDotNet includes the following modules:

1. Hubble. Framework

2. Hubble. Core

3. Hubble. Analysis

4. Hubble. SQLClient

5. QueryAnalyzer

6. HubbleTask

Below I will introduce these modules respectively

 

Hubble. Framework

This module supports HubbleDotNet core code to run underlying algorithms. This module includes Data, Entity, IO, and other sub-modules, which provide different functions. The following describes some major sub-modules:

Data submodule

This module mainly provides some database access providers. Currently, providers of OLEDB, SQLSERVER, and SQLITE are included.

Data Structure submodule

This module includes some basic data structures, such

DFA)

Cache (Cache generic class)

FingerPirntDictionary (Information fingerprint dictionary)

HeapSort (heap sorting, including some heap sorting algorithms)

VInt (variable bytecode compression for Int sequences)

VLong (variable bytecode compression for Long series)

QuickSort (quick sorting, including some quick sorting algorithms)

There are also some algorithms. I will not list them here. If you are interested, you can directly look at the code.

Entity

This submodule provides some entity classes required for Core algorithms.

IO

This submodule provides class encapsulation for IO operations. Different from the. net IO module, this module provides some advanced application-oriented class packages, such as log files and block memory streams.

Net

This sub-module provides class encapsulation for network access. The remote access and Distributed Query of HubbleDotNet depend on the classes provided in this module.

Serialization

This submodule provides custom serialization classes required by some core algorithms. serialization of inverted indexes depends on the support of this module.

Threading

This submodule provides some thread synchronization and management functions under multiple threads. Such as message queue, multi-thread computing, and shared exclusive lock.

 

Hubble. Core

This module is the core module of the entire HubbleDotNet software system. All core information retrieval algorithms are implemented in this module. This module also has many sub-modules.

Cache

This submodule is used to manage the Query Cache)

Data

This sub-module is the business logic part of the Core module. All operations such as Insert, Update, and Delete are implemented in this sub-module.

DBAdapter

This sub-module provides data adapter interfaces and some database adapters that come with HubbleDotNet. The database adapter is an interface for interaction between HubbleDotNet and relational databases. Any data source can be connected to HubbleDotNet by implementing the IDBAdapter interface. For how to create and install your own database adapter, see connect to an Oracle database

Global

This submodule is responsible for global configuration and some global methods.

Index

This sub-module is responsible for inverted indexing of the full text. All the index algorithms are implemented in this sub-module.

Query

This submodule implements various search algorithms. All search algorithms such as Match, Contains, and Like are implemented in this submodule.

Right

This submodule completes user permission management and authentication.

Service

This sub-module implements some background services, including the background service call entry for the core functions of HubbleDotNet and the background service of Task Schedule. The portal of the entire background part is in this module.

SFQL

This submodule parses the SFQL structured full-text query language. All SQL statements are parsed in this module. This module also includes several sub-modules, including lexical analysis, syntax analysis, and semantic analysis.

Store

This sub-module is responsible for index storage operations. Read/write and optimization of inverted indexes are completed in this submodule.

StoredProcedure

This sub-module contains all system stored procedures.

 

Hubble. Analysis

This module implements the interfaces of the word divider and HubbleDotNet. HubbleDotNet is a developed system. You can use the English word segmentation, pangu word segmentation, and simple word segmentation that comes with HubbleDotNet. You can also install the self-developed word divider through the IAnalyzer interface. I will provide an article on the installation of the custom word divider in a few days.

 

Hubble. SQLClient

This is the terminal class of the HubbleDotNet client. Its functions are similar to those of the SqlClient of Ado. Net, providing client support for accessing the HubbleDotNet server. This module includes

HubbleCommand and HubbleConnection are two data classification classes, which are respectively from System. data. common. dbCommand and System. data. common. dbConnection inherits two base classes, including the call method and ADO. other providers of. Net, such as SQL SERVER's SqlCommand and SqlConnection, are used in a similar way and are very easy to use.

In addition, the Hubble. SQLClient module also provides a sub-module for data caching on the client to provide system concurrency and query speed.

 

QueryAnalyzer

This is a query tool provided by HubbleDotNet. It helps you maintain and manage HubbleDotNet servers. This query tool does not use any special interface. It is a standard HubbleDotNet client application. Many HubbleDotNet functions can be implemented by referring to the code of this module.

 

HubbleTask

HubbleTask.exe is the call container for Core code on the Service side. Because Hubble. Core. dll is a dynamic library, it must be called through an exe file before it can be used. This module does not have many special functions, but is responsible for calling Hubble. Core. dll.

HubbleService

HubbleService.exe is the backend service of HubbleDotNet. This executable file is more simple, and only hubbletask.exe is responsible for starting and disabling HubbleDotNet.

 

Return to HubbleDotNet technical details

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

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.