Release v0.28.0
We are delighted to bring a number of improvements to GraphScope, alongside the GraphScope 0.28.0 release. This release contains many important features and improvements to GraphScope FLEX、gsctl
command-line utility、Graph Interactive Engine (GIE) and Groot persistent storage.
We highlight the following improvements included in this release:
1. FLEX Interactive
New functionality:
gsctl
- Support to deploy and destroy Interactive instance by
gsctl instance deploy/destroy --type interactive
- Support to build Interactive image by
gsctl flexbuild interactive --app docker
- Support connect and manage Interactive resource(schema, data loading, stored procedure) by
gsctl
- Support to deploy and destroy Interactive instance by
- Add Metadata store for interactive, and provide file-based implementation
- Release Interactive Java/Python SDK
- Support string type as vertex primary key
- Support devloping interactive in graphscope dev container.
Refactor
- Clean the data directory if bulk loading fails
- Adapt to the new schema and data type definition
- Fix signal handling and compiler launching
- Upgrade arrow version
- Refactor and reorganize the stored procedure interface.
2. Enhancements for GIE
Integrated GOpt, a new graph-native query optimizer, into GIE to boost query performance, featuring:
- Various heuristic optimization rules in Rule-Based Optimization (RBO), such as NotMatchToAntiJoinRule,FilterIntoJoinRule,FilterMatchRule, ExpandGetVFusionRule etc.
- A new Cost-Based Optimizer (CBO) leveraging high-order statistics for optimal plan selection.
- Enhanced s-t pathfinding with CBO to enable more efficient bidirectional searches.
More details can be reffered in the paper and doc.
Support some new functionality, including:
- elementId() to obtain the inner id of graph vertices or edges in Cypher and Gremlin
- support CASE WHEN in Cypher
- values() or valueMap() to obtain properties of each element in path in Gremlin
More details can be referred in Cypher Support Doc and Gremlin Support Doc.
3. Enhancements for Groot
- Support add properties to existed label #3887
Docker Images
# Flex Interactive image
docker pull registry.cn-hongkong.aliyuncs.com/graphscope/interactive:0.28.0
# Coordinator Image
docker pull registry.cn-hongkong.aliyuncs.com/graphscope/coordinator:0.28.0
# Graph Analytical Engine(GAE) Image
docker pull registry.cn-hongkong.aliyuncs.com/graphscope/analytical:0.28.0
# Frontend component of Graph Interactive Engine(GIE) image
docker pull registry.cn-hongkong.aliyuncs.com/graphscope/interactive-frontend:0.28.0
# Executor component of Graph Interactive Engine(GIE) image
docker pull registry.cn-hongkong.aliyuncs.com/graphscope/interactive-executor:0.28.0
# Graph Learning Engine(GLE) Image
docker pull registry.cn-hongkong.aliyuncs.com/graphscope/learning:0.28.0
# GraphScope persistent storage, user can only perform GIE query on it.
docker pull registry.cn-hongkong.aliyuncs.com/graphscope/graphscope-store:0.28.0
# Develop Image
docker pull registry.cn-hongkong.aliyuncs.com/graphscope/graphscope-dev:latest
What's Changed
- fix(python): filetype should be in read_options by @siyuan0322 in #3683
- fix(interactive): Introduce Calcite-Based CBO Optimizer in GIE Compiler by @shirly121 in #3672
- fix(interactive): Support Intersect with PathExpand in GIE Runtime by @BingqingLyu in #3600
- feat(learning): Integrate GLTorch with GraphScope in Server-Client Mode with K8S Deployment Supports by @husimplicity in #3624
- fix(interactive): Support Gremlin Subquery in Calcite-Based IR Layer by @shirly121 in #3636
- fix(interactive): Support Optional Match in Graph Optimizer by @shirly121 in #3687
- Pre-release v0.28.0 by @lidongze0629 in #3686
- fix(interactive): add
MovieTest
in the new compilation stack by @BingqingLyu in #3690 - feat(interactive): Support stopping query service by @zhanglei1949 in #3698
- refactor(interactive): Return the correct http code by @zhanglei1949 in #3700
- refactor(interactive): Support Arithmetic Operations on Temporal Types by @shirly121 in #3701
- feat(interactive): support adding a store pod as a backup by @siyuan0322 in #3703
- fix(interactive): Concurrent compact by @bufapiqi in #3706
- fix: Add mocking examples for Portal CI test by @lidongze0629 in #3691
- fix(interactive): Clean data_dir when bulk_loader fails or cancelled by @zhanglei1949 in #3705
- Update README.md by @wenyuanyu in #3714
- chore: fix CI problems by @siyuan0322 in #3712
- refactor(interactive): Introduce MetaDataStore for Interactive and provide file-based implementation by @zhanglei1949 in #3696
- fix(interactive): Fix Bug of Duplicated Plan Id Generation After Failover by @shirly121 in #3710
- fix(interactive): Make rust log location conform to LOG_DIR environment variable. by @siyuan0322 in #3716
- fix(analytical): make clustering support undirected graph by @acezen in #3715
- fix(learning): Update graphlearn-torch image version by @husimplicity in #3721
- build(python): adjust the networkx version by @haoxins in #3463
- fix(interactive): Integrate multi-pod and one-pod charts into one. by @siyuan0322 in #3720
- feat(python): Unify the graph level load_from and save to API & Bump up vineyard to v0.22.0 by @acezen in #3610
- fix(interactive): Support Gremlin Match in Calcite-Based IR Layer by @shirly121 in #3694
- fix(interactive): Identify pk when it is fused with other predicates in IRCore by @BingqingLyu in #3723
- fix(interactive): add a simpler
PhysicalPlanPrinter
in Insight Runtime by @BingqingLyu in #3733 - fix(interactive): Fix Interactive CI test by @zhanglei1949 in #3738
- refactor(interactive): Add plugin loading test by @zhanglei1949 in #3743
- refactor(interactive): add plugin into graph meta by @zhanglei1949 in #3744
- feat(interactive): Adapt to new data type definition by @zhanglei1949 in #3749
- feat(interactive): Adapt to new unified schema by @zhanglei1949 in #3725
- fix(interactive): Make sure admin service always return response in
application/json
by @zhanglei1949 in #3752 - chore: adapt to unified schema by @siyuan0322 in #3750
- refactor(interactive): Remove
is_builtin
in GraphMeta by @zhanglei1949 in #3754 - fix(interactive): Fix some implementation of MetaService by @zhanglei1949 in #3759
- refactor(interactive): Support
elementId
Operator to Get Node Identifier in Cypher by @shirly121 in #3758 - fix(learning): Automate graphlearn-torch docker-build by @husimplicity in #3753
- feat(interactive): Introduce Interactive Java/Python SDK by @zhanglei1949 in #3602
- fix(interactive): add error handling during file operations by @liulx20 in #3763
- fix(analytical): Fix
MessageStrategy
customization for java apps by @zhanglei1949 in #3762 - fix(interactive): Fix Bugs of
count()
in Gremlin Based on Calcite-IR Layer by @shirly121 in #3751 - fix(interactive): Fix waiting compiler ready by @zhanglei1949 in #3770
- fix(interactive): Fix Bugs of
Where Subquery
in Gremlin by @shirly121 in #3757 - fix(interactive): put pegasus hosts to configmap.yaml by @siyuan0322 in #3777
- fix(interactive): Fix interactive doc and image building by @zhanglei1949 in #3767
- chore: Export realtime write and submitting query metrics in groot by @siyuan0322 in #3776
- feat(interactive): Implement API get_graph_schema for AdminService by @zhanglei1949 in #3780
- fix(interactive): Fix signal handling for interactive by @zhanglei1949 in #3764
- fix(interactive): Support Join of Path Expand in Compiler & Runtime by @shirly121 in #3747
- refactor(interactive): Add more detail tracer for query handler by @zhanglei1949 in #3782
- fix(interactive): Do not use otel java agent to reduce export size by @siyuan0322 in #3784
- fix(interactive): Fix the bug of plugin not being deleted when deleting graph by @zhanglei1949 in #3785
- fix(interactive): support a general
Intersect
implementation in GIE Runtime by @BingqingLyu in #3689 - feat(interactive): Add current running graph meta info in
GetServiceStatus
API's response. by @zhanglei1949 in #3793 - fix(interactive): Resolve bulk_loader path discovery issue by @zhanglei1949 in #3795
- chore: Support connecting to uptrace in kubernetes cluster. by @siyuan0322 in #3796
- fix(interactive): force flush epoch after reopened rocksdb by @siyuan0322 in #3797
- fix(interactive): Fix some issues of AdminService by @zhanglei1949 in #3761
- fix(interactive): refine rust otel export by @siyuan0322 in #3810
- fix(interactive): Fix bug in
ExpandGetVFusionRule
, and optimize whenGetV
has imprecise types by @BingqingLyu in #3804 - chore: Add estimate memory usage command for gsctl by @siyuan0322 in #3816
- fix(interactive): Refine
generate_sdk.sh
for interactive by @zhanglei1949 in #3807 - fix(interactive): throw unsupported exception for multi-edge patterns in GOpt by @BingqingLyu in #3805
- fix(interactive): Minor fix for interactive service by @zhanglei1949 in #3827
- chore: add an example of mpi-operator by @siyuan0322 in #3828
- fix(interactive): Fix c++ procedure gen and codegen by @zhanglei1949 in #3835
- feat(interactive): Track the start_time of
hqps_service
and return inget_service_status
by @zhanglei1949 in #3838 - docs: Update the domain name of GraphScope PlayGround by @lidongze0629 in #3825
- fix(learning): Adjust setting for ack cluster by @husimplicity in #3842
- fix(interactive): Remove dummy code by @zhanglei1949 in #3840
- fix(interactive): Support identical plugin names for distinct plugins across graphs. by @zhanglei1949 in #3846
- feat(interactive): Refine
AppBase
and refactor procedure calling, implement call_proc in SDK by @zhanglei1949 in #3815 - fix(interactive): Fix Bugs of Type Inference in
PathExpand
by @shirly121 in #3837 - fix(interactive): Introduce Statistics Interface Abstraction in MetaData by @BingqingLyu in #3843
- fix(interactive): Fix submitting cpp procedure with raw input format by @zhanglei1949 in #3850
- fix(interactive): Fix
stored_procedure
parsing in old-version schema and refactor CI by @zhanglei1949 in #3853 - fix(interactive): Fix CI and add
list_graphs
test by @zhanglei1949 in #3858 - fix(interactive): Fix Bugs of Primary Key Identification in Gremlin Queries by @shirly121 in #3830
- fix(interactive): Support using string as primary key by @zhanglei1949 in #3857
- fix(interactive): Fix
creation_time
error by @zhanglei1949 in #3851 - fix(interactive): avoid introduce pb to stored procedure by @liulx20 in #3861
- fix(learning): enable glt in config by @husimplicity in #3852
- fix(interactive): Fix interactive
openapi.yaml
by @zhanglei1949 in #3867 - fix(interactive): Minor fix: service status is stopped after initialized. by @zhanglei1949 in #3871
- fix(interactive): Install
nlohmann/json.hpp
as it is needed by procedure compilation by @zhanglei1949 in #3872 - fix(interactive): Fix Bugs of GOpt Caused By Multiple Filters of Single Vertex by @shirly121 in #3831
- fix(interactive): add
memory level
option for interactive server by @liulx20 in #3877 - fix(interactive): fix the compact thread count by @siyuan0322 in #3882
- refactor(interactive): Refine Interactive SDK
call_proc
API design by @zhanglei1949 in #3881 - Update Latest News on README.md by @yecol in #3885
- feat(analytical): Support using customized writable as vdata,edata for Giraph apps by @zhanglei1949 in #3873
- fix(interactive): Introduce API to Get Meta Data From Remote Service by @shirly121 in #3879
- fix(interactive): persist latest kafka queue offset before stopped by @siyuan0322 in #3800
- fix(analytical): Fix java sdk support for builtin libs by @zhanglei1949 in #3884
- feat(interactive): Implement the
get_graph_statistics
for AdminService by @zhanglei1949 in #3859 - feat(interactive): Release interactive java/python sdk by @zhanglei1949 in #3886
- fix(interactive): Support add property with exist label by @bufapiqi in #3887
- fix(interactive): Fix
get_service_status
returns "stopped" after service initialized by @zhanglei1949 in #3888 - fix(interactive): Support Path Expand Until Condition in Gremlin-Calcite by @shirly121 in #3878
- refactor: reorganize the Coordinator and gsctl to adapt to the unified schema on FLEX Interactive by @lidongze0629 in #3718
- fix(interactive): support
CaseWhen
in GIE runtime by @BingqingLyu in #3868 - fix(interactive): Support Nested Map in Compiler & Runtime to Facilitate Queries like
select('a', 'b').by(valueMap())
by @shirly121 in #3839 - fix(interactive): Fix Type Inference Bugs in Path Expand After Optimization by @shirly121 in #3889
- fix(interactive): update the integration tests in GOpt-based compilation by @BingqingLyu in #3786
- refactor(interactive): Upgrade arrow to 15.0.2 by @zhanglei1949 in #3892
- ci: Auto release gsctl wheel package and Interactive image by @lidongze0629 in #3901
- fix(python): Decode the k8s node selector and convert it as a dict. by @dashanji in #3477
- fix(interactive): Fix parsing empty edge_type list when creation graph by @zhanglei1949 in #3902
- fix(interactive): fix backup conflict checking, refine log recycling by @siyuan0322 in #3909
- refactor(interactive): Revision interactive from 0.0.3 to 0.3 by @zhanglei1949 in #3905
- docs(interactive): Add document about
column_mapping
by @zhanglei1949 in #3912 - fix(interactive): Check the number of edge properties when creating graph schema by @zhanglei1949 in #3916
- fix(interactive): Support Statistics in Groot Storage by @BingqingLyu in #3856
- feat: Start the service when switching graph context on Interactive by @lidongze0629 in #3910
- fix(interactive): Fix Result Parser Issue of Gremlin
select('a', 'b').by(valueMap())
by @shirly121 in #3919 - fix(interactive): Refine Query Timeout Configuration in GIE Doc by @shirly121 in #3917
- fix(interactive): Fix Gremlin Alias Issue in GraphBuilder by @shirly121 in #3918
- fix(interactive): Fix Errors Caused by Conflict Merge With Main by @shirly121 in #3921
- fix(interactive): consider path direction in path concat by @BingqingLyu in #3920
- fix(interactive): Fix python sdk packing by @zhanglei1949 in #3928
- fix(interactive): append query type in graph_db_ic_handler by @liulx20 in #3932
- fix(interactive):
sync_to_file
not work whenswap
called by @liulx20 in #3933 - fix(interactive): Avoid redundant traversal when building lf_indexer by @liulx20 in #3934
- fix(interactive): Fixed bug that wasted disk space by @yqylh in #3929
- fix(interactive): close csr and free memory after dumped by @liulx20 in #3936
- fix(interactive): Allow duplicate vertices and edge with invalid vertex id in source data by @liulx20 in #3939
- feat(interactive): supports multithreaded bulk loading by @liulx20 in #3943
- fix(interactive): Fix a bug in Groot
values.yaml
by @BingqingLyu in #3955 - ci: fix some problems in Flex Interactive CI by @lidongze0629 in #3931
- fix(interactive): Support specifying vertex/edge properties as null by @zhanglei1949 in #3956
- feat(interactive): add
use-mmap-vector
andbuild-csr-in-mem
option for bulk loading by @liulx20 in #3957 - chore: update the invitation link of dingtalk by @siyuan0322 in #3960
- refactor(interactive): Unify
devcontainer.json
of graphscope-dev and flex by @zhanglei1949 in #3866 - fix(interactive): Add
data_source
in schema_mapping by @zhanglei1949 in #3953 - Fix typos by @co63oc in #3951
- fix: support deploy, destroy instance by gsctl by @lidongze0629 in #3963
- ci: find the gsctl wheel package correctly by @lidongze0629 in #3968
- fix(interactive): Only allow using of
var_char
andlong_text
on edge property for string type by @zhanglei1949 in #3967 - fix(analytical): Fix ret type of
getIntData
andgetDoubleData
for arrow fragment java wrapper by @zhanglei1949 in #3969 - fix(interactive): Fix ref column creation issues by @zhanglei1949 in #3970
- fix(interactive): Fix bugs in Gremlin
expr
Grammar by @shirly121 in #3958 - fix(interactive): Support NULL Value in expression in GIE Runtime by @BingqingLyu in #3972
- refactor(interactive): Support timezone info for timestamp type. by @zhanglei1949 in #3975
- fix(interactive): add tcp write time & fix block mode by @lnfjpt in #3976
- fix(interactive): Implement
HttpIrMetaReader
to Get Meta Data From Remote Http Service by @shirly121 in #3908 - feat(interactive): support multiple properties on edge by @liulx20 in #3962
- feat(interactive): Support project the properties of elements in Path in GOpt by @BingqingLyu in #3941
- fix(interactive): Introduce 'mimalloc' as an alternative memory allocator in GIE Backend by @BingqingLyu in #3946
- feat(interactive): Automatically upload local file when bulk loading by @zhanglei1949 in #3966
- fix: correct nslookup behavior for Groot helm charts by @lidongze0629 in #3974
- fix(interactive): Support std::string as member of Any and rename kString to kStringView by @liulx20 in #3979
- fix: fix VERSION not found in gsctl by @lidongze0629 in #3983
- fix(interactive): fix some update interface not work by @liulx20 in #3987
- fix(learning): fix graph-learn CI by @LiSu in #3985
- fix(CI): differentiate how protobuf is found in mac and linux in graph-learn cmakelist by @LiSu in #3993
- fix(interactive): handle the case when meta or statistics are not ready in GOpt by @BingqingLyu in #3986
- refactor(interactive): Add more options to
LoadingConfig
by @zhanglei1949 in #4000 - refactor(interactive): Support customizing ports when deploy interactive in local mode and connect via SDK by @zhanglei1949 in #3990
- fix(interactive): Fix some bug of interactive admin service by @zhanglei1949 in #3938
- ci: fix analytical engine CI by @lidongze0629 in #3996
New Contributors
Full Changelog: v0.27.0...v0.28.0