►
From YouTube: Magento Architectural Discussion -- September, 18, 2019
Description
- GraphQL custom attributes container
- Changes in product pricing GraphQL schema
Meeting minutes: https://github.com/magento/architecture/issues/273
B
Okay,
so
the
proposal
is
related
to
custom
attributes
in
graph
QL,
specifically
like
AV
a
tribute,
and
the
problem
is
in
some
gentle
installations.
You
may
have
tens
of
thousands
of
Eevee
attribute
and
those
attributes
usually
belong
to
thousands
of
attribute
set
and
just
to
clarify
so
attribute
set,
is
representation
of
specific
product
type,
so,
let's
say
t-shirt
will
have
100
set.
B
Shoes
will
have
different
attribute
set
and
if
store
is
seven
thousands
of
different
product
types
and
it's
possible
that
there
will
be
tens
of
thousands
of
be
attributed
defined
by
merchants
in
the
store
and
the
problem
is
when
we
try
to
search
products
in
catalog.
We
do
not
know
in
advance
what
attribute
sets
those
products
will
belong
to.
So
when
you
search
for
the
read
product
or
some
other
keyword,
you
never
know
what
kind
of
product
will
be
presented
in
results
and
also,
as
you
may
know,
graph
kill
doesn't
support
like
get
all
fields.
B
B
How
can
you
get
all
those
ten
thousands
of
attributes
of
the
dynamic?
You
can
use
introspection
on
product
interface
since
currently
released
all
IVA
tributes
infrastructure
in
product
interface?
You
can
get
a
list
where
introspection,
but,
as
I
say
like
it
is
not
solving
the
issue
completely
because
criticize
will
be
huge
in
this
case.
B
So
proposed
solution
is
to
introduce
container
called
custom
attributes
and
it
will
contain
array
of
attributes
each
attribute.
You
have
code
and
string
value
string
value
is
actually
JSON
encode
into
an
encoded
value
of
custom
attribute.
So
in
case
of
actual
attribute
value,
beam
of
type
string.
You
will
just
get
string
because
gesture
on
college
student
is
a
string
in
case
of
array.
You
will
get
just
json
encoded
already.
B
B
So
flat
representation
of
custom
attributes
in
product
interface,
category
customer
or
other
alien
entities
will
remain
intact
for
now,
so
you
will
be
able
to
query
all
attributes.
All
custom
attributes
is
in
container
or
you
can
explicitly
list
all
necessary
fields,
and
in
this
case
you
will
get
type
check
by
schema
and
it
is
just
better
for
performance
and
it's
necessary
to
keep
in
mind
that
we're
in
all
attributes
like
with
this
container
may
have
performance
impact
and
that's
why
basically
graph
kill,
does
not
you'll
command.
Heaven
get
all
data
by
default.
B
So
this
is
a
proposed
solution
and
also
some
alternatives
which
were
considered.
One
is
persistent,
persisted
queries
which
is
not
implemented
yet,
but
we
have
talked
for
it
and
persisted
clearly.
Basically,
there
are
like
two
different
varieties:
one
is
server-side
persisted
queries
which
are
defined
by
admin
and
serve
as
white
list
of
allowed
queries
for
this
specific
gravity
or
API.
B
The
client
will
have
to
know
hashes,
which
map
to
specific
queries
and
then
client
sends
hash
and
server
identifies
what
query
was
expected
to
be
executed
and
execute
this
query,
this
type
of
persisted
queries
solve
those
attacks,
plats
and
basically
it
potentially
prevents
execution
of
heavy
queries,
because
admin
of
the
of
the
side
decides
what
queries
are
allowed
on.
The
specific
mention,
for
instance,
second
type
of
persistent
queries
is
client
side
persisted
queries.
This
is
when
client
sends
query
initially
to
the
server
and
server
gives
the
client
cash
for
this.
B
B
The
main
issue
is
that
the
client
has
to
send
P,
which
query
list
in
tens
of
thousands
of
attributes
and
in
case
of
client
client-side,
persisted
queries.
We
can
avoid
this
for
all
subsequent
requests,
so
it
will
still
be
a
problem
for
the
first
request,
but
for
all
subsequent
various,
the
actual
request
will
be
replaced
with
the
hash.
B
Additionally,
to
improve
to
improve
flexibility
and
a
lot
of
support
for
complex
structures
or
custom
attributes,
we
can
introduce
type
like
over
here,
so
it
will
be
custom
attribute
and
then
field
called
type,
and
it
will
it's
possible
to
give
some
hint
to
the
client
how
exactly
to
decode
the
value
received
in
here.
So
if
we
want
to
support
some
own
objects
or
other
complex
types,
it's
possible
to
extend
the
schema
for
now,
I,
don't
think
we
should
do
it.
Probably
we
can
extend
it
later.
If
you
have
some
relatives
cases
for
you.
B
Additionally,
value
of
custom
attribute
like
this
value.
I
can
have
more
strict
type,
so
it
can
be
not
shrink,
it
can
be
say
Union
or
some
other
type
again,
it's
possible
to
consider
this
later.
But
if
somebody
has
use
cases
which
definitely
require
Maastricht
type
here
we
can,
we
can
consider
it
and
the
last
option
you
had
was
to
eliminate
flat
structure,
listing
all
custom
attributes
under
product
interface
directly
and
other
evil
entities
and
completely
rely
on
the
containers
from
now.
B
We
believe
that
this
will
cause
they've,
experienced
degradation
and
that's
why
we
do
not
want
to
go
this
route
and
we
also
don't
see
how
we
give
any
benefit
for
production
deployments,
because
if
you
do
not
query
those
fields,
they
will
not
be
fresh.
So
basically,
whoever
needs
container.
They
will
use
container
where,
when
it's
specific
pill
strictly
defined
fields,
they
will
use
those
fields.
B
B
And
it
will
remain
the
same,
but
I
thought
you.
You
mean
to
get
subset
of
applicable
attributes
for
products,
so
that
will
not
be
supported
for
now,
we're
not
going
to
provide
any
filter,
say:
okay,
one
of
the
options
could
be
to
have
filter
over
here.
So
we
can
provide
arguments
for
custom
attributes
and
say
give
me
just
color,
but
again
as
I
say,
it
doesn't
make
sense
because
you
have
access
to
color
by
in
the
color
field
director.
B
B
D
B
So
what
okay
is
talking
about
is
this
statement
which
alternatives
considered.
We
can
actually
talk
to
double
team,
and
I
am
team,
will
be
the
first
clients
or
this
and
see
they
need
type
if
they
I
just
don't
want
to
introduce
fields,
if
we
don't
actually
need
them,
and
it's
much
easier
to
introduce
new
fields
later
than
to
duplicate
it
and
remove
it.
If
you
don't
need
it.
Okay,.
E
B
C
C
E
D
Problem
here
is
you
don't
know
which
attributes
you
have
to
request?
In
the
same
time,
we
definitely
know
that
our
products
as
usual
do
not
have
as
so
many
attributes.
So
we
are
pretty
safe.
We
don't
want
to
return
millions
of
actually
this
parish.
In
the
same
time,
examples
it's
a
tree
mentioned
deplete.
You
cannot
predict
attribute
set
of
products
as
you'll
be
returned
by
yourself.
Oh.
B
B
A
C
D
B
D
Disagree:
v6
because
these
attributes
motivate
a
you
always
know
that
this
is
not
something
that
can
be
changed
frequently
in
case
we.
We
will
move
this
data
into
this
container.
We
lose
this
possibility
and
we
always
will
have
to
perform
some
logic
to
ET
Achebe's
metadata.
At
the
same
time,
it
will
increase
the
size
of
response
significantly
because
with
each
API
Goods,
we
will
have
to
the
tool
man
sound
flex.
B
Discussions
for
advanced
search,
so
we
need
to
figure
out
what
Hills
should
be
rendered
on
advanced
search
page,
and
we
also
need
some
kind
of
metadata
query
which
will
which
will
allow
to
return
all
applicable
fields.
So
we
might
have
one
video
there
and
then
we
can
probably
have
not
a
query
for
getting
attributes
applicable
for
product
listing
page.
C
B
A
B
B
B
E
D
D
D
For
the
prices,
because
we
need
this
information
to
to
show
it
on
store
phones,
a
minimum
and
maximum
price
is
a
particular
example
of
a
month
under
price
which
is
pretty
similar
to
what
we
have
right
now
is
the
red
word,
price,
fine,
authorised
discounts,
and
it's
for
the
taxi,
as
my
difference
is
with
an
exist
and
representation
of
product
axis.
This
is
absence
of
adjustments.
D
D
D
D
So
it
means
you
may
see
we
duplicated
a
price
old
price.
We
duplicated
price
adjustments,
as
well
as
in
arms
and
poorer
prices.
As
additional
reason
for
this
that's
right
now
we
seem
that
significant
number
of
our
merchants
are
reducing
other
languages
in
PHP
and
is
usual
say
they
generate
some
object
representation
while
interfaces.
As
a
result,
all
our
dynamic
namek
announced
preaching
problematic
for
them
to
support
us.
They
had
to
originate
here.
D
Our
original
eight
objects
each
time
each
time
only,
for
instance,
edit
an
attribute
which
will
add
a
new
and
you
fixed
products,
but
this
is
exactly
the
same
problem.
That's
Alex
described
several
minutes
ago
with
customizable
I
believe
additional
improvements.
As
we
have
here
discounts.
We
are
returned
information
about
discount.