En BigTable/GFS y Cassandra terminología, ¿cuál es la definición de un SSTable?

InformationsquelleAutor knorv | 2010-04-04

4 Comentarios

  1. 96

    Ordenados Tabla de Cadenas (tomado de google) es un archivo de clave/valor de la cadena de pares ordenados por teclas

    • Gracias por otro excelente PARA Cassandra respuesta! Por CIERTO, ¿han visto a esta pregunta: stackoverflow.com/questions/2573106/…
    • Es generalmente inmutable?
    • sí, sstables son inmutables por diseño-que es una característica impresionante
  2. 53

    «Un SSTable proporciona un persistente,ordenó inmutable mapa de teclas de valores, donde tanto las claves y los valores son arbitrarios cadenas de bytes. Las operaciones se proporcionan para buscar el valor asociado a una clave especificada, y para iterar sobre todos los pares clave/valor en un determinado intervalo de teclas. Internamente, cada SSTable contiene una secuencia de bloques (normalmente cada bloque es de 64 kb en tamaño, pero esto es configurable). Un índice del bloque (almacenados en el final de la SSTable) se utiliza para localizar los bloques; el índice se carga en memoria cuando el SSTable se abre. Una búsqueda se puede realizar con una sola búsqueda en disco: en primer lugar, encontrar el bloque adecuado mediante la realización de una búsqueda binaria en el índice en la memoria, y entonces la lectura de la correspondiente bloque de disco. Opcionalmente, un SSTable puede ser completamente mapeado en memoria, que nos permite realizar búsquedas y exploraciones sin tocar el disco.»

    • «sin necesidad de tocar el disco» -> «sin ser conscientes de que el disco está siendo tocado». La memoria asignada IO es una aplicación muy útil técnica porque los delegados de la real IO para el sistema operativo, asumiendo que se puede hacer un buen trabajo en la caché (especialmente cuando varios procesos de compartir el mismo archivo). Pero tiene la desventaja de que usted no tiene el control de la misma. Si la página no está residente en memoria, el hilo se bloquea y no puede realizar otras operaciones; su contraste con «async IO», en donde usted puede registrar una devolución de llamada y hacer otras cosas en el mismo hilo, mientras que la IO es la pendiente.
    • Es absolutamente posible tener el control de la memoria asignada IO al menos hasta el punto de ser capaz de asegurar que ciertas páginas se encuentran en la memoria o se han comprometido a disco (aún hay margen de maniobra para las páginas que no están garantizados para ser de la memoria, pero muy bien podría ser). Eso es lo maravilloso de las cosas como mlock(), msync(), y MAP_LOCKED son todos acerca de. También puede obtener una comprensión de lo que actualmente está y no está paginada en medio de mincore().
    • sí, hay formas de controlarlo. Sin embargo, normalmente se usa para los críticos de rendimiento secciones (en tiempo real) o cuestiones relacionadas con la seguridad (como evitar que un en-memoria de la contraseña se pone intercambiado en el disco). Los archivos asignados en memoria son muy útiles precisamente por el hecho de que usted no tiene que decidir cuál de ellos para mantener en la memoria; de lo contrario se podía leer todo el archivo en la memoria sin mmap y lograr el mismo efecto. De hecho, acabo de grepped a través de la cassandra código; la única llamada es mlockall(MCL_CURRENT); hecho en el inicio. Véase también: goo.gl/AEgPM
    • La anterior cita es de el BigTable de papel.
  3. 3

    De un comprimido se almacena en forma de SSTables.

    SSTable (mapeada a GFS) es clave-valor de la base inmutable de almacenamiento. Almacena los bloques de datos, cada uno es de 64KB.

    Definiciones:

    • Índice de las teclas: tecla y ubicación de inicio
    • Fragmento es una unidad de almacenamiento en GFS, réplica de gestión son por porción
  4. 3
    • SSTable (engl. Ordena las Cadenas de la Tabla) es un archivo de clave/valor de cadena
      pares ordenados por las teclas.

    • Un SSTable proporciona un persistente,ordenó inmutable mapa de teclas para
      valores, donde tanto las claves y los valores son arbitrarios cadenas de bytes.

    • Internamente, cada SSTable contiene una secuencia de bloques (normalmente

      cada bloque es de 64 kb en tamaño, pero esto es configurable).

Dejar respuesta

Please enter your comment!
Please enter your name here