-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LFX: Coprocessor Plugin #9747
Labels
lfx-program
sig/coprocessor
SIG: Coprocessor
type/enhancement
The issue or PR belongs to an enhancement.
Comments
This was referenced Mar 7, 2021
|
Make sure that this is not an issue: rust-lang/rust#62874 |
We could disable building copr plug-in on macOS. |
This was referenced Mar 28, 2021
This was referenced Apr 16, 2021
This was referenced Apr 27, 2021
This was referenced May 21, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
lfx-program
sig/coprocessor
SIG: Coprocessor
type/enhancement
The issue or PR belongs to an enhancement.
Description
TiKV is the storage component in the TiDB ecosystem, however, the distribution computation principle suggests that computation should be as close to the data source as possible. Therefore, TiKV has embedded a subset of the TiDB executor framework to push down some computation tasks when applicable.
But TiKV's capability should be far beyond that, as many distributed components can be built on top of TiKV, such as cache, full-text search engine, graph database, and NoSQL database. And same as TiDB, this product will also like to push down specific computation to TiKV, which requires the coprocessor to be customizable, aka pluggable.
For instance, a full-text searching engine will persist the original document and n-gram index on TiKV. It'll be a waste of resources if we read back and then update the index from a client. On the contrary, the coprocessor plugin can generate the index from the original document, and update the index in place. What's more, the coprocessor plugin can perform an index scan directly on TiKV.
Document Collection
LFX Program information
Milestones and action items
TiKvConfigfor the new coprocessor. The new config should specify (multiple) plugins that are loaded at startup. Also add new config to config-template.toml. Plugins are loaded from the local file system. Make sure to document the config option here: https://docs.pingcap.com/tidb/stable/tikv-configuration-filetikv::server::service::kv::Service.The old coprocessor's module is located in coprocessor. The module of the new coprocessor will be called
coprocessor_v2.copr_namefield of the proto request.Implement timeout mechanism for coprocessor request.Note: Now that we don't use a transaction manager anymore for the first milestone, a timeout mechanism doesn't make sense because transactions can't deadlock.
plugin_apicrate for coprocessor (should not have any dependencies).CoprocessorPlugintrait that a plugin has to implement like in the POC. In the POC, this is calledEndpoint, but I'll usePluginin this document to avoid confusion with the new coprocessor endpoint.plugin_api::RawStoragetrait that follows a subset of functions fromtikv::storage::Storage. The API design is provided in the RFC.impl plugin_api::RawStorage for tikv::storage::Storagesomewhere in the new coprocessor endpoint.dylibwith thelibloadingcrate.plugin_apiand plugin.copr_version_constraintis violated.dylib.The text was updated successfully, but these errors were encountered: