mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2024-12-23 23:50:28 -06:00
sketch binding improvement ideas
This commit is contained in:
parent
b144849c77
commit
b6627943e2
100
devdocs/binding_libs/binding_libs.md
Normal file
100
devdocs/binding_libs/binding_libs.md
Normal file
@ -0,0 +1,100 @@
|
||||
# External Bindings
|
||||
|
||||
A binding which is part of any named scenario available to the runtime
|
||||
should be usable in any scenario without having to define them again.
|
||||
|
||||
These are simply known as _external bindings_. This includes bindings
|
||||
from every named scenario at the root level. The syntax for using external
|
||||
bindings is simply the double curly brace, as in `{{name}}`, with the
|
||||
name being a valid binding name as you might add to any bindings section.
|
||||
|
||||
## Structure
|
||||
|
||||
TBD: This section to describe naming, parameters, and the use of basic
|
||||
or extended binding properties.
|
||||
|
||||
Any accessible binding within any named scenario can be referenced as
|
||||
a valid external binding. Specifically, this includes any binding that
|
||||
is defined at the root level within any local (in
|
||||
filesystem) or bundled (in the nb runtime)...
|
||||
|
||||
## Scope
|
||||
|
||||
TBD: This section to describe the file or resource paths which are
|
||||
included by default, and how to extend this otherwise.
|
||||
|
||||
## Parameterizing
|
||||
|
||||
TBD: This section to describe default parameters, naming them, and then
|
||||
overriding them in references.
|
||||
|
||||
## Documenting
|
||||
|
||||
Since YAML doesn't really care much about comments, it is non-trivial to
|
||||
port documentation features into the existing format. Instead, the
|
||||
parsing conventions used by statement forms will be adopted in order to
|
||||
allow some structural elaboration for individual binding recipes.
|
||||
|
||||
Examples of proposed formats:
|
||||
|
||||
```yaml
|
||||
bindings:
|
||||
b1:
|
||||
func: MyTestFunction(p=wow); ToString()
|
||||
desc: This is an example of a binding description
|
||||
examples:
|
||||
- desc: Run my test function with parameter woo
|
||||
func: MyTestFunction('woo')
|
||||
- desc: Run my test function with parameter whee
|
||||
func: MyTestFunction('wee')
|
||||
|
||||
```
|
||||
|
||||
## Enabling
|
||||
|
||||
TBD: This section to describe how to avoid ambiguity when implementing
|
||||
external binding references.
|
||||
|
||||
The syntax for enabling use of external bindings must be mutually
|
||||
exclusive with respect to accessing local bindings. This is important
|
||||
in order to avoid confusing namespace clashes in cases where it is
|
||||
not clear to a user where a binding is coming from. A remedy for
|
||||
localizing binding definitions is below under _importing.
|
||||
|
||||
Bindings from existing examples should be made available to be pulled in
|
||||
to any workload.
|
||||
|
||||
## Examples
|
||||
|
||||
## Globally accessible bindings
|
||||
```yaml
|
||||
statements:
|
||||
s1: "this is my statement with binding {{id}}
|
||||
```
|
||||
|
||||
## Scoped binding refs
|
||||
|
||||
This is an example of using a binding from a specific workload:
|
||||
|
||||
|
||||
```yaml
|
||||
statements:
|
||||
s1: "this is my statement with binding {{filefoo:id}}
|
||||
|
||||
```
|
||||
## Importing Bindings as a new name
|
||||
|
||||
Scenario builders will not always want to be required to modify the op
|
||||
templates when they want to update the bindings. Instead, they may have
|
||||
meaningful and symbolic names which are familiar, and defined as locally
|
||||
resolvable bindings. To facilitate this workflow, binding imports should
|
||||
be supported. This would allow local indirection of a binding to point
|
||||
to an external binding, to be changed in the bindings as needed without
|
||||
touching affected statements directly.
|
||||
|
||||
Example:
|
||||
|
||||
```yaml
|
||||
bindings:
|
||||
myname: {{id}}
|
||||
```
|
Loading…
Reference in New Issue
Block a user