Mc: opción de metadatos en mc

Creado en 31 dic. 2018  ·  15Comentarios  ·  Fuente: minio/mc

Comportamiento esperado

./mc cp myobj play/bucket/myobj --metadata KeyName1=cadena,KeyName2=cadena

Comportamiento real

Error .
Todos los demás SDK tienen una forma de agregar metadatos personalizados, pero mc.

community fixed medium

Comentario más útil

@lavvy Hablamos internamente y decidimos que implementaremos esta función de esta manera
./mc cp myobj play/bucket/myobj --attr KeyName1=string,KeyName2=string

aún tendremos que resolver detalles como copiar una carpeta/cubo completo a otro cubo, si aplicamos metadatos a todos los objetos debajo de ese cubo, etc.

Todos 15 comentarios

mc no es un SDK; puede usar un SDK para hacer esto ahora mismo.

Gracias por la rápida respuesta. Sí, ahora estamos usando sdk, pero mc nos permite mucha portabilidad entre aplicaciones. Pero gracias porque pensé que se omitió intencionalmente donde más importaba.
Por cierto, aws cli lo tiene cubierto, pero por razones desconocidas no es tan rápido como mc.
¿Hay alguna línea de tiempo para ello? @harshavardhana

Gracias por la rápida respuesta. Sí, ahora estamos usando sdk, pero mc nos permite mucha portabilidad entre aplicaciones. Pero gracias porque pensé que se omitió intencionalmente donde más importaba.
Por cierto, aws cli lo tiene cubierto, pero por razones desconocidas no es tan rápido como mc.
¿Hay alguna línea de tiempo para ello?

No hay una manera más fácil de hacerlo @lavvy , nos gustaría limitar las opciones de línea de comando mc's . mc es una herramienta a gran escala que copia millones de archivos. ¿Esta opción se aplica a un archivo o a todos los archivos? es complicado de razonar.

Esto puede provocar una acumulación inesperada de metadatos en archivos que no estaban destinados a tener estos metadatos. aws cli implementa muchas más características que nosotros no implementamos porque simplemente no tiene sentido, mc está construido con una idea diferente en mente para simplificar las cosas y no ser equivalente a lo que es un SDK puede hacer. Nuestros SDK son tan portátiles como mc escritos en un lenguaje portátil, por lo que no veo ninguna razón por la que pierda la portabilidad en su aplicación. A menos que esté haciendo suposiciones específicas de la plataforma.

mc que se ejecuta en la línea de comandos es portátil para nosotros, ya que puede usar un solo
comando de cadena en todas las aplicaciones.
En segundo lugar, puede crear fácilmente un script bash para realizar trabajos rápidos.
Soy consciente de que mc tiene que ser lo suficientemente simple, pero hay algunos escenarios que
algunos tipos de archivos requerirán al menos metadatos únicos. no tiene
para aplicar en todos los casos, pero minio ahora se está convirtiendo en un basurero para cualquier tipo de
datos, estos casos especiales se presentan.

El lunes 31 de diciembre de 2018 a la 1:53 a. m. Harshavardhana < [email protected]
escribió:

Gracias por la rápida respuesta. Sí, estamos usando sdk para eso ahora, pero mc
nos permite tanta portabilidad entre aplicaciones. Pero gracias porque
Pensé que se omitió intencionalmente donde más importaba.
Por cierto, aws cli lo tiene cubierto, pero por razones desconocidas no es tan rápido
como mc.
¿Hay alguna línea de tiempo para ello?

No hay manera más fácil de hacerlo @lavvy https://github.com/lavvy , nosotros
quisiera limitar las opciones de línea de comando de mc. mc es una herramienta a gran escala
copia millones de archivos. ¿Esta opción se aplica a un archivo o a todos los archivos?
es complicado de razonar.

Esto puede conducir a una acumulación inesperada de metadatos en archivos que no fueron
destinado a tener estos metadatos. aws cli implementa muchas más características que
no implementamos porque simplemente no tiene sentido, mc está construido
con una idea diferente en mente para mantener las cosas simples y no ser equivalentes
de lo que puede hacer un SDK. Nuestros SDK son tan portátiles como mc escritos en un
lenguaje portátil, por lo que no veo ninguna razón por la que perdería la portabilidad en
su aplicación. A menos que esté haciendo suposiciones específicas de la plataforma.


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/minio/mc/issues/2636#issuecomment-450613935 , o silenciar
la amenaza
https://github.com/notifications/unsubscribe-auth/AGsC44ZQ3iSpp21sv01DQd6BM3z1WycHks5u-bRvgaJpZM4ZlKbA
.

mc que se ejecuta en la línea de comandos es portátil para nosotros, ya que puede usar un comando de una sola cadena en todas las aplicaciones. En segundo lugar, puede crear fácilmente un script bash para realizar trabajos rápidos. Soy consciente de que mc tiene que ser lo suficientemente simple, pero hay algunos escenarios en los que algunos tipos de archivos requerirán al menos metadatos únicos. No tiene que aplicarse en todos los casos, pero minio ahora se está convirtiendo en un basurero para cualquier tipo de datos, estos casos especiales surgen.

Hablaremos de esto y te lo haremos saber.

He leído mucho sobre sus consejos en muchos problemas relacionados con los metadatos en los que desalentó su uso. Realmente no sabría descifrar si se debe a razones técnicas o éticas. Pero suponiendo que sea cualquiera de esos o ambos.
En mi opinión, debería ser un mejor caso de uso si pudiera incluirlo en mc también porque sabe que uno puede usar fácilmente el script go sdk o python para lograrlo.

Comportamiento actual

Entonces, al final, el desarrollador tendrá más scripts para administrar.
Cada desarrollador que intente implementarlo terminará con una ética diferente que desordenará o fragmentará más.
El uso descontrolado de metadatos seguirá llegando a los servidores

Comportamiento esperado

Más homogeneidad
Resultados más predecibles
Ética controlada de cómo se utilizan los metadatos en el sistema.

He leído mucho sobre sus consejos en muchos problemas relacionados con los metadatos en los que desalentó su uso. Realmente no sabría descifrar si se debe a razones técnicas o éticas. Pero suponiendo que sea cualquiera de esos o ambos.

Se desaconseja porque los metadatos deberían existir idealmente en la base de datos de su aplicación, simplemente no vale la pena almacenarlos en el almacenamiento de objetos. No puede buscar utilizando estos valores de metadatos, consultar el almacenamiento de objetos de ninguna manera significativa, no hay una API de S3 para esto. Estos metadatos se recuperan mediante un mecanismo rudimentario, ya sea HEAD o GET, es decir, se envían como un encabezado HTTP. Ni siquiera está disponible en ListObjects, ni hay un parámetro de consulta para enumerar solo los contenidos de metadatos relevantes, etc.

No veo cómo las aplicaciones hacen uso de esto limpiamente. Si estaba escribiendo una aplicación utilizando el almacenamiento de objetos, solo me interesa mantener mis datos seguros en el almacenamiento, nada más. Cualquier capa adicional es una construcción de la aplicación. Puede ser útil en un escenario muy especializado, por eso mi punto fue que no requiere que sea una opción de primera clase en mc .

Mientras que en el servidor Minio nos hemos movido para admitir todos ellos por razones de compatibilidad, no veo cómo incluso hoy en día las aplicaciones lo usan limpiamente, aparte de algunos escenarios de nicho.

Pero piénsalo de esta manera. Cada archivo viene con metadatos predeterminados, ¿qué
si los predeterminados no son suficientes. Los metadatos son como etiquetas, no deben
ser consultado pero podría ser un puntero. Por ejemplo, desea guardar un
archivo personalizado que necesita una aplicación personalizada para abrirlo?
Como puedo entender, incluirlo molesta más en la ética que en la técnica, pero
sabemos que hay muchos casos de uso.
Por ejemplo, queremos poder guardar un archivo con nombres como auuid en su lugar
de un nombre legible para evitar conflictos.
Pero entonces los archivos que necesitan controles humanos podrían tener nombres legibles
adjunto en metadatos, en lugar de mantener otra base de datos o
escribir otro guión.

El lunes, 31 de diciembre de 2018, 3:30 p. m. Harshavardhana < [email protected]
escribió:

He leído mucho sobre sus consejos en muchos problemas relacionados con los metadatos donde
desaconsejaste mucho su uso. Realmente no pude descifrar si es bcos de
razones técnicas o éticas. Pero suponiendo que sea cualquiera de esos o ambos.

Se desaconseja porque idealmente deberían existir metadatos en su
base de datos de la aplicación, simplemente no vale la pena almacenarlo en el almacenamiento de objetos.
No puede buscar con estos valores de metadatos, consultar el almacenamiento de objetos en ningún
manera significativa no hay API S3 para esto. Estos metadatos se recuperan
utilizando un mecanismo rudimentario, ya sea HEAD o GET, es decir, enviado de vuelta como HTTP
encabezamiento. Ni siquiera está disponible en ListObjects, ni hay una consulta
param para enumerar solo los contenidos de metadatos relevantes, etc.

No veo cómo las aplicaciones hacen uso de esto limpiamente. Si estuviera escribiendo un
aplicación que usa almacenamiento de objetos Solo me interesa conservar mis datos
seguro en el almacenamiento nada más. Cualquier capa adicional es aplicación
construir. Puede ser útil en un escenario muy especializado, por eso fue mi
punto que no requiere que sea una opción de primera clase en mc.

Mientras que en el servidor Minio nos hemos movido para admitir todos ellos para
razones de compatibilidad, no veo cómo aún hoy en día las aplicaciones lo usan
limpiamente aparte de algunos escenarios de nicho.


Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/minio/mc/issues/2636#issuecomment-450687967 , o silenciar
la amenaza
https://github.com/notifications/unsubscribe-auth/AGsC47kX3ptR7tLZSU5nYDrNwL2_bIAgks5u-nPXgaJpZM4ZlKbA
.

Por ejemplo, ¿quiere guardar un archivo personalizado que necesita una aplicación personalizada para abrirlo?

Puede abrir un objeto independientemente de los metadatos de usuario que tenga. Ni siquiera es un condicional en el que puede decir abrir este objeto solo si coincide con los metadatos de este usuario. Es simplemente un valor opaco que puede usar para indicar algún significado de propiedad. Sin su aplicación, este valor no es significativo para ninguna otra aplicación. Para aplicaciones como mc o aws cli sus metadatos personalizados no tienen sentido; no se pueden usar para interpretación ni para hacer ningún razonamiento valioso. Esto es lo que quise decir con capacidad de consulta y descubrimiento, que no es posible mediante el uso de estos metadatos porque el protocolo subyacente S3 no es una API de consulta. Por ejemplo, si los metadatos de su usuario se almacenan en elasticsearch, puede tomar decisiones inteligentes.

Uno, por supuesto, necesita una base de datos en casi todas las aplicaciones serias. Si está diciendo que realiza ListObjects en un cubo para encontrar el objeto, seguramente es una aplicación mal diseñada. El almacenamiento de objetos nunca puede ser un reemplazo para su base de datos. El listado en una base de datos siempre es más rápido que el almacenamiento de objetos.

La implementación de metadatos de usuario en el protocolo S3 no está pensada como una implementación extensible, por lo que su uso para tomar algunas decisiones inteligentes no es posible. Estos valores, de hecho, ni siquiera se respetan en las políticas de IAM o las políticas de depósito. De todas las aplicaciones y casos de uso, hemos visto que se trata de guardar algunos valores opacos adicionales junto con el objeto. Que también se puede guardar en su base de datos y consultar con más beneficios adicionales.

Otro problema con los metadatos del usuario es la portabilidad, las aplicaciones deben comprender para hacer una interpretación especial de estos encabezados HTTP. No son encabezados HTTP estándar y no forman parte de RFC, por lo que no ofrecen ningún significado fuera de una aplicación determinada o incluso de un protocolo, es decir, S3 (los metadatos de Azure son completamente diferentes en la convención de nomenclatura, etc.). Los nombres pueden ser vagos y no intuitivos: no hay garantía ni restricción sobre cuál puede ser el significado, ya que no hay un conjunto estándar de encabezados publicados.

Entonces, si bien podemos implementar la adición de metadatos en mc es un cambio mínimo. En mi opinión, solo estoy tratando de argumentar la naturaleza fundamental del uso de metadatos de usuario. No puedo ver qué uso le da esto a su aplicación que no se puede hacer. outside, que es más portátil y proporciona un significado más completo: proporciona una capacidad de descubrimiento más rica, etc.

@lavvy Hablamos internamente y decidimos que implementaremos esta función de esta manera
./mc cp myobj play/bucket/myobj --attr KeyName1=string,KeyName2=string

aún tendremos que resolver detalles como copiar una carpeta/cubo completo a otro cubo, si aplicamos metadatos a todos los objetos debajo de ese cubo, etc.

Tan agradable. Los apreciamos chicos. 👍

es --attr bandera en alguna hoja de ruta? ¿Todavía tienes planes de implementarlo?

Ya está allí.

tal vez actualizar documentos?
https://github.com/minio/mc/pull/2793

Este hilo se ha bloqueado automáticamente ya que no ha habido ninguna actividad reciente después de que se cerró. Abra un nuevo problema para los errores relacionados.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

accaldwell picture accaldwell  ·  5Comentarios

philipkozeny picture philipkozeny  ·  9Comentarios

zllovesuki picture zllovesuki  ·  19Comentarios

silvernode picture silvernode  ·  8Comentarios

deekoder picture deekoder  ·  13Comentarios