Mostrando entradas con la etiqueta NoSQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta NoSQL. Mostrar todas las entradas

03 octubre 2017

¿Hay vida más allá de Oracle? Riak KV:


Una base de datos de valor-clave NoSQL distribuida


Las empresas confían en los datos para alimentar sus operaciones del día a día. 
Cuando es imperativo que estos datos estén siempre disponibles. Incluso unos minutos de  inactividad en tus aplicativos pueden significar perdidas en los beneficios de una empresa, un usuario pobre experiencia, y una marca magullada. 

Necesitas una base de datos diferente. Basho Riak® KV Enterprise es una base de datos NoSQL distribuida diseñada para satisfacer sus necesidades de aplicación.
Riak KV ofrece alta disponibilidad y escalabilidad. Riak KV puede ser operacionalizado a que las bases de datos relacionales tradicionales y se fácil de manejar a escala.
Riak KV se integra con Apache Spark, Redis Caching, Apache Solr y Apache Mesos reducir la complejidad de la integración y desplegando otras tecnologías de Big Data.


Beneficios de RIAK KV

Una base de datos distribuida con avanzado local y multi-cluster la replicación significa que sus datos siempre están disponibles.

ESCALABILIDAD MASIVA
Distribución automática de datos en el clúster y la facilidad de añadir nodos significan un aumento de rendimiento casi lineal a medida que sus datos crecen.

SIMPLICIDAD OPERACIONAL
Fácil de ejecutar, fácil de agregar nodos al clúster. Las operaciones son potente y simple. Asegúrese de que su equipo de operaciones duerma mejor.

TOLERANCIA POR FALLO
Una arquitectura multi-nodo sin maestro asegura la pérdida de datos en el evento de fallos de red o de hardware.

ACCESO RÁPIDO DE DATOS
Sus usuarios esperan que su aplicación sea rápida. Baja latencia significa que su las solicitudes de datos se prestan de manera predecible incluso durante las horas punta.

MODELO FLEXIBLE DE DATOS
El modelo de datos NoSQL de clave / valor proporciona flexibilidad sin esquema predefinido. Llegar a la nube para la continuidad del negocio o para satisfacer su demanda máxima, Riak KV sobresale en las implementaciones privadas, públicas e híbridas de la nube.

ALMACENAMIENTO DE OBJETOS
Soporte de múltiples modelos desde una sola plataforma a través de la integración con Riak S2 para almacenamiento de objetos grandes.

DESARROLLO SIMPLIFICADO
Una amplia documentación y herramientas de embalaje funcionando en minutos, y las APIs de gran alcance son fáciles de utilizar.



Escenarios válidos para implementar RIAK

DATOS DE LA SESIÓN
Los datos de usuario incluyen información sobre los usuarios y los clientes, como nombre, dirección, datos demográficos, preferencias, los detalles de la tarjeta de crédito, la dirección de correo electrónico y los detalles históricos de las compras y las tasas de los juegos. Los datos de usuario son fundamentales para garantizar el compromiso del usuario y para completar transacciones o compras.

Los datos de la sesión de información sobre la conexión de la aplicación con el usuario y el cliente pasar de un cliente de usuario final (navegador, teléfono, etc) y luego almacenar en el servidor esperando la devolución de nuevos datos de la sesión con cambios de usuario Los datos de sesión se utilizan para las comunicaciones entre la aplicación y el usuario.

Riak KV está diseñado de manera única para manejar datos de usuario y sesión. Originalmente fue desarrollado para servir como un almacén de escenarios escalable. Dado que los ID de usuario y de la sesión se almacenan normalmente en las galletas o se conocen en el momento de la búsqueda, Riak KV puede atender estas solicitudes con una latencia predeciblemente baja.


Riak KV está diseñado para no imponer restricciones sobre el valor, por lo que los datos de sesión pueden codificarse de muchas maneras y pueden evolucionar sin cambios administrativos en los esquemas. Riak KV está diseñado para nunca perder una escritura y escalar horizontalmente de modo que, incluso en días pico, todas las acciones de su usuario se completan sin problemas.


CONTENIDO Y DOCUMENTOS
El contenido es el rey. Pero hoy en día más y más de ese contenido no está estructurado. Se trata de imágenes, documentos, archivos pdf, archivos de registro, correos electrónicos, historial de chat, libros, artículos y videos. Los días de intentar calzar este contenido en una estructura de base de datos relacional han pasado mucho tiempo.

Los problemas de la sobrecarga de la tabla de base de datos relacional (cuántos BLOBs pueden encajar en una sola tabla) se resuelven con una base de datos NoSQL distribuida. El contenido no sólo toma muchas formas tal como está escrito, sino que permite muchos casos de uso diferentes que requieren experiencias de baja latencia. El despliegue de contenido a escala requiere una plataforma distribuida que se adapte a las necesidades de sus clientes.

Riak KV es una base de datos fundamentalmente de contenido agnóstico. Puede usarlo para almacenar cualquier cosa que desee, desde JSON a XML a HTML, binarios a imágenes y más allá. Riak S2 es para almacenamiento de objetos grandes cuando necesita almacenar archivos de tamaño terabyte o escala a petabytes de almacenamiento de objetos.


En sistemas heredados, los datos están organizados por tablas que son estructuras separadas y únicas. Dentro de estas tablas existen filas de datos organizados en columnas. Por el contrario, Riak tiene un modelo de datos mucho más simple. Un objeto es el elemento más grande y más pequeño de los datos. Como tal, la interacción con la base de datos se realiza recuperando o modificando todo el objeto.


MENSAJERÍA Y CHAT
Las bases de datos relacionales tradicionales no fueron diseñadas para manejar la variedad de datos no estructurados y la velocidad requerida para aplicaciones de mensajería y chat. Riak KV cumple estos retos y es fácil de operar a escala.


Riak KV proporciona la arquitectura de datos de alta latencia, altamente disponible, requerida por las modernas aplicaciones de mensajería y chat. El diseño sin maestro de Riak KV asegura que la escalabilidad de la base de datos esté diseñada desde el inicio del diseño.


CONTINUIDAD DEL NEGOCIO
La mayoría de las bases de datos funcionan a pequeña escala, pero ¿cómo se puede escalar, subir y bajar predecible y linealmente a medida que crecen los datos? Uno de los patrones de arquitectura más comunes para la replicación de clústeres múltiples es el mantenimiento de un clúster principal que proporciona tráfico y un clúster de copia de seguridad para la conmutación por error de emergencia. El mantenimiento de un clúster de copia de seguridad también puede ser un componente importante del cumplimiento normativo y / o asegurar la continuidad del negocio durante un evento adverso.


Riak KV Enterprise con Multi-Cluster Replication asegura la continuidad del negocio en caso de una interrupción. Riak KV tiene una innovadora arquitectura de base de datos que proporciona una funcionalidad de lectura y escritura rápida para los datos distribuidos a nivel mundial. Riak KV está diseñado para una configuración sin máster. Esto significa que los administradores pueden implementar varios clústeres de Riak KV y luego replicarlos para mantenerlos sincronizados. Si el Clúster A recibe una escritura, el Clúster A asegurará a su vez que la escritura se reproduzca en los Clústeres B - Z. Y lo hace rápidamente.


IoT / SENSOR / DATOS DEL DISPOSITIVO

Las aplicaciones empresariales recopilan datos de series temporales, lo que requiere que la agregación y el análisis sean útiles. Pero no es posible almacenar y analizar de manera óptima datos de series de tiempo con bases de datos tradicionales.


Los datos del sensor y del dispositivo entran en alta velocidad con una variedad de formatos de datos y en volumen masivo. Esto requiere una base de datos que pueda leer y escribir datos de series temporales rápidamente. Riak TS es una base de datos NoSQL altamente elástica y de alto rendimiento optimizada para datos de series de tiempo. 

Colocando los datos basados en el intervalo de tiempo, es más fácil ingerir, transformar, almacenar y analizar datos de sensores y dispositivos. Riak TS escala horizontalmente con hardware de productos para satisfacer volúmenes crecientes de datos. No hay necesidad de fragmentación de datos complejos.


METRICS / LOG ANALYTICS

Todo el mundo tiene una opinión, pero las mejores decisiones se basan en los datos. ¿Cómo puede utilizar registros y datos de métricas para tomar mejores decisiones de negocio? Los sistemas siempre han incluido datos de registro, pero el volumen, la velocidad y la complejidad de estos registros ha crecido exponencialmente a medida que los sensores y dispositivos IoT han proliferado. Ahora también estamos viendo un amplio crecimiento en el análisis de métricas. Estas métricas y archivos de registro requieren lecturas y escrituras rápidas, junto con la capacidad de recuperar datos mediante consultas de rango, todo ello al mismo tiempo que se mantiene rápido, fiable y escalable. Esto no es posible con las bases de datos relacionales tradicionales.


Las métricas y registros pueden llegar a una velocidad alta y una variedad de longitudes. Algunos son informativos y otros requieren acción inmediata. A menudo, se necesita un análisis complejo para determinar si se requiere acción. Algo que inicialmente parece ser informativo puede resultar ser un problema grave cuando los datos se agregan y analizan con el tiempo. Riak TS proporciona el alto rendimiento y la resiliencia necesarios para el análisis rápido de métricas y datos de registro. La co-localización de datos hace que sea rápido almacenar y analizar estos datos de series de tiempo semiestructuradas. Con Riak TS, puede ejecutar consultas de rango para enfocar su análisis en bloques de tiempo específicos a través de sistemas o dispositivos. Las consultas SQL hacen más rápido y fácil analizar sus datos.


ANÁLISIS DE DISPOSITIVOS

Datos, datos en todas partes! ¿Cómo habilitar ideas valiosas cuando y donde las necesita y detener el flujo de datos irrelevantes? Tradicionalmente, los datos se analizan en el núcleo de su red, pero con el crecimiento de los sensores y dispositivos IoT, los datos deben ser analizados más cerca de su fuente y agregados para el análisis de núcleo. Desde los cruceros hasta el monitoreo de la salud y la utilización del sistema, los análisis de punta crean una mejor experiencia de usuario y tiempos de respuesta más rápidos.

El análisis de dispositivos de borde debe ser rápido y fiable utilizando recursos mínimos. Esto requiere una base de datos altamente resiliente y fácil de operar a escala. Riak TS es una base de datos NoSQL de alto rendimiento y altamente elástica optimizada para el análisis en tiempo real de datos de series de tiempo. Agregue fácilmente capacidad a la demanda utilizando hardware de productos. Responder a lecturas y escrituras incluso en caso de fallas de hardware o cortes de red. Riak TS requiere menos recursos de hardware para la misma potencia computacional, por lo que es una opción ideal para el análisis de bordes. Con Riak TS, es fácil hacer análisis usando consultas de rango de SQL.

06 septiembre 2017

¿Hay vida más allá de Oracle? Hoy presentamos Kibana de Elastic


Kibana es una plataforma de análisis y visualización de código abierto diseñada para trabajar con Elasticsearch. Utiliza Kibana para buscar, ver e interactuar con datos almacenados en los índices de Elasticsearch. Puede realizar análisis de datos avanzados y visualizar fácilmente sus datos en una variedad de gráficos, tablas y mapas.

Kibana facilita la comprensión de grandes volúmenes de datos. Su sencilla interfaz basada en navegador le permite crear y compartir rápidamente paneles dinámicos que muestran cambios en las consultas de Elasticsearch en tiempo real.

La configuración de Kibana es muy fácil. Puedes instalar Kibana y comenzar a explorar sus índices Elasticsearch en minutos - sin código, sin infraestructura adicional requerida.

Versión Elasticsearch

Kibana debe estar configurado para ejecutarse contra un nodo Elasticsearch de la misma versión. Esta es la configuración oficialmente admitida.

No se admite la ejecución de versiones de versiones mayores de Kibana y Elasticsearch (por ejemplo, Kibana 5.x y Elasticsearch 2.x) ni una versión menor de Kibana que sea más reciente que la versión de Elasticsearch (por ejemplo, Kibana 5.1 y Elasticsearch 5.0).

Ejecutar una versión menor de Elasticsearch que sea más alta que Kibana generalmente funcionará para facilitar un proceso de actualización donde Elasticsearch se actualiza primero (por ejemplo, Kibana 5.0 y Elasticsearch 5.1). En esta configuración, se registrará una advertencia en el inicio del servidor Kibana, por lo que sólo se pretende que sea temporal hasta que Kibana se actualiza a la misma versión que Elasticsearch.

Normalmente se admite la ejecución de versiones de versión de parche diferente de Kibana y Elasticsearch (por ejemplo, Kibana 5.0.0 y Elasticsearch 5.0.1), aunque alentamos a los usuarios a ejecutar las mismas versiones de Kibana y Elasticsearch hasta la versión de revisión.

Plataformas soportadas


Los paquetes de Kibana se proporcionan y se prueban contra Linux, Darwin y Windows. Dado que Kibana se ejecuta en Node.js, incluimos los binarios Node.js necesarios para estas plataformas. Ejecutar Kibana contra una versión de Node.js mantenida por separado no es compatible.

Como instalar Kibana en Windows

Kibana se puede instalar en Windows utilizando el paquete .zip.

La última versión estable de Kibana se puede encontrar en la página de descarga de Kibana. Otras versiones se pueden encontrar en la página de Publicaciones pasadas.

Descargue e instale el paquete .zip
Descargue el archivo de Windows .zip para Kibana v5.5.2 desde https://artifacts.elastic.co/downloads/kibana/kibana-5.5.2-windows-x86.zip

Descomprimirlo con su herramienta de descompresión favorita. Esto creará una carpeta llamada kibana-5.5.2-windows-x86, a la que nos referiremos como $ KIBANA_HOME. En una ventana de terminal, CD al directorio $ KIBANA_HOME, por ejemplo:

CD c: \ kibana-5.5.2-windows-x86

Ejecutar Kibana desde la línea de comandos
Kibana se puede iniciar desde la línea de comandos de la siguiente manera:

\ bin \ kibana

De forma predeterminada, Kibana se ejecuta en primer plano, imprime sus registros en STDOUT y se puede detener presionando Ctrl-C.

Configuración de Kibana
El servidor Kibana lee las propiedades del archivo kibana.yml al inicio. La configuración predeterminada configura Kibana para ejecutarse en localhost: 5601. Para cambiar el host o el número de puerto, o conectarse a Elasticsearch que se ejecuta en una máquina diferente, deberá actualizar su archivo kibana.yml. También puede habilitar SSL y establecer una variedad de otras opciones.

Puerto de servicio:
Valor predeterminado: 5601 Kibana es servido por un servidor back-end. Esta configuración especifica el puerto que se va a usar.

server.host:
Valor predeterminado: "localhost" Esta configuración especifica el host del servidor back-end.

server.basePath:
Permite especificar una ruta de acceso para montar Kibana en si se está ejecutando detrás de un proxy. Esto sólo afecta a las URL generadas por Kibana, se espera que su proxy elimine el valor de basePath antes de reenviar las solicitudes a Kibana. Esta configuración no puede terminar en una barra (/).

server.maxPayloadBytes:
Valor predeterminado: 1048576 El tamaño máximo de la carga útil en bytes para las solicitudes de servidor entrantes.

nombre del servidor:
Predeterminado: "your-hostname" Un nombre de visualización legible por humanos que identifica esta instancia de Kibana.

server.defaultRoute:
Valor predeterminado: "/ app / kibana" Esta configuración especifica la ruta predeterminada al abrir Kibana. Puede utilizar esta configuración para modificar la página de destino al abrir Kibana.

elasticsearch.url:
Predeterminado: "http: // localhost: 9200" La URL de la instancia de Elasticsearch para usar en todas sus consultas.

elasticsearch.preserveHost:
Valor predeterminado: true Cuando el valor de esta configuración es true Kibana utiliza el nombre de host especificado en la configuración server.host. Cuando el valor de esta configuración es false, Kibana utiliza el nombre de host del host que se conecta a esta instancia de Kibana.

kibana.index:
Default: ".kibana" Kibana usa un índice en Elasticsearch para almacenar búsquedas, visualizaciones y cuadros de mando guardados. Kibana crea un nuevo índice si el índice ya no existe.

kibana.defaultAppId:
Predeterminado: "discover" La aplicación predeterminada para cargar.

tilemap.url:
La URL del servicio de mosaico que Kibana utiliza para mostrar los mosaicos de mapa en las visualizaciones de mosaico. De forma predeterminada, Kibana lee esta url de un servicio de metadatos externo, pero los usuarios pueden reemplazar este parámetro para usar su propio servicio de mapa de mosaico. Por ejemplo: "https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"

tilemap.options.minZoom:
Valor predeterminado: 1 El nivel de zoom mínimo.

tilemap.options.maxZoom:
Valor predeterminado: 10 El nivel de zoom máximo.

tilemap.options.attribution:
Valor predeterminado: "© Elastic Maps Service (https://www.elastic.co/elastic-maps-service)" La cadena de asignación de mapas.

tilemap.options.subdomains:
Una matriz de subdominios utilizada por el servicio de mosaico. Especifique la posición del subdominio la URL con el token {s}.

mapa de regiones

Especifica capas de vectores adicionales para su uso en las visualizaciones de Mapa de Región. Cada objeto de capa apunta a un archivo vectorial externo que contiene una FeatureCollection geojson. El archivo debe utilizar el sistema de referencia de coordenadas WGS84 y sólo incluir polígonos. Si el archivo está alojado en un dominio separado de Kibana, el servidor debe estar habilitado para CORS para que Kibana pueda descargar el archivo. El campo url también sirve como un identificador único para el archivo. Cada capa puede contener varios campos para indicar qué propiedades de las características de geojson desea exponer. El field.description es el texto legible por el usuario que se muestra en el menú de campo de la visualización del Mapa de Región. También se puede agregar un valor de atribución opcional. El siguiente ejemplo muestra una configuración de mapa de región válida.

regionmap: layers: - name: "Departments of France" url: "http://my.cors.enabled.server.org/france_departements.geojson" attribution: "INRAP" fields: - name: "department" description: "Full department name" - name: "INSEE" description: "INSEE numeric identifier"


elasticsearch.username: y elasticsearch.password:
Si su Elasticsearch está protegida con autenticación básica, estos valores proporcionan el nombre de usuario y la contraseña que el servidor Kibana utiliza para realizar el mantenimiento en el índice Kibana al inicio. Sus usuarios de Kibana aún necesitan autenticarse con Elasticsearch, que se comunica a través del servidor Kibana.

server.ssl.enabled
Predeterminado: "false" Habilita SSL para las solicitudes salientes desde el servidor Kibana al navegador. Cuando se establece en true, se requieren server.ssl.certificate y server.ssl.key
server.ssl.certificate: y server.ssl.key:
Rutas para el certificado SSL de formato PEM y archivos de clave SSL, respectivamente.

server.ssl.keyPassphrase
La frase de contraseña que se utilizará para descifrar la clave privada. Este valor es opcional ya que la clave no puede ser cifrada.

server.ssl.certificateAutoridades
Lista de rutas de acceso a archivos de certificados codificados por PEM que se deben confiar.

protocolos server.ssl.supported
Valor predeterminado:

  • TLSv1
  • TLSv1.1
  • TLSv1.2 

Protocolos compatibles con versiones. Protocolos válidos: TLSv1, TLSv1.1, TLSv1.2
server.ssl.cipherSuites
Por defecto:

  • ECDHE-RSA-AES128-GCM-SHA256, 
  • ECDHE-ECDSHA-AES128-GCM-SHA256, 
  • ECDHE-RSA-AES256-GCM- SHA384, 
  • ECDHE- ECDSA- AES256- GCM- SHA384, 
  • DHE- RSA- AES128- GCM- RSA-AES256-SHA256, 
  • DHE-RSA-AES256-SHA256, 
  • DHE-RSA-AES256-SHA256, 
  • DHE-RSA-AES256-SHA256, 
  • DHE-RSA-AES256-SHA256, 
  • HIGH,
  • ! ANULL,
  • ! ENULL,
  • ! EXPORT,
  • ! DES,
  • ! RC4,
  • ! MD5,
  • ! PSK,
  • ! SRP,
  • ! CAMELLIA. 

Los detalles sobre el formato y las opciones válidas están disponibles a través de la documentación del formato de la lista de cifrado de OpenSSL (https://www.openssl.org/docs/man1.0.2/apps/ciphers.html#CIPHER-LIST-FORMAT)

elasticsearch.ssl.certificate: y elasticsearch.ssl.key:
Ajustes opcionales que proporcionan las rutas al certificado SSL de formato PEM ya los archivos de claves. Estos archivos validan que el backend de Elasticsearch utiliza los mismos archivos de claves.

elasticsearch.ssl.keyPassphrase
La frase de contraseña que se utilizará para descifrar la clave privada. Este valor es opcional ya que la clave no puede ser cifrada.

elasticsearch.ssl.certificateAutoridades:
Opcional que le permite especificar una lista de rutas de acceso al archivo PEM para la autoridad de certificación de su instancia de Elasticsearch.

elasticsearch.ssl.verificationMode:
Valor predeterminado: full Controla la verificación de certificados. Los valores válidos son none, certificate y full. completa realiza la verificación de nombre de host y el certificado no.

elasticsearch.pingTimeout:
Valor predeterminado: el valor de la configuración elasticsearch.requestTimeout Tiempo en milisegundos para esperar que Elasticsearch responda a pings.

elasticsearch.requestTimeout:
Predeterminado: 30000 Tiempo en milisegundos para esperar las respuestas del back-end o Elasticsearch. Este valor debe ser un entero positivo.

elasticsearch.requestHeadersWhitelist:
Valor predeterminado: ['autorización'] Lista de encabezados de cliente de Kibana para enviar a Elasticsearch. Para enviar ningún encabezado del lado del cliente, establezca este valor en [] (una lista vacía).

elasticsearch.customHeaders:
Valor predeterminado: {} Nombres de encabezado y valores que se enviarán a Elasticsearch. Los encabezados personalizados no pueden ser sobrescritos por los encabezados del cliente, independientemente de la configuración elasticsearch.requestHeadersWhitelist.

elasticsearch.shardTimeout:
Valor predeterminado: 0 Tiempo en milisegundos para que Elasticsearch espere las respuestas de los fragmentos. Establezca en 0 para deshabilitar.

elasticsearch.startupTimeout:
Valor predeterminado: 5000 Tiempo en milisegundos para esperar a Elasticsearch en el inicio de Kibana antes de volver a intentarlo.

pid.file:
Especifica la ruta donde Kibana crea el archivo de ID de proceso.

path.data
Default: ./data La ruta donde Kibana almacena los datos persistentes no guardados en Elasticsearch

logging.dest:
Valor predeterminado: stdout Permite especificar un archivo en el que Kibana almacena la salida del registro.

logging.silent:
Valor predeterminado: false Establezca el valor de este valor en true para suprimir toda la salida de registro.

logging.quiet:
Valor predeterminado: false Establezca el valor de esta configuración en true para suprimir toda la salida de registro distinta de los mensajes de error.

logging.verbose
Valor predeterminado: false Establezca el valor de esta configuración en true para registrar todos los eventos, incluida la información de uso del sistema y todas las solicitudes.

opsinterval
Valor predeterminado: 5000 Establece el intervalo en milisegundos para muestrear métricas de rendimiento del sistema y del proceso. El valor mínimo es 100.

status.allowAnonymous
Predeterminado: false Si la autenticación está habilitada, establecer esta opción en true permite a usuarios no autenticados acceder a la API de estado del servidor Kibana y la página de estado.

cpu.cgroup.path.override
Anular para la ruta de la cpu de cgroup cuando se monta de manera que es inconsistente con / proc / self / cgroup

cpuacct.cgroup.path.override
Anular para cgroup cpuacct path cuando está montado de manera que es inconsistente con / proc / self / cgroup

console.enabled
Valor predeterminado: true Establece en false para deshabilitar la consola. Alternar esto hará que el servidor para regenerar los activos en el próximo arranque, lo que puede causar un retraso antes de que las páginas comienzan a ser servido.

elasticsearch.tribe.url:
URL opcional de la instancia de tribu Elasticsearch para usar en todas sus consultas.

elasticsearch.tribe.username: y elasticsearch.tribe.password:
Si su Elasticsearch está protegido con autenticación básica,estos valores proporcionan el nombre de usuario y la contraseña que el servidor Kibana utiliza para realizar el mantenimiento en el índice Kibana al inicio. Sus usuarios de Kibana aún necesitan autenticarse con Elasticsearch, que se proxiene a través del servidor Kibana.

elasticsearch.tribe.ssl.certificate: y elasticsearch.tribe.ssl.key:
Ajustes opcionales que proporcionan las rutas al certificado SSL de formato PEM ya los archivos de claves. Estos archivos validan que el backend de Elasticsearch utiliza los mismos archivos de claves.

elasticsearch.tribe.ssl.keyPassphrase
La frase de contraseña que se utilizará para descifrar la clave privada. Este valor es opcional ya que la clave no puede ser cifrada.

elasticsearch.tribe.ssl.certificateAuthorities:
Opcional configuración que le permite especificar una ruta de acceso al archivo PEM para la autoridad de certificación de su tribu Elasticsearch instancia.

elasticsearch.tribe.ssl.verificationMode:
Valor predeterminado: full Controla la verificación de certificados. Los valores válidos son none, certificate y full. completa realiza la verificación de nombre de host y el certificado no.

elasticsearch.tribe.pingTimeout:
Valor predeterminado: el valor de la configuración elasticsearch.tribe.requestTimeout Tiempo en milisegundos para esperar que Elasticsearch responda a pings.

elasticsearch.tribe.requestTimeout:
Predeterminado: 30000 Tiempo en milisegundos para esperar las respuestas del back-end o Elasticsearch. Este valor debe ser un entero positivo.

elasticsearch.tribe.requestHeadersWhitelist:
Valor predeterminado: ['autorización'] Lista de encabezados de cliente de Kibana para enviar a Elasticsearch. Para enviar ningún encabezado del lado del cliente, establezca este valor en [] (una lista vacía).

elasticsearch.tribe.customHeaders:
Valor predeterminado: {} Nombres de encabezado y valores que se enviarán a Elasticsearch. Los encabezados personalizados no pueden ser sobrescritos por los encabezados del cliente, independientemente de la configuración elasticsearch.tribe.requestHeadersWhitelist.

En siguientes artículos veremos como empezar a visualizar datos con Kibana.


04 septiembre 2017

¿Hay vida más allá de Oracle? Hoy presentamos REDIS

Breve introducción a Redis

Redis es un motor de base de datos en memoria, basado en el almacenamiento en tablas de hashes (clave/valor) pero que opcionalmente puede ser usada como una base de datos durable o persistente. Está escrito en ANSI C por Salvatore Sanfilippo quien fue patrocinado por VMware y, a partir de 2013, por Pivotal Software

Está liberado bajo licencia BSD por lo que es considerado software de código abierto.

Al no pertenecer al mundo relacional automáticamente entra en el grupo de bases de datos libres de tipo NoSQL.

Redis no es un almacén plano del clave-valor, él es realmente un servidor de las estructuras de datos, apoyando diversos tipos de valores. Lo que esto significa es que, mientras que en los almacenes de clave-valor tradicionales asoció a las cadenas de claves a cadenas de valores, en Redis el valor no se limita a una cadena simple, sino que también puede contener estructuras de datos más complejas. 

Se puede ejecutar operaciones atómicas sobre estos tipos, como agregar elementos a una cadena; incrementar el valor de un hash, integrandolo a una lista; intersección de conjuntos de computación, unión y diferencia, o conseguir el miembro de más alto rango en un conjunto ordenado.

¿Para qué vale Redis?

Redis resuelve de manera sencilla y eficiente problemas que no necesitan la complejidad de las bases de datos relacionales, como lo es en la mayoría de los casos de usos el almacén y gestión de estructuras de datos temporales, por lo cual Redis es mayoritariamente usado para incorporar soluciones sofisticadas de cache de datos ó como backend de operaciones en linea en escenarios de alta demanda. Redis no pierde tiempo pensando  en relaciones, restricciones ni tipos de datos, se enfoca en hacer eficientemente su trabajo que es establecer y recuperar (set y get) datos sobre las estructuras con las que cuenta.
Como ejemplos podemos citar:
  • Gestión de sesiones de usuarios y soluciones de cache, entre muchas otras.
  • incorporar mensajería instantánea en una aplicación, derivas la gestión de chat a Redis y luego resumes la mensajería del dia y la insertas como histórico a tu base de datos principal.
  • Suponga que tiene un portal web con mucha trayectoria y miles de millones de contenidos, así como millones de visitas diarias, cuya pagina de inicio abarca el 90% de las visitas de su web, su pagina de inicio solo son 30 contenidos y otros elementos, pues en vez de recorrer su base de datos tradicional con los millones de contenidos en busca de los 30, simplemente los pone a disposición de la manera mas rápida posible.

Modelo de datos

El modelo de datos de Redis se basa en la estructura de datos del tipo diccionario o tabla de hashes que relaciona una llave a un contenido almacenado en un índice. La principal diferencia entre Redis y otros sistemas similares es que los valores no están limitados a ser de tipo string, otros tipos de datos están soportados:
  • Listas (Lists) de strings
  • Sets de strings (colecciones de elementos desordenados no repetidos)
  • hashes donde la llave y el valor son del tipo string
El tipo de valor determina las operaciones (los comandos) que son disponibles. Redis soporta operaciones atómicas de alto nivel del lado del servidor, como inserciones, unions, y diferencias entre sets y listas ordenadas. Desde la versión 2.6, liberada a finales de octubre de 2012, se introduce una funcionalidad clave, la posibilidad de ejecutar Scripts en el servidor Redis, escritos en lenguaje Lua.
La siguiente es la lista de todas las estructuras de datos soportadas por Redis, que se tratarán por separado en este tutorial:
  • Cadenas binarias seguras.
  • Listas: colecciones de elementos de cadenas ordenadas según el orden de inserción. Son básicamente listas enlazadas.
  • Conjuntos: colecciones de elementos de cadena únicos sin clasificar.
  • Conjuntos ordenados, similares a Conjuntos pero donde cada elemento de cadena está asociado a un valor numérico flotante, llamado puntuación. Los elementos siempre se toman ordenados por su puntuación, por lo que a diferencia de los conjuntos es posible recuperar un rango de elementos (por ejemplo, puede pedir: darme el top 10 o el 10 inferior).
  • Hashes, que son mapas compuestos de campos asociados con valores. Tanto el campo como el valor son cadenas. Esto es muy similar a los hashes de Ruby o Python.
  • Arrays de bits (o simplemente mapas de bits): es posible, mediante comandos especiales, manejar valores de cadena como una matriz de bits: puede establecer y borrar bits individuales, contar todos los bits establecidos en 1, encontrar el primer conjunto o bit sin configurar, Etcétera.
  • HyperLogLogs: es una estructura de datos probabilística que se utiliza para estimar la cardinalidad de un conjunto. No tengas miedo, es más simple de lo que parece ... Un ejemplo de caso de uso para esta estructura de datos es contar las consultas únicas realizadas por los usuarios en un formulario de búsqueda todos los días.

Persistencia

Redis normalmente guarda la información en la memoria RAM, pero en versiones superiores a la 2.4 se puede configurar para utilizar Memoria virtual pero ahora esto está desactualizado. Se puede hacer que los datos sean persistentes de dos formas:
  • Una es hacer snapshots (capturas), aunque no sería realmente durable ya que estos son asíncronos al transferir la memoria al disco cada cierto tiempo. 
  • Desde la versión 1.1 la mejor alternativa es usar un archivo del tipo appendonly gracias a un sistema de Journaling el cual escribe en este archivo cada modificación que se realice sobre los datos en memoria pudiendo regenerar los datos. Esto genera un costo en el rendimiento, pero se puede configurar de dos formas, always, que escribirá cualquier cambio en el instante, o everysec que lo hará segundo tras segundo.

Replicación

Redis soporta la replicación del tipo maestro-esclavo, pudiéndose replicar los datos de un servidor a muchos esclavos, también un esclavo puede ser maestro para otro esclavo, lo que permite soportar en Redis una replicación en forma de árbol. Los esclavos permiten la escritura de datos, lo que puede ocasionar inconsistencias en los datos no intencionales.
La función de publicación/subscripción esta totalmente soportada, cuando un cliente esclavo se subscribe a un canal este recibe un feed completo de publicaciones del maestro, replicando así en todo el árbol.
La replicación es útil para escalar la lectura (no la escritura) y/o redundar los datos.

Rendimiento

Para escenarios de datos solo usando memoria RAM el rendimiento puede ser extremo, comparado con motores de bases de datos, tampoco hay una notable diferencia entre lectura y escritura de datos, en disco.

05 noviembre 2016

¿Hay vida más allá de Oracle? Ecosistema de Themyscira: Amazon Web Servicies

Entre historia y mito

Themyscira (Θεμίσκυρα) fue una antigua ciudad griega, emplazada a corta distancia de la costa sur del mar Negro, se ha recuperado en la modernidad para los cómics de Wonder Woman (publicados por DC Comics), como capital de Isla Paraíso, lugar escondido y protegido por una barrera mística caótica que impide que el mundo del Hombre penetre en ellas sin permiso y reino de las Amazonas.


Amazon Web Services: AWS
Adentrémonos en esta isla paraíso que ha revolucionado la forma de desarrollar aplicaciones y diseñar arquitecturas. 



Empecemos describiendo cada uno de los servicios que Amazon nos ofrece:
Amazon API Gateway.

Amazon API Gateway es un servicio totalmente administrado que facilita a los desarrolladores la creación, la publicación, el mantenimiento, la monitorización y la protección de API a cualquier escala. Con tan solo unos clics en la consola de administración de AWS, puede crear un API que haga las veces de puerta delantera para que las aplicaciones obtengan acceso a datos, lógica de negocio o funcionalidades desde sus servicios de back-end, como cargas de trabajo ejecutadas en Amazon Elastic Compute Cloud (Amazon EC2), código ejecutado en AWS Lambda o cualquier aplicación web. 



Amazon API Gateway administra todas las tareas involucradas en la aceptación y el proceso de llamadas de API simultáneas, entre ellas:
  • La administración del tráfico
  • El control de autorizaciones y acceso
  • La monitorización
  • La administración de la versión de API. 

AWS Lambda functions


AWS Lambda es un servicio de computación sin servidores que ejecuta el código como respuesta a eventos y administra automáticamente los recursos de computación subyacentes. Puede usar AWS Lambda para ampliar otros productos de AWS con lógica personalizada o puede crear sus propios servicios back-end:
  • Administración de la seguridad. 
  • Administración del desempeño. 
  • El escalado de AWS. 

AWS Lambda puede ejecutar código automáticamente en respuesta a varios eventos, como la modificación de objetos en buckets de Amazon S3 o la actualización de tablas en Amazon DynamoDB.

Lambda ejecuta el código en una infraestructura informática de alta disponibilidad y ejecuta la administración integral de los recursos informáticos, incluido el mantenimiento del servidor y del sistema operativo, el aprovisionamiento de capacidad y el escalado automático, la implementación de parches de seguridad y código, así como la monitorización y los registros. Lo único que tiene que hacer es proporcionar el código.


Amazon S3 buckets.

Amazon S3 es almacenamiento para Internet. Es un servicio de almacenamiento sencillo que ofrece a los desarrolladores de software una infraestructura de almacenamiento de datos de gran escalabilidad, fiable y de baja latencia con costos muy bajos.

Una infraestructura de almacenamiento de datos escalable y sofisticada como la de Amazon no estaba al alcance de los desarrolladores pequeños. Amazon S3 permite a cualquier desarrollador aprovechar los beneficios propios de Amazon de escala masiva sin una inversión inicial y sin poner en riesgo el desempeño. Ahora los desarrolladores pueden innovar sabiendo que, sin importar el éxito que alcancen sus negocios, será asequible y sencillo garantizar que siempre se pueda obtener acceso a sus datos con rapidez, que siempre estén disponibles y que estén seguros.

El volumen total de datos y el número de objetos que puede almacenar son ilimitados. El tamaño de los objetos individuales de Amazon S3 puede variar entre un mínimo de 0 bytes y un máximo de 5 terabytes. El objeto más grande que se puede cargar en un solo PUT es de 5 gigabytes. Para objetos de más de 100 megabytes, los clientes deben plantearse el uso de la capacidad de carga multiparte.

Amazon S3 es un sencillo almacenamiento de objetos basado en claves. Cuando almacena datos, asigna una clave de objeto única que puede utilizarse posteriormente para recuperar los datos. Las claves pueden ser cualquier cadena, y pueden establecerse de forma que imiten atributos jerárquicos.

Amazon S3 ofrece una sencilla interfaz de servicios web REST basada en estándares, que está diseñada para funcionar con cualquier conjunto de herramientas de desarrollo basado en Internet. Las operaciones se han hecho sencillas de forma intencionada para facilitar la tarea de adición de nuevos protocolos de distribución y capas funcionales.

Amazon DynamoDB non-relational database
DynamoDB permite el almacenamiento, la realización de consultas y la actualización de documentos. Mediante el uso de AWS SDK, puede escribir aplicaciones que almacenen los documentos JSON directamente en tablas de Amazon DynamoDB. Esta función reduce la cantidad de código nuevo que ha de escribirse para insertar, actualizar y recuperar documentos JSON y realizar operaciones potentes en la base de datos, como consultas JSON anidadas, que pueden efectuarse con tan solo unas líneas de código.

Amazon DynamoDB soporta estructuras de datos de valor de clave. Cada elemento (fila) constituye una pareja de valor de clave, en la que la clave principal es el único atributo necesario para los elementos de la tabla e identifica a cada uno de ellos. DynamoDB no contiene esquemas. Cada elemento puede poseer cualquier número de atributos (columnas). Además de consultar la clave principal, puede consultar atributos clave no principales utilizando los índices secundarios globales e índices secundarios locales.



Amazon DynamoDB ofrece un desempeño y escalado del almacenamiento perfectos mediante el API y la consola de administración de AWS. Prácticamente no existen límites en cuanto al rendimiento o almacenamiento que se pueden solicitar en un momento determinado.

Amazon DynamoDB ofrece alta disponibilidad con replicación de datos automática y sincrónica en tres instalaciones incluidas dentro de una misma región. De este modo, protege sus datos ante posibles errores en máquinas individuales o en las instalaciones.

Para los que nos gusta andar husmeando con tecnología hay una versión descargable  de Amazon DynamoDB aquí.

Amazon DynamoDB se integra con AWS Lambda para proporcionar activadores. Mediante los activadores, puede ejecutar automáticamente una función personalizada que detecte los cambios a nivel de elemento en una tabla de DynamoDB. Son nuetros viejos trigger de bases de datos relacionales

Existe una consola de administración de AWS para DynamoDB le permite crear, actualizar, eliminar y consultar tablas, ajustar el desempeño y definir alarmas con solo unos clics del mouse. Además, DynamoDB soporta una amplia funcionalidad con un número reducido de API. 
Amazon Cognito

Amazon Cognito le permite agregar el registro y el inicio de sesión de forma sencilla a sus aplicaciones web y móviles. Con Amazon Cognito, también tiene las opciones de autenticar a los usuarios a través de proveedores de identidad social, como Facebook, Twitter o Amazon, con soluciones de identidad SAML o a través de su propio sistema de identidad (IBM Tivoli, Oracle Identity Manager, ...). Además, Amazon Cognito le permite guardar datos de forma local en los dispositivos de los usuarios, lo que permite que sus aplicaciones funcionen incluso cuando los dispositivos están fuera de línea. A continuación, puede sincronizar los datos entre los distintos dispositivos de los usuarios para que disfruten de una experiencia uniforme con las aplicaciones independientemente del dispositivo que utilicen.