Translate

domingo, 12 de mayo de 2019

Anti-Entropia, Reparación y Arboles de Merkle en Cassandra



Cassandra utiliza un protocolo anti-entropico, que es un tipo de protocolo gossip para reparación de replicas de datos. Los protocolos anti-entropicos funcionan por medio de comparación de las diferentes replicas de datos y conciliando las diferencias entre las replicas. Los protocolos anti-entropicos son usados por muchas bases de datos noSql como Amazon’s Dynamo.

La sincronización de réplicas se admite a través de dos modos diferentes conocidos como reparación de lectura y reparación anti-entropía. La reparación de lectura se refiere a la sincronización de las réplicas a medida que se leen los datos. Cassandra lee los datos de varias réplicas para alcanzar el nivel de consistencia solicitado y detecta si alguna réplica tiene valores desactualizados. Si un número insuficiente de nodos tiene el último valor, se realiza una reparación de lectura inmediatamente para actualizar las réplicas desactualizadas. De lo contrario, las reparaciones se pueden realizar en segundo plano después de las devoluciones de lectura. Esta funcionalidad no es solo de Cassandra, también es utilizada en bases noSql clave/valor como Voldemort y Riak.

La reparación anti-entropica (a veces llamada reparación manual) es una operación iniciada manualmente en nodos como parte de un proceso de mantenimiento regular. Este tipo de reparación se ejecuta mediante una herramienta llamada nodetool. La ejecución de la reparación de nodetool hace que Cassandra ejecute una compactación principal. Durante una compactación principal, el servidor inicia una conversación TreeRequest / TreeReponse para intercambiar árboles Merkle con nodos vecinos. El árbol Merkle es un hash que representa los datos en esa tabla. Si los árboles de los diferentes nodos no coinciden, deben ser reconciliados (o "reparados") para determinar los valores de datos más recientes en los que se deben configurar. Esta validación de comparación de árbol es responsabilidad de la clase org.apache.cassandra.service.AbstractReadExecutor.

Los arboles de Merkle son utilizados por Cassandra y Dynamo para conciliar los datos de diferentes nodos, su nombre se debe a su inventor Ralph Merkle y se lo conoce tambien como “hash tree.” En cassandra esto se implementa con la clase org.apache.cassandra.utils.MerkleTree.

Tanto Cassandra y Dynamo utilizan arboles hash como un protocolo anti-entropico pero su implementación es un tanto diferente. En Cassandra cada tabla tiene su propio arbol, y esto es construido como un snapshot o fotografía en el momento de una compactación principal y se mantiene solo el tiempo necesario para enviarlo a los nodos vecinos en el anillo. La ventaja de esta implementación es que reduce la entrada/salida de la red.


miércoles, 8 de mayo de 2019

Apache NetBeans fue promovido a Top-Level Apache Project


NetBeans, un entorno de desarrollo integrado (IDE), fue promovido recientemente a un proyecto  Top-Level Apache Project, aproximadamente dos años y medio después de que Oracle donó su código fuente a la Fundación de software Apache.

Los equipos de desarrollo que buscan probar las funciones completas de NetBeans pueden descargar directamente NetBeans 11 desde Apache y ver una lista completa de las nuevas funciones en esta versión. Los desarrolladores pueden probar el IDE en cualquier fase de sus proyectos, incluso si actualmente se usan otros IDE.

Dejo link: https://www.globenewswire.com/news-release/2019/04/24/1808620/0/en/The-Apache-Software-Foundation-Announces-Apache-NetBeans-as-a-Top-Level-Project.html

Libros de Java Code Geeks

Download IT Guides!

 
Office 365 is suite of advanced collaboration tools used by many well known organizations and their system administrators. What You Will Learn: Learn how to implement Office 365 from scratch and how to use best practices to be a successful Office 365 professional. Understand Microsoft productivity services to take your organization or business to the next level by increasing productivity
 
 
You've invested in great tools for your company, but are your people making the most them? Don't worry, we can help. This guide explains how Slack can help reduce context-switching by bringing together your people, data, and applications into one secure platform. We also share five actionable ways integrating your tools and software with Slack can significantly improve problem-solving and decision-making throughout the business
 
 
This free 1-hour webinar from GigaOm Research brings together experts in Kubernetes on-prem ops success, featuring GigaOm Analyst David Linthicum and special guest John Mao, VP Business Development from Stratoscale. In this 1-hour webinar, we will explore: Why approaches to Kubernetes success are changing.
 
 
This guide assumes no previous knowledge of scripting or programming, but progresses rapidly toward an intermediate/advanced level of instruction . . . all the while sneaking in little nuggets of UNIX® wisdom and lore. It serves as a textbook, a manual for self-study, and a reference and source of knowledge on shell scripting techniques. 
 

Compactaciones en Apache Cassandra


Como dijimos anteriormente SSTables son inmutables, esto ayuda a cassandra en ser más rápida en la escritura. Por ejemplo ante una modificación, cassandra no necesita buscar el registro a modificar, solo escribe una nueva fila. El proceso de compactación permite mejorar las lecturas y ahorrar en disco dado que mergea los SSTables. Es decir en el proceso de compactación los datos y las claves son mergeados, las columnas son combinadas, se eliminan las marcas de tombstones y un nuevo indice es creado.

La compactación es el proceso que libera espacio en le disco mergeando los archivos de datos que se fueron acumulando. Esto es aproximadamente análogo a la reconstrucción de una tabla en el mundo relacional. Pero la principal diferencia en Cassandra es que está pensada como una operación transparente que se realiza a lo largo de la vida del servidor.

En la compactación, los datos combinados se ordenan, se crea un nuevo índice sobre los datos ordenados, y los datos recién fusionados, ordenados e indexados se escriben en un único SSTable nuevo (cada SSTable consta de varios archivos, incluidos: Datos, Índice y Filtros).
Este proceso es administrado por la clase org.apache.cassandra.db.compaction.CompactionManager.

Otra función importante de la compactación es mejorar el rendimiento al reducir el número de búsquedas requeridas. Hay un número limitado de SSTables para inspeccionar y encontrar los datos de la columna para una clave dada. Si una clave se muta frecuentemente, es muy probable que todas las mutaciones terminen en SSTables vacios. Compactarlos evita que la base de datos tenga que realizar una búsqueda para extraer los datos de cada SSTable a fin de ubicar el valor actual de cada columna solicitada en una lectura.

Cuando se realiza la compactación, hay un pico temporal en la I/O del disco y el tamaño de los datos en el disco mientras se leen los SSTables antiguos y se están escribiendo nuevos SSTables.

Cassandra soporta diferentes algoritmos de compactaciones y cada estrategía de compactación esta relacionada con un algoritmo, es decir utiliza el patron Strategy para implementar diferentes modos de compactar. La clase padre de las estrategías es AbstractCompactionStrategy. Y se tienen las siguientes estrategias disponibles:

  • SizeTieredCompactionStrategy (STCS) es la estrategia de compactación predeterminada y se recomienda para tablas de escritura intensiva
  • LeveledCompactionStrategy (LCS) se recomienda para tablas de lectura intensiva
  • DateTieredCompactionStrategy (DTCS), que está destinado a series de tiempo o datos basados en la fecha.


Una característica interesante de la compactación se relaciona con su intersección con la reparación incremental. Una característica llamada anticompactación se añadió en la versión 2.1. Como su nombre lo indica, la anti-compactación es en cierto modo una operación opuesta a la compactación regular, ya que el resultado es la división de un SSTable en dos SSTables, uno que contiene datos reparados y el otro que contiene datos sin reparar. La compensación es que se introduce una mayor complejidad en las estrategias de compactación, que deben manejar los SSTables reparados y no reparados por separado para que no se fusionen entre sí.

sábado, 4 de mayo de 2019

Filtros Bloom en Apache Cassandra

Los filtros Bloom se utilizan para mejorar el rendimiento de las lecturas. Su nombre es por su inventor, Burton Bloom. Los filtros Bloom son algoritmos muy rápidos y no deterministas para comprobar si un elemento es miembro de un conjunto. No son deterministas porque es posible obtener una lectura de falsos positivos de un filtro Bloom, pero no un falso negativo.

Los filtros Bloom funcionan al mapear los valores de un conjunto de datos en una matriz de bits y condensar un conjunto de datos más grande en una cadena de resumen mediante una función hash. El compendio, por definición, utiliza una cantidad de memoria mucho menor que la de los datos originales. Los filtros se almacenan en la memoria y se utilizan para mejorar el rendimiento al reducir la necesidad de acceso al disco en las búsquedas de claves. El acceso al disco suele ser mucho más lento que el acceso a la memoria. Entonces, en cierto modo, un filtro Bloom es un tipo especial de caché. Cuando se realiza una consulta, el filtro Bloom comprueba primero antes de acceder al disco.

Debido a que los falsos negativos no son posibles, si el filtro indica que el elemento no existe en el conjunto, ciertamente no lo hace; pero si el filtro piensa que el elemento está en el conjunto, se accede al disco para asegurarse.

Los filtros Bloom son implementados por la clase org.apache.cassandra.utils.BloomFilter. Cassandra proporciona la capacidad de aumentar la precisión del filtro Bloom (reduciendo el número de falsos positivos) al aumentar el tamaño del filtro, a costa de más memoria. Esta posibilidad positiva falsa es ajustable por tabla.

Los filtros Bloom se utilizan en otras bases de datos distribuidas y tecnologías de almacenamiento en caché, como Apache Hadoop, Google Bigtable y Squid Proxy Cache.

miércoles, 1 de mayo de 2019

C# y F# para Apache Spark


Microsoft anunció el lanzamiento de .NET para Apache Spark.

Microsoft anunció la versión preliminar de .NET para Apache Spark. Apache Spark está escrito en Scala, por lo que siempre ha tenido soporte nativo para este lenguaje. También ha tenido durante mucho tiempo enlaces API para Java, así como los populares lenguajes de ciencia de datos Python y R. Los nuevos enlaces de lenguaje para C# y F# están escritos en una nueva capa de interoperabilidad Spark. En las pruebas en el punto de referencia TPC-H, el rendimiento de .NET fue comparable a otros lenguajes, y en algunos casos fue "2 veces más rápido que Python".

Los desarrolladores pueden reutilizar el código y las librerías compatibles con .NET estándar y "pueden acceder a todos los aspectos de Apache Spark, incluidos Spark SQL, DataFrames, Streaming, MLLib". Los desarrolladores de la nube pueden implementar .NET para Apache Spark en Azure de Microsoft usando Azure HDInsight y Azure Databricks, o en Amazon Web Services usando Amazon EMR Spark y AWS Databricks.

La ejecución de aplicaciones .NET en Spark requiere la instalación de los binarios de Microsoft.Spark.Worker, así como un JDK y los binarios estándar de Apache Spark. El desarrollo de una aplicación requiere la instalación del paquete nuget Microsoft.Spark. Los desarrolladores de Microsoft han enviado Propuestas de mejora de proyectos Spark (SPIP) para incluir la extensión de lenguaje C# y una capa de interoperabilidad genérica en Spark. Sin embargo, Sean Owen, un comentarista de Apache Spark, comentó que sería "altamente improbable" que el trabajo se fusionara con Spark.

La hoja de ruta de .NET para Apache Spark enumera varias mejoras al proyecto que ya está en marcha, incluida la compatibilidad con Apache Spark 3.0, la compatibilidad con la vectorización de .NET Core 3.0 y la compatibilidad con VS Code. .NET para el código fuente de Apache Spark está disponible en Github.

Libros gratis de Java Geeks.

Download IT Guides!

 
JMeter is an application that offers several possibilities to configure and execute load, performance and stress tests using different technologies and protocols. It allows simulating different type of requests against all kind of databases, FTP, HTTP, HTTPS or other kind of servers. Originally JMeter was designed to test web applications, but its functionality has expanded and nowadays allows testing against almost any kind of program and can be used to perform functional tests in your applications..
 
 
Docker is the world's leading software containerization platform. Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment. Docker provides an additional layer of abstraction and automation of operating-system-level virtualization on Linux.
 
 
A design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.
 
 
Elasticsearch is a search engine based on Lucene. It provides a distributed, multitenant capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java and is released as open source under the terms of the Apache License. Elasticsearch is the most popular enterprise search engine followed by Apache Solr, also based on Lucene.
 

Tombstones en Cassandra


En el mundo relacional, podría estar acostumbrado a la idea de una "eliminación suave o eliminación logica". En lugar de ejecutar realmente una instrucción de eliminación de SQL, la aplicación emitirá una instrucción de actualización que cambia un valor en una columna llamada "eliminado", a veces se hace esto por auditoría o mantener registros historico.

Este es un concepto similar en Cassandra llamado Tombstones (que no se como traducirlo). Así es como funcionan todas las eliminaciones. Cuando ejecuta una operación de eliminación, los datos no se eliminan inmediatamente. En su lugar, se trata como una operación de actualización que coloca una marca de eliminado.Tombstones es un marcador de eliminación que se requiere para suprimir datos antiguos en SSTables hasta que se pueda ejecutar la compactación.

Hay una configuración relacionada llamada Garbage Collection Grace Seconds. Esta es la cantidad de tiempo que el servidor esperará para recolectar un registro marcado como eliminado. De forma predeterminada, se establece en 864,000 segundos, el equivalente a 10 días. Cassandra hace un seguimiento del tiempo de marcado, y una vez que esta es más antigua que GCGraceSeconds, será recogida por el recolector de basura. El propósito de este retraso es dar a un nodo que no esté disponible el tiempo de recuperación; Si un nodo está inactivo por más tiempo que este valor, entonces se trata como fallido y reemplazado.


domingo, 28 de abril de 2019

Transacciones Ligeras y Paxos en Cassandra


Cassandra proporciona una consistencia ajustable, que incluye la capacidad de lograr una consistencia fuerte al especificar niveles de consistencia suficientemente altos.

Sin embargo, una consistencia sólida no es suficiente para evitar las condiciones de competencia en los casos en que los clientes necesitan leer y luego escribir datos.

Vamos explicar esto con un ejemplo, supongamos que tenemos una tabla Cliente. Imagine que estamos creando un cliente y que desea administrar los registros de usuarios como parte de una aplicación de administración de cuentas. Al crear una nueva cuenta de usuario, nos gustaría
asegúrarnos de que el registro de usuario no exista, para no sobrescribir involuntariamente los datos de usuario existentes. Así que hacemos una lectura para ver si el registro existe primero, y luego solo realizamos la creación si el registro no existe. El comportamiento que buscamos se denomina consistencia linealizable, lo que significa que nos gustaría garantizar que ningún otro cliente pueda interponerse entre nuestras consultas de lectura y escritura con su propia modificación. Desde la versión 2.0, Cassandra admite un mecanismo de transacción ligero (o "LWT") que proporciona una consistencia linealizable.

La implementación de LWT de Cassandra se basa en Paxos. Paxos es un algoritmo de consenso que permite que los nodos pares distribuidos se pongan de acuerdo sobre una propuesta, sin necesidad de un maestro para coordinar una transacción. Paxos y otros algoritmos de consenso surgieron como alternativas a los enfoques tradicionales basados ​​en el compromiso de dos fases para las transacciones distribuidas.

El algoritmo básico de Paxos consta de dos etapas: preparar / prometer y proponer / aceptar. Para modificar los datos, un nodo coordinador puede proponer un nuevo valor a los nodos de réplica, asumiendo el rol de líder. Otros nodos pueden actuar como líderes simultáneamente para otras modificaciones. Cada nodo de réplica verifica la propuesta, y si la propuesta es la última que ha visto, promete no aceptar las propuestas asociadas con las propuestas anteriores. Cada nodo de réplica también devuelve la última propuesta que recibió que aún está en progreso. Si la propuesta es aprobada por la mayoría de las réplicas, el líder confirma la propuesta, pero con la advertencia de que primero debe cometer cualquier propuesta en curso que haya precedido a su propia propuesta.

La implementación de Cassandra amplía el algoritmo básico de Paxos para admitir la semántica de lectura antes de escritura deseada (también conocida como "comprobar y establecer"), y permitir que el estado se reinicie entre transacciones. Lo hace insertando dos fases adicionales en el algoritmo, para que funcione de la siguiente manera:


  • Preparar / prometer
  • Leer / Resultados
  • Proponer / Aceptar
  • Cometer / Ack


Por lo tanto, una transacción exitosa requiere cuatro viajes de ida y vuelta entre el nodo coordinador y las réplicas. Esto es más costoso que una escritura regular, por lo que debe pensar detenidamente sobre su caso de uso antes de usar LWT.

Las transacciones ligeras de Cassandra están limitadas a una sola partición. Internamente, Cassandra almacena un estado Paxos para cada partición. Esto asegura que las transacciones en diferentes particiones no puedan interferir entre sí.

Puede encontrar la implementación de Cassandra del algoritmo Paxos en el paquete org.apache.cassandra.service.paxos.

viernes, 26 de abril de 2019

Llego Ubuntu 19.04 Disco Dingo


Nueva versión de Ubuntu y que trae de nuevo viejo ...

Yaru, el tema por defecto introducido en Ubuntu 18.10 no soportaba iconos para varias aplicaciones de terceros. Los iconos regulares de estas aplicaciones no armonizaban demasiado bien con los de las instaladas. Ese problema estético fue corregido. También se modificaron los iconos del centro de software, la papelera y el panel de configuración. El fondo de escritorio, como sucede a cada nueva versión, corresponde a la mascota.

Viene con  3.22 de GNOME pero Ubuntu no adopta todas las características completas de la versión.  Podemos seguir teniendo iconos en el escritorio y el panel lateral está presente en forma permanente. Por el contrario, no se incluyeron las (muy necesarias) mejoras en el centro de software ni los controles para activar fractional scalling en HiDPl.

La gran novedad de esta versión, es el soporte para las tarjetas gráficas AMD de gama alta,  mejoras en el rendimiento de la CPU y soporte para más hardware todo gracias a Núcleo Linux 5.0

Dejo link: http://releases.ubuntu.com/19.04/

miércoles, 24 de abril de 2019

Libros a Java geeks

Download Testing eBooks!

 
 
In this digital era, organizations are forced to trade off between faster time to market and flawless user experience. In this eBook, we will discuss:

- How AI is impacting software testing
- The current challenges with test automation
- How AI can help solve these challenges
- How testers and developers can embrace AI
- The future of test automation
 
 
 
Manual testing is a thing of the past. It's time to integrate automation into your DevOps process. So how do you keep up? With continuous integration and continuous delivery.

This guide will dive into the real cost of quality and the effect that CI and CD can have on your DevOps efficiency. It will cover the essentials for maintaining proper test coverage, how to define good coverage and how often you should be running tests. Ready to cut costs and improve the agility of your applications?
 
 
 
The right automated testing tools support the software delivery process in an iterative manner and allow developers to ship high quality code and create exceptional user experiences.

- How to identify your specific needs and challenges relative to the situations you're facing.
- What to look for in a vendor
- What "hidden fees" to consider beyond the license fee
- How to determine the features you need with the help of the included feature-comparison table
- How to prepare for launch once you've selected your solution
 
 

viernes, 19 de abril de 2019

Transferencia indirecta en Cassandra


Veamos el siguiente escenario: una solicitud de escritura se envía a Cassandra, pero un nodo de réplica al que pertenece la escritura, no está disponible debido un problema de la red, falla de hardware o alguna otra razón. Con el fin de garantizar la disponibilidad general del anillo en tal situación, Cassandra implementa una función llamada transferencia indirecta. Se puede pensar en una sugerencia como una pequeña nota Post-it que contiene la información de la solicitud de escritura. Si el nodo de réplica al que pertenece la escritura ha fallado, el coordinador creará una sugerencia, que es un pequeño recordatorio que dice: "Tengo la información de escritura destinada al nodo 4. Voy a recordar esta escritura hasta que el nodo 4 vuelva a estar en línea; cuando lo haga, le enviaré la solicitud de escritura". Es decir, una vez que detecte a través de gossip que el nodo 4 está nuevamente en línea, el nodo 6 entregará al nodo 4 la orden de escritura. Cassandra tiene una sugerencia diferente para cada partición que se va a escribir.

Esto permite que Cassandra esté siempre disponible para escrituras, y generalmente permite que un clúster sostenga la misma carga de escritura incluso cuando algunos de los nodos están inactivos. También reduce el tiempo en que un nodo fallido será inconsistente después de que vuelva a estar en línea.

En general, las sugerencias no cuentan como escrituras para propósitos de nivel de consistencia. La excepción es el nivel de consistencia ANY, que se agregó en 0.6. Este nivel de consistencia significa que un traspaso indirecto solo será suficiente para el éxito de una operación de escritura. Es decir, incluso si solo se pudo grabar una pista, la escritura todavía cuenta como exitosa. Tenga en cuenta que la escritura se considera duradera, pero es posible que los datos no se puedan leer hasta que la sugerencia se envíe a la réplica de destino.

Existe un problema práctico con las transferencia indirecta (y, en este caso, los enfoques de entrega garantizados): si un nodo está fuera de línea durante algún tiempo, los consejos pueden acumularse considerablemente en otros nodos. Luego, cuando los otros nodos notan que el nodo fallado ha vuelto a estar en línea, tienden a inundar ese nodo con solicitudes, justo en el momento en que es más vulnerable (cuando está luchando para volver a trabajar después de una falla). Para resolver este problema, Cassandra limita el almacenamiento de sugerencias a una ventana de tiempo configurable. También es posible deshabilitar el traspaso insinuado por completo.

Como su nombre lo sugiere, org.apache.cassandra.db.HintedHandOffManager es la clase
que gestiona las transferencias indirectas internamente.

Aunque la Transferencia indirecta ayuda a aumentar la disponibilidad de Cassandra, no reemplaza completamente la necesidad de reparación manual para garantizar la consistencia.


jueves, 18 de abril de 2019

Libros de java code geeks

Download IT Guides!

 
Spring Data's mission is to provide a familiar and consistent, Spring-based programming model for data access while still retaining the special traits of the underlying data store. It makes it easy to use data access technologies, relational and non-relational databases, map-reduce frameworks, and cloud-based data services. In this eBook, we provide a compilation of Spring Data examples that will help you kick-start your own projects. We cover a wide range of topics, from setting up the environment and creating a basic project, to handling the various modules (e.g. JPA, MongoDB, Redis etc.).
 
 
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby.In this ebook, we provide a compilation of Selenium programming examples that will help you kick-start your own projects. We cover a wide range of topics, from Installation and JUnit integration, to Interview Questions and Standalone Server functionality.
 
 
IntelliJ IDEA is a Java integrated development environment (IDE) for developing computer software. It is developed by JetBrains, and is available as an Apache 2 Licensed community edition, and in a proprietary commercial edition. Both can be used for commercial development. The IDE provides for integration with build/packaging tools like grunt, bower, gradle, and SBT. It supports version control systems like GIT, Mercurial, Perforce, and SVN. Databases like Microsoft SQL Server, ORACLE, PostgreSQL, and MySQL can be accessed directly from the IDE.
 
 
java.nio (NIO stands for non-blocking I/O) is a collection of Java programming language APIs that offer features for intensive I/O operations. It was introduced with the J2SE 1.4 release of Java by Sun Microsystems to complement an existing standard I/O. The APIs of NIO were designed to provide access to the low-level I/O operations of modern operating systems. Although the APIs are themselves relatively high-level, the intent is to facilitate an implementation that can directly use the most efficient operations of the underlying platform.
 

domingo, 14 de abril de 2019

Caching en Apache Cassandra


Como vemos en la imagen anterior, Cassandra proporciona tres formas de almacenamiento en caché:

  • La key cache almacena un mapa de claves de partición, lo que facilita un acceso de lectura más rápido a los archivos SSTables almacenados en el disco. La key cache se almacena en el heap de JVM.
  • La row cache almacena filas enteras y puede acelerar enormemente el acceso de lectura para las filas a las que se accede con frecuencia, pero el costo de memoria es mayor. La row cache se almacena en la memoria fuera del heap.
  • La counter cache se agregó en la versión 2.1 para mejorar el rendimiento del contador al reducir la contención de bloqueo para los contadores de acceso más frecuente.

De forma predeterminada, key cache y counter cache estan habilitados, mientras que la row cache está desactivada, ya que requiere más memoria. Cassandra guarda sus cachés en el disco periódicamente para ser más rápida en un reinicio de los nodos.


sábado, 13 de abril de 2019

Resultado de la encuesta 2019 de StackOverflow

StackOverflow desde hace algunos años hace unas encuestas que son muy buenas y nos permiten ver como esta el mercado del software.

En ocasión, no vi algo muy novedoso solo me llamo la atención es el lenguaje más amado :


Claramente le voy a tener que dar una oportunidad a Rush. 

Dejo link: https://insights.stackoverflow.com/survey/2019