This chapter introduce the whole structure of the gStore system project.
The whole architecture of gStore system is presented in Architecture. The thread model of 'ghttp' can be viewed in EN and ZH, which shows the relationship among main process, sever thread, query thread and so on. The flow of answering a SPARQL query is given in SPARQL Processing, and the subprocess, which only targets at the BGP(Basic Graph Pattern) processing, is drawed in BGP Processing.
Database/ (calling other core parts to deal with requests from interface part)
Database.cpp (achieve functions)
Database.h (class, members and functions definitions)
Join.cpp (join the node candidates to get results)
Join.h (class, members and functions definitions)
Strategy.cpp
Strategy.h
KVstore/ (a key-value store to swap between memory and disk)
KVstore.cpp (interact with upper layers)
KVstore.h
ISArray/
ISArray.cpp
ISArray.h
ISBlockManager.cpp
ISBlockManager.h
ISEntry.cpp
ISEntry.h
ISTree/
ISTree.cpp
ISTree.h
heap/ (a heap of nodes whose content are in memory)
ISHeap.cpp
ISHeap.h
node/ (all kinds of nodes in B+-tree)
ISIntlNode.cpp
ISIntlNode.h
ISLeafNode.cpp
ISLeafNode.h
ISNode.cpp
ISNode.h
storage/
ISStorage.cpp
ISStorage.h
IVArray/
IVArray.cpp
IVArray.h
IVBlockManager.cpp
IVBlockManager.h
IVCacheManager.cpp
IVCacheManger.h
IVEntry.cpp
IVEntry.h
IVTree/
IVTree.cpp
IVTree.h
heap/ (a heap of nodes whose content are in memory)
IVHeap.cpp
IVHeap.h
node/ (all kinds of nodes in B+-tree)
IVIntlNode.cpp
IVIntlNode.h
IVLeafNode.cpp
IVLeafNode.h
IVNode.cpp
IVNode.h
storage/
IVStorage.cpp
IVStorage.h
SITree/
SITree.cpp
SITree.h
heap/ (a heap of nodes whose content are in memory)
SIHeap.cpp
SIHeap.h
node/ (all kinds of nodes in B+-tree)
SIIntlNode.cpp
SIIntlNode.h
SILeafNode.cpp
SILeafNode.h
SINode.cpp
SINode.h
storage/
SIStorage.cpp
SIStorage.h
Query/ (needed to answer SPARQL query)
BasicQuery.cpp (basic type of queries without aggregate operations)
BasicQuery.h
IDList.cpp (candidate list of a node/variable in query)
IDList.h
ResultFilter.cpp
ResultFilter.h
ResultSet.cpp (keep the result set corresponding to a query)
ResultSet.h
SPARQLquery.cpp (deal with a entire SPARQL query)
SPARQLquery.h
Varset.cpp
Varset.h
QueryCache.cpp
QueryCache.h
QueryTree.cpp
QueryTree.h
GeneralEvaluation.cpp
GeneralEvaluation.h
TempResult.cpp
TempResult.h
RegexExpression.h
Signature/ (assign signatures for nodes and edges, but not for literals)
SigEntry.cpp
SigEntry.h
Signature.cpp
Signature.h
VSTree/ (an tree index to prune more efficiently)
EntryBuffer.cpp
EntryBuffer.h
LRUCache.cpp
LRUCache.h
VNode.cpp
VNode.h
VSTree.cpp
VSTree.h
Parser/
DBParser.cpp
DBParser.h
RDFParser.cpp
RDFParser.h
SparqlParser.c (auto-generated, subtle modified manually, compressed)
SparqlParser.h (auto-generated, subtle modified manually, compressed)
SparqlLexer.c (auto-generated, subtle modified manually, compressed)
SparqlLexer.h (auto-generated, subtle modified manually, compressed)
TurtleParser.cpp
TurtleParser.h
Type.h
QueryParser.cpp
QueryParser.h
Util/
Util.cpp (headers, macros, typedefs, functions...)
Util.h
Bstr.cpp (represent strings of arbitrary length)
Bstr.h (class, members and functions definitions)
Stream.cpp (store and use temp results, which may be very large)
Stream.h
Triple.cpp (deal with triples, a triple can be divided as subject(entity), predicate(entity), object(entity or literal))
Triple.h
BloomFilter.cpp
BloomFilter.h
ClassForVlistCache.h
VList.cpp
VList.h
Server/ (client and server mode to use gStore)
Client.cpp
Client.h
Operation.cpp
Operation.h
Server.cpp
Server.h
Socket.cpp
Socket.h
client_http.hpp
server_http.hpp
web/
To acquire a deep understanding of gStore codes, please go to Code Detail. See use case to understand the design of use cases, and see OOA and OOD for OOA design and OOD design, respectively.
If you want to know the sequence of a running gStore, please view the list below:
It is really not strange to see something different with the original design in the source code. And some designed functions may have not be achieved so far.
The api/ folder in gStore is used to store API program, libs and examples, please go to API for details. And test/ is used to store a series test programs or utilities, such as gtest, full_test and so on. Chapters related with test/ are How To Use and Test Result. This project need an ANTLR lib to parse the SPARQL query, whose code is placed in tools/(also archived here) and the compiled libantlr.a is placed in lib/ directory.
We place some datasets and queries in data/ directory as examples, and you can try them to see how gStore works. Related instructions are in How To Use. The docs/ directory contains all kinds of documents of gStore, including a series of markdown files and two folders, pdf/ and jpg/. Files whose type is pdf are placed in pdf/ folder, while files with jpg type are placed in jpg/ folder.
You are advised to start from the README in the gStore root directory, and visit other chapters only when needed. At last, you will see all documents from link to link if you are really interested in gStore.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。