MX2011003883A - Manejo de division en un almacenamiento estructurado dividido, escalable y disponible. - Google Patents
Manejo de division en un almacenamiento estructurado dividido, escalable y disponible.Info
- Publication number
- MX2011003883A MX2011003883A MX2011003883A MX2011003883A MX2011003883A MX 2011003883 A MX2011003883 A MX 2011003883A MX 2011003883 A MX2011003883 A MX 2011003883A MX 2011003883 A MX2011003883 A MX 2011003883A MX 2011003883 A MX2011003883 A MX 2011003883A
- Authority
- MX
- Mexico
- Prior art keywords
- division
- divisions
- server
- master
- rows
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Se proporciona manejo de división para un sistema de almacenamiento escalable, estructurado. El sistema de almacenamiento proporciona almacenamiento representado por una o más tablas, cada una de las cuales incluye filas que representan entidades de datos. Una tabla se divide en un número divisiones, cada división incluyendo una variedad de filas contiguas. Las divisiones son servidas por servidores de tabla y se manejan por un maestro de tabla. La información de distribución de carga para los servidores de tabla y divisiones se rastrea, y el maestro de tabla determina dividir y/o fusionar divisiones basándose en la información de distribución de carga.
Description
MANEJO DE DIVISION EN UN ALMACENAMIENTO ESTRUCTURADO
DIVIDIDO, ESCALABLE Y DISPONIBLE
ANTECEDENTES
Los sistemas distribuidos, que incluyen granjas de servidor, servicios web, y similares, se han vuelto crecientemente comunes para proporcionar grandes cantidades de recursos computacionales y de almacenamiento. Por ejemplo, se han utilizado sistemas de almacenamiento distribuidos para almacenar y recuperar grandes cantidades de datos para varias aplicaciones. En algunos casos, los sistemas de almacenamiento utilizan almacenamiento estructurado para almacenar, recuperar, y consultar más eficientemente datos. Un sistema de almacenamiento estructurado puede almacenar datos a través de múltiples nodos mediante una red. A medida que la cantidad de recursos de cómputo deseados para proporcionar tal almacenamiento aumenta, tales sistemas de almacenamiento pueden ser "escalados" al agregar dispositivos de cómputo adicionales con lo cual se proporciona una topología flexible en donde pueden agregarse como sea necesario recursos adicionales. Por consiguiente, los sistemas de almacenamiento estructurados pueden ser escalables, por ejemplo, de petabytes a exabytes de datos almacenados. Como un resultado, frecuentemente es complejo manejar datos dentro de los sistemas de almacenamiento estructurados para que los datos estén siempre disponibles para acceso y duraderos para prevenir pérdida de datos.
BREVE DESCRIPCION DE LA INVENCION
Esta breve descripción se proporciona para introducir una selección de conceptos en una forma simplificada que además se describe a continuación en la descripción detallada. Esta breve descripción no pretende identificar características clave o características esenciales del tema reclamado, ni pretende utilizarse como un auxiliar al determinar el alcance del tema reclamado.
Las modalidades de la presente invención se refieren a manejo de división en un sistema de almacenamiento de datos estructurado. En el almacenamiento, los datos estructurados se dividen en un número de divisiones, que pueden servirse por diferentes servidores. Se utiliza un mapa de división para mantener el rastro de paraderos de estas divisiones. Más específicamente, al utilizar el mapa de división, un cliente puede investigar que servidor está sirviendo una pieza específica de datos. Se rastrea información de carga detallada para divisiones. Las divisiones pueden moverse entre servidores para lograr balance de carga a través de servidores. En algunas modalidades, para lograr mejor balance de carga, se identifica una división con carga alta para división. Una ubicación para dividir la división se determina, y la división se divide para crear divisiones hijo, que pueden descargarse a otro servidor en algunas modalidades. Se actualiza un mapa de división para reflejar que la división se ha dividido a divisiones hijo. En algunas modalidades, se identificaron dos o más divisiones para fusionar. Las divisiones se fusionan y se actualiza un mapa de división para reflejar la división fusionada.
El almacenamiento estructurado se construye en la parte superior del sistema de corriente, que presenta una interfase de sistema de archivo únicamente anexa. Una corriente es análoga a un archivo únicamente anexo. Cada división tiene un grupo de corrientes asociadas con éste. Todo el estado persistente de la división se mantiene en el grupo de corrientes con las que se asocia. Entre el grupo de corrientes, existe una corriente de metadatos para la división, que contiene los indicadores a todas las otras corrientes de la división así como la información esencial de esa división, tal como el rango clave de división de todas las filas incluidas en la división.
BREVE DESCRIPCION DE LOS DIBUJOS
La presente invención se describe en detalle a continuación con referencia a las figuras de dibujo anexas, en donde:
La Figura 1 es un diagrama de bloques de un ambiente de cómputo ilustrativo adecuado para usarse en la implementación de modalidades de la presente invención, y,
La Figura 2 ilustra una estructura de tabla de acuerdo con una modalidad de la presente invención;
La Figura 3 es un diagrama de bloques que muestra un sistema ilustrativo en donde pueden implementarse las modalidades de la presente invención;
La Figura 4 es un diagrama de bloques que muestra una división de acuerdo con una modalidad de la presente invención;
La Figura 5 es un diagrama de flujo que muestra un método para dividir una división de acuerdo con la modalidad de la presente invención;
La Figura 6 ilustra ejemplo de una división padre que se divide en dos divisiones hijo de acuerdo con una modalidad de la presente invención.
La Figura 7 es un diagrama de flujo que muestra un método para dividir una división de acuerdo con otra modalidad de la presente invención;
La Figura 8 és un diagrama de flujo que muestra un método para fusionar divisiones en una división fusionada de acuerdo con una modalidad de la presente invención;
La Figura 9 es un diagrama de flujo que muestra un método para recuperar una división corrupta de acuerdo con una modalidad de la presente invención; y
La Figura 10 es un diagrama de flujo con muestra un método para versiones y mejora de división de acuerdo con una modalidad de la presente invención.
DESCRIPCION DETALLADA
El tema de la presente invención se describe con especificación aquí para satisfacer requerimientos obligatorios. Sin embargo, la misma descripción no pretende limitar el alcance de esta patente. En lugar de eso, los inventores han contemplado que el tema reclamado también puede representarse en otras formas, para incluir diferentes pasos o combinaciones de pasos similares a los descritos en este documento, en conjunto con otras tecnologías presentes o futuras. Además, aunque los términos "paso" y/o "bloque" pueden utilizarse aquí para connotar diferentes elementos de métodos empleados, los términos no deben interpretarse como implicando ningún orden particular entre dos o más varios pasos aquí descritos a menos y excepto cuando se describa explícitamente el orden de pasos individuales.
Las modalidades de la presente invención proporcionan un almacenamiento estructurado escalable, disponible, y duradero. El almacenamiento estructurado está representado por un número de tablas, cada una de las cuales incluye múltiples filas, cada fila que representa una entidad de datos. Una tabla se divide en un número de divisiones, cada división que incluye un rango de filas de la tabla. Las divisiones se almacenan en servidores de cable que se manejan al utilizar un maestro de tabla.
En algunas modalidades, las divisiones se dividen para propósitos de distribución de carga. La información de distribución de carga se rastrea para los servidores de tabla y divisiones. Basándose en la información de distribución de carga, el maestro de tabla puede decidir cargar divisiones de balance y reasignar divisiones a diferentes nodos con el fin de distribuir la carga. Además, para algunas divisiones, el maestro de tabla puede recibir dividir una división para distribuir la carga actual. El maestro de tabla determina una relación de división y consulta al servidor de tabla que sirve la división para información clave para localizar la división. Basándose en la información clave recibida del servidor de tabla, el maestro de tabla instruye al servidor de tabla para dividir la división. Con la recepción de la solicitud de división, el servidor de tabla descarga la división objetivo, crea las divisiones hijo, y empieza a servir a las divisiones hijo. En algunas modalidades, una división hijo puede asignarse a otro servidor de tabla. Se actualiza un mapa de división para reflejar el servidor(es) de tabla que sirve a las divisiones hijo.
En algunas modalidades, se fusionan las divisiones. De nuevo, la información de distribución de carga se rastrea para los servidores de tabla y divisiones. Basándose en la información de distribución de carga, se identifican dos o más divisiones para fusionar. El servidor(es) de tabla que sirve las divisiones se instruye para detener el servicio de las divisiones. Las divisiones se fusionan y se cargan a un servidor de tabla, que empieza a servir la división fusionada. Un mapa de división se actualiza para reflejar el servidor de tabla que sirve la división fusionada.
Por consiguiente, en un aspecto, una modalidad de la presente mención se dirige a un método implementado por uno o más dispositivos de cómputo dentro de un sistema de almacenamiento estructurado en donde se representa el almacenamiento estructurado por una o más tablas, cada tabla que incluye una pluralidad de filas, cada fila que representa una entidad de datos almacenada por el sistema de almacenamiento estructurado y que incluye una o más claves para identificar la fila, la pluralidad de filas que está dividida entre una pluralidad de divisiones, cada división incluye una variedad de filas de la pluralidad de filas dentro de la tabla, en donde la pluralidad de divisiones se almacena en una pluralidad de servidores de tabla, y en donde un maestro de tabla controla la asignación de división para la pluralidad de servidores de tabla. El método es para dividir una división en divisiones hijo e incluye identificar la división para dividir basándose en información de carga para la división, en donde la información de carga incluye información que especifica carga en cada una de dos o más divisiones en la división. El método también incluye determinar, por el maestro de tabla, una relación de división para dividir la división basándose en la carga en cada una de dos o más porciones de la división. El método además incluye consultar al servidor de tabla para información clave que indica una ubicación real dentro de la división que corresponde con la relación de división. El método también incluye recibir información clave en el maestro de tabla del servidor de tabla, la información clave indica la ubicación real dentro de la división de corresponde con la relación de división. El método además incluye enviar una solicitud de división del maestro de tabla al servidor de tabla, la solicitud de división indica dividir la división basándose en la información clave. El método también incluye dividir la división en una ubicación correspondiente con la información clave para crear las divisiones hijo. El método además incluye notificar al maestro de tabla del término de la división. El método incluso además incluye actualizar un mapa de división basándose en la división que se divide en las divisiones hijo, el mapa de división que almacena mapas entre la pluralidad de divisiones y la pluralidad de servidores de tabla que sirven a la pluralidad de divisiones.
En otra modalidad de la invención, un aspecto está dirigido a una o más medios de almacenamiento por computadora que almacenan instrucciones útiles por computadora para realizar un método para manejar un sistema de almacenamiento estructurado representado por una o más tablas, cada tabla que incluye una pluralidad de filas, cada fila que representa una entidad de datos almacenada por el sistema almacenamiento estructurado y que incluye una o más claves para identificar la fila, la pluralidad de filas se divide entre una pluralidad de divisiones, cada división incluye una variedad de filas de la pluralidad de filas dentro de la tabla, en donde la pluralidad de divisiones se almacena en la pluralidad de servidores de tabla, y en donde un maestro de tabla controla la asignación de división a la pluralidad de servidores de tabla. El método es para fusionar al menos dos divisiones de la tabla en una división fusionada e incluye rastrear información de carga para la pluralidad de divisiones en la pluralidad de servidores de tabla. El método también incluye identificar, por el maestro de tabla, al menos dos divisiones para fusionar basándose en la información de carga. El método además incluye brear, por el maestro de tabla, una corriente de metadatos para la división fusionada, el método también incluye descargar al menos dos divisiones de al menos un servidor de tabla que sirve al menos a dos divisiones. El método además incluye asignar, por el maestro de tabla, la división fusionada el servidor de tabla seleccionado de la pluralidad de servidores de tabla. El método incluso además incluye cargar y servir a la división fusionada en el servidor de tabla seleccionado.
Una modalidad adicional de la presente invención se dirige a uno o más medios de almacenamiento por computadora que almacenan instrucciones útiles por computadora para realizar un método para manejar un sistema de almacenamiento estructurado representado por una o más tablas, cada tabla incluye una pluralidad de filas, cada fila representa una entidad de datos almacenada por el sistema de almacenamiento estructurado e incluye una o más claves para identificar la fila, la pluralidad de filas está dividida entre una pluralidad de divisiones, cada división incluye una variedad de filas de la pluralidad de filas dentro de la tabla, en donde la pluralidad de divisiones se almacena en una pluralidad de servidores de tabla, y en donde un maestro de tabla controla la asignación de división a la pluralidad de servidores de tabla. El método es para dividir una
división de la tabla en al menos dos divisiones hijo e incluye rastrear información de carga para la pluralidad de divisiones en la pluralidad de servidores de tabla. El método también incluye identificar, por el maestro de tabla, la división para dividir basándose en la información de carga, en donde información de carga para la división identifica diferentes cargas en diferentes porciones de la división. El método además incluye determinar, en el maestro de tabla, una relación de división para dividir la división, en donde la relación de división se especifica basándose en información de carga y representa un punto en la división en donde una primera porción de la división incluye una primera cantidad de carga y una segunda porción de la división incluye una segunda cantidad de carga. El método incluso además incluye enviar una solicitud del maestro de tabla al servidor de tabla, la solicitud para información clave que identifica una ubicación real en la división que corresponde a la relación de división. El método también incluye determinar, por el servidor de tabla, la información clave que identifica la ubicación real en la división que corresponde a, la relación de división y que comunica la información clave del servidor de tabla al maestro de tabla. El método además incluye construir, en el maestro de tabla, una corriente metadatos para cada una de las divisiones hijo. El método incluso además incluye enviar una solicitud de división del maestro de tabla al servidor de tabla, y construir, en el servidor de tabla, las divisiones hijo de la división. El método también incluye dejar de servir a la división en el servidor de tabla; y cargar y servir las divisiones hijo en el servidor de tabla. El método además incluye enviar una notificación de término de división desde el servidor de tabla hacia el maestro de tabla. El método incluso además incluye actualizar un mapa de división basándose en la división que se divide en las divisiones hijo, el mapa de división que almacena mapas entre la pluralidad de divisiones y la pluralidad de servidores de tabla que sirve la pluralidad de divisiones.
Habiendo descrito brevemente una revisión de modalidades de la presente invención, un ambiente operativo ilustrativo en donde las modalidades de la presente invención pueden implementarse se describe a continuación con el fin de proporcionar un contexto general para varios aspectos de la presente invención. Haciendo referencia inicialmente la Figura 1 en particular, un ambiente operativo ilustrativo para implementar modalidades de la presente invención se muestra y designa generalmente como el dispositivo de cómputo 100. El dispositivo de cómputo 100 es sólo un ejemplo de un ambiente de · cómputo adecuado y no pretende sugerir ninguna limitación al alcance de uso o funcionalidad de la invención. El dispositivo de cómputo 100 tampoco debe interpretarse como teniendo ninguna dependencia o requerimiento que se relaciona con cualquiera o combinación de componentes ilustrados.
La invención puede describirse en el contexto general de código de computadora o instrucciones útiles por máquina, que incluyen instrucciones ejecutables por computadora tales como módulos de programa, que se ejecutan por una computadora u otra máquina, tal como un asistente de datos personal u otro dispositivo portátil. Generalmente, los módulos de programa que incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc., hacen referencia al código que realiza tareas particulares o implementa tipos de datos abstractos particulares. La invención también puede practicarse en una variedad de configuraciones de sistema, que incluyen dispositivos portátiles, electrónica de consumidor, computadoras de propósito general, dispositivos de cómputo de más especialidad, etc. La invención también puede practicarse en ambientes de cómputo distribuidos en donde se realizan tareas por dispositivos de procesamiento remoto que están enlazados a través de una red de comunicaciones.
Con referencia a la Figura 1, el dispositivo de cómputo 100 incluye un conductor común 110 que acopla directa o indirectamente los siguientes dispositivos: memoria 112, uno o más procesadores 114, uno o más componentes de presentación 116, puertos de entrada/salida 118, componentes de entrada/salida 120, y un suministro de energía ilustrativo 122. El conductor común 110 representa lo que pueden ser uno o más conductores comunes (tal como un conductor común de dirección, conductor común de datos, o combinación de los mismos). Aunque los varios bloques de la Figura 1 se muestran con líneas para la búsqueda de claridad, en realidad, delinear varios componentes no es tan claro, y metafóricamente, las líneas serán de forma más precisas y confusas. Por ejemplo, uno puede considerar un componente de presentación tal como un
dispositivo de presentación para ser un componente l/O. También, los procesadores tienen memoria. Se reconoce que tal es la naturaleza de la técnica, y reiteramos que el diagrama de la Figura 1 es simplemente ilustrativo de un dispositivo de cómputo ilustrativo que puede utilizarse en conexión con una o más modalidades de la presente invención. No se hace distinción entre tales categorías como "estación de trabajo", "servidor", "laptop", "dispositivo portátil", etc., ya que los tres se contemplan dentro del alcance de la Figura 1 hacen referencia a "dispositivo de cómputo".
El dispositivo de cómputo 100 típicamente incluye una variedad de medio legibles por computadora. Los medio legibles por computadora puede ser cualquier medio disponible que puede accederse por el dispositivo de cómputo 100 e incluye tanto medios volátiles como no volátiles, medio removibles y no removibles. A manera de ejemplo, y no de limitación, los medios legibles por computadora pueden comprender medios de almacenamiento por computadora y medios de comunicación. Los medios de almacenamiento por computadora incluyen tanto medios volátiles como no volátiles, removibles y no removibles ¡mplementados en cualquier método o tecnología para almacenamiento de información tal como instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento por computadora incluyen, pero no se limitan a, RAM, ROM, EEPROM, memoria flash u otra tecnología de memoria, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento de
disco óptico, casetes magnéticos, cinta magnética, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede utilizarse para almacenar la información deseada y que puede accederse por el dispositivo de cómputo 100. Los medios de comunicación típicamente representan instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos en una señal de datos, modulada tal como una onda portadora u otro mecanismo de transporte e incluye cualquier medio de suministro de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características establecidas o cambiadas de tal forma para codificar información en la señal. A manera de ejemplo, y no de limitación, los medios de comunicación incluyen medios por cable tal como conexión .de red por cable o por cable directa, y medios inalámbricos tal como medios acústicos, RF, infrarrojos y otros inalámbricos. Combinaciones de cualquiera de los anteriores también deben incluirse dentro del alcance de medios legibles por computadora.
La memoria 112 incluye medios de almacenamiento por computadora en la forma de memoria volátil y/o no volátil. La memoria puede ser removible, no removible, o una combinación de los mismos. Los dispositivos de hardware ilustrativos incluyen memoria de estado sólido, unidades duras, unidades de disco óptico, etc. El dispositivo de cómputo 100 incluye uno o más procesadores que leen datos de varias entidades tal como memoria 112 o componentes l/O 120. El componente(s) de presentación 116 presenta indicaciones de datos a un usuario u otro dispositivo. Los componentes de presentación ilustrativos incluyen un dispositivo de presentación, bocina, componente de impresión, componente vibratorio, etc.
Los puertos l/O 118 permiten que el dispositivo de cómputo 100 se acople lógicamente a otros dispositivos que incluyen componentes l/O 120, algunos de los cuales pueden ser incorporados. Los componentes ilustrativos incluyen un micrófono, palanca de mandos, almohadilla de juegos, antena parabólica, escáner, impresora, dispositivo inalámbrico, dispositivo en red, etc.
Modelo de Datos de Alto Nivel
De acuerdo con modalidades de la presente invención, el almacenamiento estructurado se representa por tablas, en donde una tabla contiene un grupo de filas. A manera de ilustración, la Figura 2 ilustra una porción de una tabla 200 de acuerdo con una modalidad de la presente invención. Cada fila en la tabla 200, tal como la fila 202, representa una entidad de datos y contiene un grupo de propiedades, que se identifican en una serie de columnas, que incluyen las propiedades 204, 206 y 208 (los valores de datos de columnas 208 se dejan vacíos para simplificación y propósitos de claridad). Una propiedad/columna puede ser, por ejemplo, un nombre, par de valor escrito, u otro nombre para múltiples mapas de valor escrito. La fila y/o cada propiedad individual puede o no tener versiones. La misma tabla puede tener un esquema fijo en donde cada fila en la tabla tiene las mismas propiedades con los mismos tipos, o puede no tener ningún esquema impuesto en donde cada fila puede tener un grupo diferente de propiedades y tipos almacenados.
El grupo estándar de operaciones realizadas en un almacenamiento estructurado incluye la capacidad de insertar, actualizar y eliminar tablas, filas y propiedades además, la funcionalidad se proporciona para escanear y consultar en tablas, filas y propiedades para encontrar un grupo de tablas, filas, o propiedades que coinciden con el escaneo/consulta especificado.
División
Las tablas pueden crecer a billones o tri I Iones de filas y terabytes/petabytes de datos, y una tabla puede necesitar distribuirse a través de miles de servidores para manejar el tráfico/carga de las diferentes partes de una tabla. Para lograr esta escalabilidad para almacenamiento estructurado, las modalidades emplean división al dispersar tablas y filas en los servidores. La división agrupa/rompe las filas en una tabla en divisiones, y entonces las divisiones pueden asignarse a y servirse (proporcionar acceso de lectura y escritura a) desde diferentes servidores.
Para hacer a la tabla escalable, la tabla tiene de una a muchas claves que se llaman las propiedades que forman las claves de división. Por ejemplo, con referencia a la tabla 200 de la Figura 2, la primera columna 204 de la tabla 200 incluye una clave de división para cada fila/entidad. Si no hay más de una propiedad/columna de clave de división para una tabla dada, entonces las propiedades/columnas combinadas juntas forman una clave edición compuesta para esa tabla. El valor de la clave de división para una fila se utiliza para identificar la división a la cual pertenece la entidad/fila. Las filas con el mismo valor clave de división se dice que se agrupan en la misma división.
Además de las claves de división, cada fila puede tener de cero a muchas propiedades/columnas clave de fila adicionales. Por ejemplo, haciendo referencia de nuevo a la tabla 200 de la Figura 2, la segunda columna 206 de la tabla 200 incluye una clave de fila para cada fila/entidad. La clave de fila representa la ID única de la fila dentro de la división. La clave de división combinada en la clave de fila representa la clave primaria (ID única) para la fila/entidad de la tabla. La clave primaria representa el orden de clasificación primario para las divisiones en la tabla. Y si no existen claves de fila, entonces la clave de división es la clave primaria y tiene que identificar únicamente cada entidad en la tabla. Aunque la descripción a continuación discute modalidades de la invención en términos de una clave de división individual y clave de fila individual, lo mismo es aplicable cuando se utiliza claves de división y/o fila múltiples.
La clave de división se utiliza para agrupar filas que tienen el mismo "valor" de clave de división, mientras la clave de fila representa la ID única de la fila dentro de la división. El rompimiento de las filas de tabla basándose en el valor de clave de división se denomina aquí como la división de la tabla. Esto agrupa/rompe las filas de tabla en divisiones. Una división es el grupo de filas con el mismo valor de clave de división, para que todas las filas con la misma clave de división siempre se almacenen en la misma división. Por lo tanto, dos filas con el mismo valor de clave de división están en la misma división, y no se alinean a través de dos divisiones. Adicionalmente, en algunas modalidades, la definición de división se extiende para permitir que múltiples filas con diferentes valores de clave de edición se agrupen en la misma división mientras sus valores aparecen contiguos en el espacio de nombre de clave de división. A manera de ejemplo con referencia a la tabla 200 de la Figura 2, se ilustran cuatro divisiones, que incluyen una primera división (P1 210), una segunda división (P2 212), una tercera división (P3 214), y una cuarta división (P4 216). Como se muestra en la Figura 2, algunas divisiones incluyen filas de un valor de clave de división individual, mientras otras divisiones incluyen filas de múltiples valores clave de división. Como ejemplos de lo anterior, P1 210 incluye todas las filas que tienen un valor clave de división de 1 y P2 212 incluye todas las filas que tienen un valor clave de división de 2. Como ejemplos de lo anterior, P3 214 incluye todas las filas que tienen un valor clave de división 3, 4 ó 5, y P4 216 incluye todas las filas que tienen un valor clave de división de 6 ó 7.
Las ventajas de división incluyen, pero no se limitan a: (1) la capacidad de escalar acceso a la tabla al dividirla en divisiones y distribuir las divisiones en los servidores basándose en los patrones de acceso y necesidades de tráfico de los datos, y (2) filas en la misma división se agrupan y acceden desde el mismo servidor de tabla, que permite consulta más eficiente, escaneos, y guardado en memoria cache cuando la operación se logra dentro de una división. El escaneo a través de una división es mucho más eficiente ya que, máximo, solamente esas filas dentro de la división necesitan escanearse, ya que se acceden de un servidor de tabla individual para la división, en lugar de tener que atravesar potencialmente la tabla completa si no especifica a la clave de división cuando se consulta.
Arquitectura de Alto Nivel
De acuerdo con modalidades de la presente invención, un grupo de servidores, denominado aquí como "servidores de tabla", almacenan y proporcionan acceso al sistema de almacenamiento estructurado. Adicionalmente, un grupo de servidores, denominado aquí como "maestros de tabla", manejan los servidores de tabla. Un "cliente de tabla" proporciona las aplicaciones de acceso al sistema de almacenamiento estructurado.
Haciendo referencia ahora a la Figura 3, se proporciona un diagrama de bloques que ilustra una arquitectura de alto nivel de un sistema 300 de acuerdo con una modalidad de la presente invención. Se debe entender que esta y otras disposiciones aquí descritas se establecen únicamente como ejemplos. Otras disposiciones y
elementos (por ejemplo, máquinas, interfases, funciones, órdenes, y agrupaciones de funciones, etc.) pueden utilizarse además de o en lugar de aquellos mostrados, y algunos elementos pueden omitirse del todo. Además, muchos de los elementos aquí descritos son entidades funcionales que pueden implementarse como componentes independientes o distribuidos o en conjunto con otros componentes, y en cualquier combinación y ubicación adecuada. Varias funciones aquí descritas que se realizan como una o más entidades pueden llevarse a cabo por hardware, firmware, y/o software. .Por ejemplo, varias funciones pueden llevarse a cabo por un procesador que ejecuta instrucciones almacenadas en la memoria.
Entre otros componentes no mostrados, el sistema 300 generalmente incluye un maestro de tabla 302, servidores de tabla 304, 306, 308, 310, y un cliente de tabla 312. Cada uno puede recibir en cualquier tipo de dispositivo de cómputo, tal como dispositivo de cómputo 100 descrito con referencia a la Figura 1, por ejemplo. Los componentes del sistema 300 pueden comunicarse entre sí a través de una red, que puede incluir, sin limitación, una o más redes de área local (LAN) y/o redes de área ancha (WAN). Se debe entender que aunque únicamente un maestro de tabla individual, cuatro servidores de tabla, y un cliente tabla individual se muestra en la Figura 3, cualquier número de maestros de tabla, servidores de tabla, y clientes de tabla pueden emplearse dentro del sistema 300 dentro del alcance de modalidades de la presente invención.
El maestro de tabla 302 es responsable de: (1) asignar divisiones a servidores de tabla 304, 306, 308, 310; (2) determinar rápidamente cuando no se sirve una división debido a una falla y reasigna la división a un servidor de tabla diferente; (3) controlar el balance de carga de divisiones entre servidores de tabla 304, 306, 308, 310, y (4) verificar la salud de los servidores de tabla 304, 306, 308, 310.
Cada uno de los servidores de tabla 304, 306, 308, 310 es responsable de proporcionar acceso de lectura y escritura a divisiones asignadas a éste por el maestro de tabla. Cada uno de los servidores de tabla 304, 306, 308, 310 puede alojar de cero a muchas divisiones. En el ejemplo de la Figura 3, TS1 304 aloja divisiones P1 y P4, TS2 306 aloja divisiones P2 y P7, TS3 308 aloja división P3, y TS4 310 aloja divisiones P5 y P6.
El cliente de tabla 312 está enlazado a una aplicación y se utiliza para emitir comandos a las divisiones mantenidas por los servidores de tabla 304, 306, 308, 310. El cliente de tabla 312 utiliza un mapa de división para determinar el servidor de tabla que sirva a la división, y envía comandos a ese servidor de tabla. El cliente de tabla 312 también recibe los resultados de regreso del servidor de tabla y no pasa la aplicación. El mapa de división es una tabla especial, que almacena el mapa entre las divisiones y los servidores de tabla que lo sirven, y se mantiene por el maestro de tabla 302.
Como se representa en la Figura 4, internamente, una división 400 servida en un servidor de tabla incluye tres partes principales: un registro de actualización 402. una a muchas tablas de memoria
404, y cero a muchas tablas de archivo 406. El registro de actualización 402 mantiene rastro de los cambios recientes a la división en almacenamiento persistente. La tabla de memoria 404 es la versión en memoria de las actualizaciones recientes (delta) en el registro de actualización. Hay cambios delta recientes a la división 400. Cuando la tabla de memoria 404 se vuelve lo suficientemente grande o tiene suficientes cambios en ella, la tabla de memoria 404 se revisa en una tabla de archivo 406, que se persiste al almacenamiento. Cuando esto ocurre, todas las solicitudes en el registro de actualización 404 hasta en la tabla de memoria revisada 404 pueden moverse desde el registro de actualización 402. Como se describió previamente, una división tiene un grupo de corrientes para almacenar su estado persistente. El registro de actualización 402 almacena en una de estas corrientes, que se llama una corriente de registro de actualización. Todas las tablas de archivo 406 se almacenan en una de estas corrientes, que se denomina a una corriente de tabla de archivo.
Cuando un servidor de tabla carga una división, el servidor de tabla reproduce todas las solicitudes en el registro de actualización ya que el punto de revisión más reciente, con el fin de reconstruir la tabla de memoria de regreso al estado correcto antes de que la división se descargue por último.
Cuando se accede a una división en un servidor de tabla, el servidor de tabla primero observa para ver si existe una fila coincida en la tabla de memoria con el fin de ver todos los cambios recientes, y si no hay coincidencia, de su cache de página y tabla de archivo para los datos.
Pueden existir múltiples tablas de memoria para una división y múltiples tablas de archivo. Pueden existir múltiples tablas de memoria debido a que cuando una tabla de memoria se llena, necesita revisarse a una tabla de archivo. Cuando esto ocurre, la tabla de memoria actual se establece para ser únicamente de lectura mientras se revisa, y una nueva tabla de memoria se crea para escritura. Por lo tanto, una división siempre tiene una tabla de memoria que se utiliza para actualizaciones (delta) recientes, y puede tener una o más tablas de memoria que se revisan de forma floja. Una tabla de memoria se revisa a una tabla de archivo, puede eliminarse o recolectarse en basura.
Debido a toda la revisión hecha para una división, existen múltiples puntos de revisión de tabla de archivo para la división. Esto significa que cuando los datos necesitan leerse desde las tablas de archivo, potencialmente múltiples tablas de archivo necesitan buscarse y se revisan de las más recientes a las más antiguas. Esto es debido a que la tabla de archivo más reciente escrita contiene los cambios más recientes para la división. Cuando se revisaron suficientes tablas de archivo para una división, el servidor de tabla flojamente compacta/fusiona las tablas de archivo juntas en una tabla de archivo fusionada nueva con el fin de reducir el número de tablas de archivo que se ha buscado con el fin de encontrar los datos que se buscaron para una división.
Almacenamiento Estructurado, Escalable, Disponible y Duradero
Las modalidades de la presente invención emplean división, balance de carga, y regulación para proporcionar un sistema de almacenamiento estructurado escalable. La escalabilidad se proporciona al: (1) dividir tablas en divisiones y distribuir las divisiones en muchos servidores en el centro de datos; (2) utilizar balance de carga para mover divisiones de un servidor de tabla pesadamente cargado a un servidor de tabla cargado de forma más ligera; y (3) regular para tirar solicitudes a una división que tiene demasiado tráfico que se envía a éste o dejar caer solicitudes a un servidor de tabla que tiene demasiado tráfico que se envía a éste.
La escalabilidad se proporciona al dividir automáticamente tablas en divisiones basadas en la carga a las diferentes partes de las divisiones, y entonces balancear la carga a través de los servidores de tabla. El balance de carga deja que el sistema se adapte dinámicamente a la carga útil, distribuyendo la carga a través de un gran número de máquinas, con lo cual logra mejor escalabilidad al utilizar eficientemente todos los recursos físicos. Además, la regulación protege al sistema de alta carga, manteniendo al sistema operando en un régimen eficiente/optimizado.
La disponibilidad se proporciona por el maestro de tabla al identificar divisiones que no se exhiben, asignadas a diferentes servidores de tabla y actualizar el mapa de división, que permite que el cliente de tabla encuentre la nueva ubicación de la división para accedería. La rápida reasignación de divisiones en el caso de fallas del nuevo/red mantiene todas las divisiones accesibles y genera alta disponibilidad del sistema.
La durabilidad se proporciona al almacenar todos los datos de división en una capa de corriente replicada. La capa de corriente proporciona un sistéma de archivo como interfase para escribir y leer datos desde una corriente (similar a un archivo), y la capa de corriente proporciona funcionalidad completa para asegurarse que se replican los datos, siempre duradero y disponible de cualquiera de los servidores de tabla en el sistema. Por lo tanto, la información de división, que incluye el mapa de división, actualiza registros y tablas de archivo se almacenan en la capa de corriente.
Operaciones de Nivel de Corriente Eficiente
La capa de corriente proporciona la capacidad de enlace duro eficiente de una región de la corriente en otra corriente. Cada corriente en la capa de corriente está compuesta de una lista de bloques de datos, denominadas extensiones. Los datos en la corriente de hecho están almacenados dentro de esas extensiones. Una corriente es una lista ordenada de extensiones. Una extensión dada puede residir en múltiples corrientes, o incluso aparecer múltiples veces en la lista de extensión ordenada de la misma corriente. La capa de corriente proporciona una interfase para componer una corriente al enlazar un grupo de extensiones existentes, que residen en otra corriente. No se involucra ninguna copia de datos reales en este proceso, así que es muy eficiente. La capa de corriente mantiene el conteo de referencia de cada extensión. Una vez que una extensión no tiene corriente señalándola, la capa de corriente recolectará basura/eliminará esta extensión del sistema.
La capa de corriente también soporta la capacidad de obtener múltiples operaciones de nivel de corriente, tal como creación, eliminación, renombrado de corrientes, y extensiones de enlace duro a una corriente, en una transacción atómica.
El sistema de almacenamiento de estructura hace uso extensivo de estas características para recolectar basura eficientemente de la porción obsoleta de las corrientes de una división. Un ejemplo es que una vez que se hace un punto de revisión de una división, todos los mensajes en el registro de actualización antes del punto de revisión ya no se utilizan. Estas características se utilizan para truncar eficientemente el registro de actualización al crear atómicamente una nueva corriente del mismo nombre que la corriente de registro de actualización, enlace duro de las extensiones que aún están en uso de la corriente original a la corriente nueva, y eliminar la corriente original. Todo esto se hace en una transacción atómica. Esto simplifica significativamente la lógica de manejo de falla. Los esquemas similares también se utilizan para otras corrientes, tal como corriente de tabla de archivo y corriente de metadatos, de una división .
El sistema de almacenamiento estructurado también hace uso extensivo de estas características para implementar eficientemente la división y fusión de divisiones, como se describe en las últimas acciones. Más específicamente, estas características se utilizan para hacer referencia eficientemente a datos de la división(es) original a la división(es) hijo creada de división/fusión, sin tener que copiar o mover físicamente ningún bit.
División, Fusión, y Balanceo de la Carga de Divisiones
Algunas modalidades de la presente invención balancean la carga de distribución entre servidores de tabla dentro del sistema de almacenamiento. Generalmente, los servidores de tabla mantienen el rastro de la carga de cada división, y periódicamente reportan esta información al maestro de tabla. El maestro de tabla hace decisiones de balance de carga al mover divisiones entre servidores de tabla. Esto se logra al descargar las porciones objetivo del servidor de tabla original, y asignar las divisiones a otros servidores de tabla.
Como una optimización, algunas modalidades de la invención pueden hacer que el maestro de tabla envíe una solicitud de "preparar para descargar" a un servidor de tabla antes o cuando se descarga la división. Al recibir esta solicitud, el servidor de tabla hará un punto de revisión en la división con el fin de reducir la cantidad de registros que se necesita reproducir cuando la división se carga de nuevo. Esto se proporciona para satisfacer los SLA de disponibilidad para servir a la división.
En los casos en donde una división individual tiene una carga relativamente más alta, puede volverse deseable dividir la división en dos o más divisiones, y esto únicamente es posible si la división contiene más de un valor clave de división. Subsecuentemente, una o más de las divisiones hijo puede descargarse a un servidor de tabla diferente para lograr balance de carga.
Para rastreo de distribución de carga, se utiliza un mecanismo de rastreo por cada servidor de tabla para mantener rastro de información de carga de grano fino con cada división sin consumir mucha memoria. Para rastrear información de carga, se divide una división en múltiples rangos clave de división, denominados como "cubos", y se rastrea la carga correspondiente con cada cubo. Más específicamente, el servidor de tabla muestrea de forma probabilística las solicitudes que caen en estos cubos, y mantiene rastro de la distribución de carga a través de los cubos. Por ejemplo, haciendo referencia la división P3 214 dentro de la tabla 200 de la Figura 2, la división puede dividirse en dos cubos para propósitos de rastreo de carga. El primer cubo debe incluir filas con el valor clave de división de 3, y el segundo cubo incluirá las filas con el valor clave de división de 4 y el valor clave edición de 5. En modalidades, el límite de cubo siempre debe estar en un valor clave de división. Principalmente, las filas con el mismo valor clave de división siempre estarán en el mismo cubo. Por ejemplo, las filas con el valor clave de división de 3 no pueden dividirse en dos cubos para propósitos de rastreo de carga así como propósitos de división.
En algunas modalidades, basándose en las muestras de tráfico recolectadas, los límites de cubo pueden ajustarse dinámicamente con el fin de rastrear de forma más precisa la distribución de tráfico a través de clave dentro de una división. Principalmente, si dos cubos existentes no tienen mucha carga comparada con otros cubos, que se fusionarán en un cubo individual; de forma inversa, si un cubo contiene significativamente más carga que los otros cubos, el cubo puede dividirse en dos si es posible. Por ejemplo, en el ejemplo previo, si el segundo cubo contiene demasiada carga comparado con el primer cubo, puede dividirse en dos cubos más pequeños, uno de los cuales contiene filas en el valor clave de división 4, y el otro de los cuales contiene filas con el valor clave de división 5. Además, si el primer cubo que contiene valor clave de división 3 tiene poca carga, puede fusionarse con el cubo que contiene el valor clave de división 4. Esta verificación y ajuste de tamaños de cubo se hace por completo dinámicamente al momento. Además del esquema de muestreo de nivel de cubo utilizado para rastrear la distribución de carga a través de clave de división dentro de una división, el servidor de tabla también mantiene rastro de la cantidad total de carga útil en la división completa. Esto último se comunica al maestro de tabla. Por lo tanto, cuando una división necesita dividirse basándose en carga, se hace disponible información de distribución de carga bastante precisa al servidor de tabla y al maestro de tabla para determinar en dónde debe dividirse la división.
Haciendo referencia a ahora a la Figura 5, se proporciona un diagrama de flujo que ilustra un método 500 para dividir una división de acuerdo con una modalidad de la presente invención. En la
modalidad de la Figura 5, una división padre, P1, se divide en dos divisiones hijo, P1' (la división original modificada para incluir únicamente un subgrupo de filas) y P2 (una nueva división que incluye las filas restantes). Aunque la Figura 5 discute dividir una división a dos divisiones hijo, se debe entender que una división puede dividirse en más de dos divisiones hijo de acuerdo con modalidades de la presente invención.
Inicialmente, como se muestra en el bloque 502, la información de distribución de carga se rastrea para servidores de tabla, divisiones, y/o porciones de división (es decir, "cubos"). Al rastrear información de carga de grano fino en el nivel de porción de división como se describe anteriormente, las determinaciones pueden hacerse con respecto a dónde dividir una división. La información de carga se rastrea por los servidores de tabla y se proporciona periódicamente al maestro de tabla. En la modalidad actual, la información de carga enviada al maestro de tabla incluye la carga total de cada división y la carga de cada servidor de tabla. Algunas otras modalidades pueden proporcionar toda la información de rastreo de carga, que incluye la información de nivel de cubo, al maestro de tabla. Información adicional, restricciones, e indicios se proporcionan del servidor de tabla al maestro de tabla para una división para ayudar en balance de carga y decisiones de división. Por ejemplo, basándose en la distribución de la información de cubo, el servidor de tabla puede etiquetar una división que es "realmente división" con un grado de severidad, en donde alto significa que el maestro de tabla no debe solicitar una división para la división de aquel servidor de tabla no dividida a la división, en donde medio significa que existen ciertas situaciones en donde el servidor de tabla puede elegir no dividir la división y el maestro de tabla puede anular la decisión, y en donde bajo significa que el servidor de tabla escuchará y tomará dirección del maestro de tabla.
El maestro de tabla utiliza la información de carga para hacer decisiones de distribución de carga, incluyendo si divide divisiones, si fusiona divisiones, y/o si mueve divisiones entre los servidores de tabla. En la presente modalidad de la Figura 5, el maestro de tabla determina dividir una división (P1) basándose en la información de distribución de carga, como se muestra en el bloque 504.
El maestro de tabla determina una relación de división para dividir la división en el bloque 506. La relación de división representa una relación de carga para determinar una ubicación en la cual se debe dividir la división. Por ejemplo, el maestro de tabla puede decidir dividir una división en un punto de carga de 30%/70%. En otras palabras, la división debe dividirse en un punto en donde la carga a una primera porción de la división es 30% y la carga al resto de la división es de 70%. En el bloque 508, el maestro de tabla envía una solicitud al servidor de tabla que aloja la división identificada para división. En particular, el maestro de tabla solicita información clave que especifica la ubicación que corresponde a la relación de división en la división. En respuesta a la solicitud, el servidor de tabla identifica la ubicación clave de división real para dividir la división basándose en la relación de división, como se muestra en el bloque 510. La ubicación real intenta hacer coincidir la distribución de carga especificada por la relación de división, aunque la distribución de carga real puede variar. Por ejemplo, la relación de división solicitada por el maestro de tabla puede ser una distribución de carga de 30%/70%, pero la coincidencia más cercana que puede proporcionarse puede ser una distribución de carga de 35%/65%.
En algunas modalidades, la ubicación real para la división se identifica al utilizar información clave de división. Por ejemplo, si la división P3 214 de la Figura 2 se fuera a dividir entre el valor clave de división de 3 y 4, la información clave que identifica la división puede ser el valor clave de división de 3 y/o el valor clave de división de 4. Cualquiera de tales variaciones se contempla para estar dentro del alcance de modalidades de la presente invención. El servidor de tabla regresa la información clave para la relación de división al maestro de tabla, como se muestra en el bloque 512.
El maestro de tabla construye una corriente para una nueva división (P2) como una de las divisiones hijo, como se muestra en el bloque 514. Todo el estado persistente de una división se mantiene en "corriente" para esa división. Existe una corriente metadatos para la división, que contiene los indicadores a todas las otras corrientes de la división así como la información esencial de esa división, tal como la variedad clave de división de todas las filas incluidas en la división. En este paso, el maestro de tabla responsable de crear la corriente de metadatos para la nueva división (P2) con la información de variedad clave de división correcta, que corresponde a la relación de división. Adicionalmente, el maestro de tabla envía una solicitud de división al servidor de tabla en el bloque 516. La solicitud de división puede proporcionarse en el siguiente latido del maestro de tabla al servidor de tabla.
En algunas modalidades, se describen registros maestros apropiados para manejar fallas. El maestro de tabla registra cada paso después de que se completa el paso correspondiente, para que en caso de falla maestra, los registros puedan reproducirse, y el maestro de tabla pueda resumir la división desde donde se quedó.
Después de recibir la solicitud de división, el servidor de tabla deja de servir y descargar la división original (P1), como se muestra en el bloque 518. El servidor de tabla también construye las dos divisiones hijo (P1' y P2) de división original, como se muestra en el bloque 520. El servidor de tabla construye las corrientes para la nueva división (P2) (además de la corriente metadatos) basándose en la información en la división original (P1). Más específicamente, la porción de los datos que pertenece a la variedad clave de P2 se copiará/enlazará de forma eficientemente de la división P1 en las corrientes de división P2 al utilizar una característica de la capa de corriente subyacente. La división hijo P1' se "crea" al ajustar la variedad grave de P1. La división hijo P1' utiliza el mismo grupo de corrientes que la división original P1. Los metadatos de P1' se cambian para ajustar a la variedad clave reducida.
Como se muestra en el bloque 522, el servidor de tabla cambia ambas divisiones hijo (P1' y P2) y empieza a servir esas divisiones. Adicionalmente, el servidor de tabla notifica al maestro de tabla sobre el término de la división, como se muestra en el bloque 524. Esta notificación puede proporcionarse en el siguiente latido del servidor de tabla al maestro de tabla. En respuesta a la notificación completa de división del servidor de tabla, el maestro de tabla actualiza el mapa de división para reflejar las nuevas divisiones, como se muestra el bloque 526. En este punto, el maestro de tabla puede considerar la división completa. El maestro de tabla envía una nueva asignación que incluye la división hijo recientemente creada (P2) al servidor de tabla para que coincida con el mapa de división, como se muestra en el bloque 528.
En algunas modalidades, después de que se dividió una división, el maestro de tabla puede determinar mover una división hijo del servidor de tabla en donde la división original recibió para otro servidor de tabla. Esto permite que el maestro de tabla distribuya efectivamente la carga a través de la red. El movimiento de división se logra al descargar la división de un servidor de tabla y entonces asignarlo a otro servidor de tabla.
En otras modalidades de la presente invención, el desempeño del protocolo de división descrito anteriormente con referencia a la Figura 5 puede mejorarse al crear la nueva división hijo antes de que se descargue la división original en el bloque 518. Otras variaciones al método 500 descritas anteriormente también pueden volverse evidentes para aquellos expertos en la técnica que están dentro del alcance de modalidades de la presente invención.
La Figura 6 ilustra un ejemplo de dividir P3 214 de la Figura 2 de acuerdo con una modalidad de la presente invención. En particular, la Figura 6 ilustra la interacción entre el maestro de tabla 302 y TS3 308 de la Figura 3 para realizar una división de P3 214, que reside en TS3 308. Inicialmente, como se muestra en 602, el maestro de tabla 302 envía una solicitud al TS3 308 para consultar información clave para identificar una ubicación para dividir P3 214. La solicitud específica una relación de división 0.3, que indica que el maestro de tabla desea dividir P3 214 en una ubicación entre una porción de P3 214 que recibió 30% de la carga en P3 214 y la porción restante que recibió 70% de la carga.
En respuesta a la solicitud del maestro de tabla 302, TS3 308 determina información clave que corresponde a la relación de división especificada por el maestro de tabla 302. La información clave representa la ubicación entre dos porciones de P3 214 basándose en la distribución de carga de 30%/70% especificada por el maestro de tabla 302 como la relación de división. En el presente ejemplo, TS3 308 determina que la carga en filas con el valor clave de división de 3 tiene aproximadamente 30% de la carga mientras que la carga de las filas restantes tiene aproximadamente 70% de la carga. Como tal, la información clave determinada por TS3 308 en el presente ejemplo es el valor clave y división de 4. Se debe entender que en varias modalidades, puede proporcionarse otra información clave para identificar la ubicación en donde se debe dividir P3214.
En 606, TS3 214 comunica la información clave (es decir, el valor clave de división de 4) al maestro de tabla 302. El maestro de tabla 302 construye la corriente para una nueva división, PN, en 608. Adicíonalmente, el maestro de tabla 302 envía una solicitud de división al maestro de tabla, como se muestra en 610. La solicitud de división en el presente ejemplo especifica la variedad de cada una de las divisiones hijo. En particular, pero una división hijo, P3\ la solicitud de división indica un valor clave de división baja de 3 y un valor clave de división alta de 4, que indica que P3' incluye las filas que tienen el valor clave de división de 3. Para la otra división hijo, PN, la solicitud de división indica un valor clave de división baja de 4 y un valor clave de división alta de 6, que indica que PN incluya las filas que tiene el valor clave de división de 4, así como las filas que tienen el valor clave de división de 5.
Basándose en la solicitud de división, TS3 deja de servir la división original, P3 214, en 612. Adicíonalmente, TS3 308 divide P3 a P3' y PN, como se muestra en 614, y empiezan a servir P3' y PN, como se muestra en 616. TS3 308 envía una notificación completa de división al maestro de tabla 302, como se muestra en 618. El maestro de tabla 302 actualiza el mapa de división en 620 para reflejar divisiones hijo.
Cambiando ahora a la Figura 7, se proporciona un diagrama de flujo que ilustra un método 700 para dividir una división de acuerdo con otra modalidad de la presente invención. En la modalidad de la Figura 7, una división padre, P1, se divide en dos nuevas divisiones hijo, P2 y P3, cada una que incluye una porción de las filas de la división padre, P1. Aunque la Figura 7 discute dividir una división a dos divisiones hijo, se debe entender que una división puede dividirse en más de dos divisiones hijo de acuerdo con modalidades de la presente invención.
Similar al método 500 de la Figura 5, la información de distribución de carga se rastrea inicialmente, como se muestra en el bloque 702. La información de distribución de carga permite que el maestro de tabla haga decisiones de distribución de carga, que incluyen divisiones, si fusiona divisiones, y/o si mueve divisiones entre los servidores de tabla. En la presente modalidad de la Figura 7, el maestro de tabla determina dividir una división (P1) basándose en la información de distribución de carga, como se muestra en el bloque 704.
El maestro de tabla determina una relación de división para dividir la división en el bloque 706. Como se discutió previamente, la relación de división representa una relación de carga para determinar una ubicación en la cual la división debe dividirse. Por ejemplo, el maestro de tabla puede decidir dividir una división en un punto de carga de 30%/70%. En el bloque 708, el maestro de tabla envía una solicitud al servidor de tabla que aloja la división identificada para división. En particular, el maestro de tabla solicita información clave que especifica la ubicación que corresponde a la relación de división en la división. En respuesta a la solicitud, el servidor de tabla identifica una ubicación real para dividir la división basándose en la relación de división, como se muestra en el bloque 710. El servidor de tabla regresa información clave para la relación de división al maestro de tabla, como se muestra en el bloque 712.
El maestro de tabla construye las corrientes de metadatos de las nuevas divisiones (P2 y P3), como se muestra el bloque 714. En algunas modalidades, los registros maestros apropiados se describen para manejar fallas. El maestro de tabla registra cada paso después de que se completó el paso correspondiente, para que en caso de falla maestra, los registros puedan presentarse, y el maestro de tabla pueda resumir la división desde donde se quedó. Adicionalmente, el maestro de tabla envía una solicitud de división al servidor de tabla en el bloque 716. La solicitud de división puede proporcionarse en el siguiente latido del maestro de tabla al servidor de tabla.
En respuesta a la solicitud de división, el servidor de tabla construye las dos divisiones hijo (P2 y P3) de la división original (P1), como se muestra el bloque 718. El servidor de tabla construye las corrientes para las nuevas divisiones (P2 y P3) (además de la corriente de metadatos) basándose en la división original (P1). Más específicamente, la porción de los datos que pertenece a la variedad clave de P2 se copiará/enlazará de forma dura eficientemente de la división P1 en las corrientes de la división P2 al utilizar una característica de la capa de corriente subyacente. Similarmente, la porción de los datos que pertenece a la variedad clave de P3 se copiará/enlazará de forma dura eficientemente de la división P1 en las corrientes de división P3 al utilizar la misma característica de la capa de corriente subyacente.
El servidor de tabla deja de servir y descarga la división original (P1), como se muestra en el bloque 720, Adicionalmente, como se muestra en el bloque 722, el servidor de tabla carga ambas divisiones hijo (P2 y P3) y empieza a servir a esas divisiones. El servidor de tabla notifica al maestro de tabla sin el término de la división, como se muestra en 724. Esta notificación puede proporcionarse en el siguiente latido del servidor de tabla al servidor maestro. En respuesta a la notificación de completar división del servidor de tabla, el maestro de tabla actualiza el mapa de división para reflejar las nuevas divisiones, como se muestra en bloque 726. En este punto, el maestro de tabla puede considerar la división completa. El maestro de tabla envía una nueva asignación que incluye las divisiones hijo recientemente creadas (P2 y P3) al servidor de tabla para que coincida con el mapa de división, como se muestra en el bloque 728.
En algunos casos, un maestro de tabla puede determinar fusionar dos o más divisiones en una división individual basándose, por ejemplo, en la información de distribución de carga. En una modalidad, se realiza una fusión cuando dos divisiones adyacentes (es decir, adyacente a la secuencia de filas en la tabla) tienen carga relativamente baja. La fusión de las divisiones a una división individual puede ser benéfica para reducir el número de divisiones en el sistema.
Por consiguiente, la Figura 8 ilustra un diagrama de flujo que muestra un método 800 para fusionar divisiones de acuerdo con una modalidad de acuerdo con la presente invención. Como se muestra en el bloque 802, la información de distribución de carga se rastrea ¡nicialmente. Basándose en la información de distribución de carga, el maestro de tabla determina que dos divisiones (P1 y P2) deben fusionarse en una nueva división (P3), como se muestra en el bloque 804. En modalidades, únicamente pueden fusionarse divisiones que forman una variedad clave de división continua y no desarticulada.
Cuando el maestro de tabla decide fusionar dos divisiones, los maestros de tabla envían "envían mensaje(s)" 'preparar-fusionar1 al servidor(es) de tabla que sirve las dos porciones, como se muestra en el bloque 806. En algunos casos, ambas divisiones pueden recibir en un servidor de tabla individual, mientras que en otros casos las divisiones residen de diferentes servidores de tabla. El mensaje 'preparar-fusionar' da al servidor(es) de tabla una oportunidad para compactar las divisiones antes de la fusión con el fin de reducir el tiempo de carga para la división fusionada.
El maestro de tabla crea a la corriente de metadatos para la división fusionada (P3) en el bloque 808 y descarga las dos divisiones padre (P1 y P2) del servidor(es) de tabla en donde reciben las divisiones padre en el bloque 810. El maestro de tabla entonces actualiza el mapa de división (remoto atómicamente a las entradas de divisiones antiguas, e inserta la nueva entrada de división), como se muestra en el bloque 812. Desde la perspectiva del maestro de tabla, la transacción de fusión está completa en este punto, ya qué en el caso de una falla de maestro de tabla la nueva división fusionada se encontrará en el mapa de división persistido durante el arranque.
El maestro de tabla asigna la división fusionada (P3) a un servidor de tabla, como se muestra en el bloque 814. El servidor de tabla en el cual se asigna la división fusionada puede ser cualquier servidor de tabla en el sistema. Por ejemplo, el servidor de tabla asignado puede ser el servidor de tabla en el cual ambas de las divisiones padres recibieron o puede ser un servidor de tabla diferente en el sistema.
Con la asignación, el servidor de tabla carga la división fusionada, como se muestra en bloque 816. Desde la corriente de metadatos de la división fusionada, el servidor de tabla sabe que esta es una división fusionada, y construye las corrientes de división fusionada de las divisiones padre al copiar/enlazar de forma dura eficientemente los datos de las divisiones padre al utilizar la característica de la capa de corriente subyacente. Después de que se realiza la construcción, el servidor de tabla registra este evento en la corriente de metadatos de la división fusionada (para que la siguiente vez que se carga la división, las corrientes no se construyan de nuevo), y elimina las corrientes de división padre.
Recuperación de Estado Dividido Corrupto
Un sistema de almacenamiento estructurado duradero debe ser capaz de recuperarse de errores en el estado de sistema. Para lograr esta capacidad, el sistema de almacenamiento estructurado en una modalidad de la presente invención está incorporado en un almacenamiento únicamente anexo, y todos los datos eliminados se requieren para una longitud de tiempo mínima que se reclama lo suficientemente larga para descubrir cualquier corrupción en el sistema.
Haciendo referencia ahora a la Figura 9, se proporciona un diagrama de flujo que ilustra un método 900 para recuperar una división de un estado de división corrupto de acuerdo con una modalidad de la presente invención. Inicialmente, como se muestra en el bloque 902, se identifica a una división corrupta. Si una división se vuelve corrupta y no puede servirse, se eleva una alerta que marca la división como no servida. Esto puede causar aquella temporal de disponibilidad a los datos en esa división.
Como se muestra el bloque 904, la división corrupta se recupera en un estado de división consistente. El sistema puede: (a) reparar la división, ya que todos los cambios previos a la división se han almacenada en el almacenamiento únicamente anexo, que restaurará la división sin perder ninguno de los datos; o (b) retrocederá la 'división a un punto en el tiempo previo, que potencialmente podría causar pérdida de los cambios que ocurrieron entre el tiempo retrocedido y el tiempo de la falla. Una vez que se repara la división, la división está disponible para servirse de nuevo para lectura y escritura de los datos estructurados.
Durante el retroceso de división, el sistema encuentra el punto de revisión más reciente, que aún está en un estado válido, y utiliza el punto de revisión junto con los registros correspondientes, si aún están presentes, para reconstruir el estado de división.
Durante el retroceso de división, en algunos casos, los metadatos presentes y los contenidos de datos de la división son insuficientes para recuperar el estado de división. En esos casos, el sistema utiliza los datos de otras divisiones relacionadas, incluyendo el padre(s) de la división objetiva durante la división más reciente y función que involucra la división objetivo. Más específicamente, el sistema reconstruye el estado de la división al fusionar el estado de los puntos de revisión válidos más recientes en las divisiones padre y la división objetivo.
Después de que se han recuperado o reconstruido todas las divisiones, el mapa de división se revisa para hacer coincidir las variedades clave de todas las divisiones en el sistema reconstruido, como se muestra en el bloque 906. Esto lleva al sistema de regreso en estado consistente global.
Versiones y Mejora de División
Cuando se realiza una mejora del código de servidor de tabla, la mejora se realiza únicamente en un subgrupo de los servidores de tabla a la vez. Como tal, los servidores de tabla se dividen en dominios de mejor N, y cada dominio de mejora puede mejorarse una a la vez.
Haciendo referencia a la Figura 10, se proporciona un diagrama de flujo que ilustra un método 1000 para versiones de división durante una mejora de acuerdo con una modalidad de la presente invención. Como se muestra en el bloque 1002, las divisiones pueden moverse de servidores de tabla dentro de un dominio de mejora objetivo que se va a mejorar después durante el proceso de mejora. Una nueva versión de código de servidor de tabla se despliega a los servidores de tabla dentro del dominio de mejora objetivo, como se muestra en el bloque 1004.
Durante el proceso de mejora, pueden asignarse divisiones a servidores de tabla que tiene la nueva versión de código de servidor de tabla para modificarse potencialmente con un nuevo formato de datos, como se muestra en el bloque 1006. Después de esta modificación, las divisiones únicamente pueden servirse por los nuevos servidores de tabla mejorados y no pueden servirse por los servidores de tabla de versiones más antiguas. Como tal, una vez que se sirve una división por un servidor de tabla de versión N, el sistema asegura que las divisiones únicamente se sirven con un servidor de tabla de versión N o posterior (o de forma similar versión de servidor de tabla compatible), como se muestra en el bloque 1008.
Esto puede realizarse en un número de diferentes formas dentro del alcance de modalidades de la presente invención. Por ejemplo, en una modalidad, un número de versión se rastrea para cada división, servidor de tabla al maestro de tabla. Cuando ocurre una mejora, si el servidor de tabla que sirve a la división está al número de versión más alto, la división toma ese número de versión. Desde ese punto, la división únicamente puede servirse por los servidores de tabla, de esa versión o superior.
En otra modalidad, tan pronto como se mejora cada servidor de cada servidor de tabla, el servidor de tabla se comunica al maestro de tabla par indicar su versión. El maestro de tabla rastrea la última versión de servidor de tabla, y las divisiones para asignarse únicamente pueden asignarse a servidores de tabla con la versión más reciente (o de otra forma versión compatible).
Incluso en otra modalidad, la versión de división se persiste junto con los metadatos de división. Los servidores de tabla notifican al maestro de tabla de las versiones de las divisiones asignadas a estos. Los servidores de tabla también reportan sus propios números de versión al maestro de tabla. El maestro de tabla con ello mantiene el rastro de las divisiones de las versiones de división así como las versiones de servidor de tabla. De esa forma, el maestro de tabla asegura que las divisiones pueden asignarse a los servidores de tabla de versiones compatibles.
Conclusión
La presente invención se describió en relación a modalidades particulares, que pretenden en todos los aspectos ser ilustrativas en lugar de restrictivas. Las modalidades alternativas serán evidentes para aquellos expertos en la técnica a los cuales pertenece la
presente invención sin apartarse de su alcance.
A partir de lo anterior, se puede observar que esta invención es una bien adaptada para obtener todos los fines y objetivos establecidos anteriormente, junto con otras ventajas que son obvias e inherentes para el sistema y método. Se entenderá que ciertas características y subcombinaciones son de utilidad y pueden emplearse sin referencia otras características y sus combinaciones. Esto se contempla por y está dentro del alcance de las reivindicaciones.
Claims (15)
1.- Un método implementado por uno o más dispositivos de cómputo dentro de un sistema de almacenamiento estructurado en donde el almacenamiento estructurado está representado por una o más tablas, cada tabla incluyendo una pluralidad de filas, cada fila representa una entidad de datos almacenada por el sistema de almacenamiento estructurado y que incluye una o más claves para identificar la fila, la pluralidad de filas está dividida entre una pluralidad de divisiones, cada división incluye una variedad de filas a partir de la pluralidad de filas dentro de la tabla, en donde la pluralidad de divisiones está almacenada en una pluralidad de servidores de tabla, y en donde un maestro de tabla controla la asignación de división a la pluralidad de los servidores de tabla, el método para dividir una división en divisiones hijo que comprende: identificar (504) la división para dividir basándose en información de carga para la división, en donde la información de carga incluye información que especifica carga en cada una de dos o más porciones de la división; determinar (506), por el maestro de tabla, una relación de división para dividir la porción basándose en la carga en cada una de las dos o más porciones de la división; consultar (508) el servidor de tabla por información clave que indica una ubicación real dentro de la división que corresponde a la relación de división; recibir (510) información clave en el maestro de tabla del servidor de tabla, la información clave indica la ubicación real dentro de la división que corresponde a la relación de división; enviar (516) una solicitud de división del maestro de tabla al servidor de tabla, la solicitud de división indica dividir la división basándose en la información clave; dividir (518, 520, 522) la división en una ubicación que corresponde a la información clave para crear las divisiones hijo; notificar (524) al maestro de tabla de término de la división; y actualizar (526) un mapa de división basándose en la división que se divide en las porciones hijo, el mapa de división almacenando mapas entre la pluralidad de divisiones y la pluralidad de servidores de tabla que sirven a la pluralidad de divisiones.
2. - El método de acuerdo con la reivindicación 1, en donde el método además comprende construir, en el maestro de tabla, una corriente para al menos una de las divisiones hijo.
3. - El método de acuerdo con la reivindicación 1, en donde dividir la división comprende: dejar de servir a la división del servidor de tabla; construir las divisiones hijo de la división; y cargar y servir las divisiones hijo del servidor de tabla, en donde dejar de servir a la división comprende hacer un punto de revisión de la división, con lo cual se reduce la cantidad de registros que se van a reproducir durante la carga de división, en donde hacer el punto de revisión de la división comprende el truncado eficiente de las corrientes de registro durante el punto de revisión anatómicamente: crear una nueva corriente de registro, enlazar de forma dura extensiones después del punto de revisión de revisión de una corriente de registro antigua a la nueva corriente de registro, eliminar la corriente de registro antigua, y renombrar la nueva corriente de registro a un nombre de la corriente de registro antigua.
4. - El método de acuerdo con la reivindicación 3, en donde construir las divisiones hijo de la división comprende una construcción eficiente de corrientes de las divisiones hijo al enlazar de forma dura anatómicamente a extensiones de corrientes de la división sin copia de. datos costosa.
5. - El método de acuerdo con la reivindicación 1, en donde el método además comprende asignar al menos una de las divisiones hijo a un segundo servidor de tabla; y actualizar el mapa de división para indicar que al menos una de las divisiones hijo está localizada en el segundo servidor de tabla.
6. - El método de acuerdo con la reivindicación 1, en donde el método además comprende ajusfar límites de las dos o más porciones de la división basándose en la información de carga al fusionar o dividir al menos un subgrupo de las dos o más porciones de la división para propósitos de verificación de carga.
7. - Uno o más medios de almacenamiento por computadora que almacenan instrucciones útiles por computadora para realizar un método para manejar un sistema de almacenamiento estructurado representado por una o más tablas, una tabla incluye una pluralidad de filas, cada fila representa una entidad de datos almacenada por el sistema de almacenamiento estructura e incluye una o más claves para identificar la fila, la pluralidad de filas está dividida entre una i pluralidad de divisiones, cada división incluye una variedad de filas de la pluralidad de filas dentro de la tabla, en donde la pluralidad de divisiones está almacenada en una pluralidad de servidores de tabla, y en donde un maestro de tabla controla la asignación de división a la pluralidad de servidores de tabla, el método para fusionar al menos dos divisiones de la tabla en una división fusionada y que comprende: rastrear (802) información de carga para la pluralidad de divisiones en la pluralidad de servidores de tabla; identificar (804), por el maestro de tabla, al menos dos divisiones para fusionar basándose en la información de carga; crear (808), por el maestro de tabla, una corriente metadatos para la división fusionada; descargar (810) al menos dos divisiones de al menos un servidor de tabla que sirve al menos en dos divisiones; asignar (814), por el maestro de tabla, la división fusionada a un servidor de tabla seleccionado de la pluralidad de servidores de tabla; y cargar y servir (816) la división fusionada en el servidor de tabla seleccionado.
8.- Uno o más medios de almacenamiento por computadora de acuerdo con la reivindicación 7, en donde al menos dos divisiones están almacenadas en el mismo servidor de tabla.
9. - Uno o más medios de almacenamiento por computadora de acuerdo con la reivindicación 7, en donde el servidor de tabla seleccionado comprende un servidor de tabla en donde al menos una de dos divisiones residieron antes de fusionarse en la división fusionada.
10. - Uno o más medios de almacenamiento por computadora de acuerdo con la reivindicación 7, en donde el método además comprende actualizar un mapa de división basándose al menos en dos divisiones que se fusionan en la división fusionada, el mapa de división almacena mapas entre la pluralidad de divisiones y la pluralidad de servidores de tabla que sirven a la pluralidad de divisiones.
11.- Uno o más medios de almacenamiento por computadora de acuerdo con la reivindicación 7, en donde el método además comprende enviar un mensaje de preparar-fusionar desde el maestro de tabla al menos a un servidor de tabla que sirve al menos a dos divisiones, en donde el mensaje de preparar-fusionar hace que al menos un servidor de tabla compacte al menos dos divisiones antes de fusión con el fin de reducir el tiempo de carga para la división fusionada.
12.- Uno o más medios de almacenamiento por computadora que almacenan instrucciones útiles por computadora para realizar un método para manejar un sistema de almacenamiento estructurado representado por una o más tablas, cada tabla incluye una pluralidad de filas, cada fila representa una entidad de datos almacenada por el sistema de almacenamiento estructurado e incluye una o más claves para identificar la fila, la pluralidad de filas está dividida entre una pluralidad de divisiones, cada división incluye una variedad contigua de filas de la pluralidad de filas dentro de la tabla, en donde la pluralidad de divisiones se almacena en una pluralidad de servidores de tabla, y en donde un maestro de tabla controla la asignación de división a la pluralidad de servidores de tabla, el método para dividir una división de la tabla en al menos dos divisiones hijo y que comprende: rastrear (702) información de carga para la pluralidad de divisiones en la pluralidad de servidores de tabla; identificar (704), por el maestro de tabla, para dividir la división basándose en la información de carga, en donde la información de carga para la división identifica diferentes cargas en diferentes porciones de la división; determinar (706), en el maestro de tabla, una relación de división para dividir la división, en donde la relación de división se especifica basándose en información de carga y representa un punto en la división en donde una primera porción de la división incluye una primera cantidad de carga y una segunda porción de la división incluye una segunda cantidad de carga; enviar (708) una solicitud del maestro de tabla al servidor de tabla, la solicitud para información clave identifica una ubicación real en la división que corresponde a la relación de división; determinar (710), por el servidor de tabla, la información clave que identifica la ubicación real en la división que corresponde a la relación de división; comunicar (712) la información clave del servidor de tabla al maestro de tabla; construir (714), en el maestro de tabla, una corriente de metadatos para cada una de las divisiones hijo; enviar (716) una solicitud de división del maestro de tabla al servidor de tabla; construir (718), en el servidor de tabla, las divisiones hijo desde la división; dejar de servir (720) a la división en el servidor de tabla; cargar y servir (722) las divisiones hijo en el servidor de tabla; enviar (724) una notificación de término de división del servidor de tabla al maestro de tabla; y actualizar (726) un mapa de división basándose en la división que se divide en las divisiones hijo, el mapa de división almacena mapas entre la pluralidad de divisiones y la pluralidad de servidores de tabla que sirven a la pluralidad de divisiones.
13.- Uno o más medios de almacenamiento por computadora de acuerdo con la reivindicación 12, en donde el método además comprende asignar al menos una de las divisiones hijo a un segundo servidor de tabla; y actualizar el mapa de división para indicar que al menos una de las divisiones hijo está localizada en el segundo servidor de tabla.
14. - Uno o más medios de almacenamiento por computadora de acuerdo con la reivindicación 12, en donde dejar de servir la división comprende hacer un punto de revisión de la división, con lo cual se reduce la cantidad de registros que se van a reproducir durante la recarga de división, en donde hacer el punto de la división comprende un truncado eficiente de corrientes de registro durante el punto de revisión anatómicamente: crear una nueva corriente de registro, enlazar de forma dura extensiones después del punto de revisión desde una corriente de registro antigua a la nueva corriente de registro, eliminar la corriente de registro antigua, y renombrar la nueva corriente de registro a un nombre de la corriente de registro antigua.
15. - Uno o más medios de almacenamiento por computadora de acuerdo con la reivindicación 12, en donde construir las divisiones hijo desde la división comprende la construcción eficiente de corrientes de las divisiones hijo al enlazar de forma dura atómicamente extensiones de corrientes de la división sin copia de datos costosa.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/258,050 US9996572B2 (en) | 2008-10-24 | 2008-10-24 | Partition management in a partitioned, scalable, and available structured storage |
PCT/US2009/061972 WO2010048595A2 (en) | 2008-10-24 | 2009-10-23 | Partition management in a partitioned, scalable, and available structured storage |
Publications (1)
Publication Number | Publication Date |
---|---|
MX2011003883A true MX2011003883A (es) | 2011-05-03 |
Family
ID=42118620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MX2011003883A MX2011003883A (es) | 2008-10-24 | 2009-10-23 | Manejo de division en un almacenamiento estructurado dividido, escalable y disponible. |
Country Status (15)
Country | Link |
---|---|
US (1) | US9996572B2 (es) |
EP (1) | EP2342634B1 (es) |
JP (1) | JP5607059B2 (es) |
KR (1) | KR101597384B1 (es) |
CN (1) | CN102197372B (es) |
AU (1) | AU2009308176B2 (es) |
BR (1) | BRPI0914183A2 (es) |
CA (1) | CA2736586A1 (es) |
IL (1) | IL211627A (es) |
MX (1) | MX2011003883A (es) |
MY (1) | MY165932A (es) |
RU (1) | RU2011116167A (es) |
TW (1) | TW201022953A (es) |
WO (1) | WO2010048595A2 (es) |
ZA (1) | ZA201101659B (es) |
Families Citing this family (204)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8028090B2 (en) | 2008-11-17 | 2011-09-27 | Amazon Technologies, Inc. | Request routing utilizing client location information |
US7991910B2 (en) | 2008-11-17 | 2011-08-02 | Amazon Technologies, Inc. | Updating routing information based on client location |
US7962597B2 (en) | 2008-03-31 | 2011-06-14 | Amazon Technologies, Inc. | Request routing based on class |
US7970820B1 (en) | 2008-03-31 | 2011-06-28 | Amazon Technologies, Inc. | Locality based content distribution |
US8601090B1 (en) | 2008-03-31 | 2013-12-03 | Amazon Technologies, Inc. | Network resource identification |
US8606996B2 (en) | 2008-03-31 | 2013-12-10 | Amazon Technologies, Inc. | Cache optimization |
US8447831B1 (en) | 2008-03-31 | 2013-05-21 | Amazon Technologies, Inc. | Incentive driven content delivery |
US8321568B2 (en) | 2008-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Content management |
US9407681B1 (en) | 2010-09-28 | 2016-08-02 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US9996572B2 (en) | 2008-10-24 | 2018-06-12 | Microsoft Technology Licensing, Llc | Partition management in a partitioned, scalable, and available structured storage |
US8886796B2 (en) * | 2008-10-24 | 2014-11-11 | Microsoft Corporation | Load balancing when replicating account data |
KR101207510B1 (ko) * | 2008-12-18 | 2012-12-03 | 한국전자통신연구원 | 클러스터 데이터 관리시스템 및 클러스터 데이터 관리 시스템에서 공유 재수행 로그를 이용한 데이터 재구축 방법 |
US8688837B1 (en) | 2009-03-27 | 2014-04-01 | Amazon Technologies, Inc. | Dynamically translating resource identifiers for request routing using popularity information |
US8412823B1 (en) | 2009-03-27 | 2013-04-02 | Amazon Technologies, Inc. | Managing tracking information entries in resource cache components |
US10127295B2 (en) * | 2009-06-05 | 2018-11-13 | Microsoft Technolofy Licensing, Llc | Geographic co-location service for cloud computing |
US8782236B1 (en) | 2009-06-16 | 2014-07-15 | Amazon Technologies, Inc. | Managing resources using resource expiration data |
US8224787B2 (en) * | 2009-07-23 | 2012-07-17 | Applied Minds, Llc | Redundant, multi-dimensional data partitioning: methods, program product and system |
US8397073B1 (en) | 2009-09-04 | 2013-03-12 | Amazon Technologies, Inc. | Managing secure content in a content delivery network |
US8433771B1 (en) * | 2009-10-02 | 2013-04-30 | Amazon Technologies, Inc. | Distribution network with forward resource propagation |
US9177004B2 (en) * | 2009-11-25 | 2015-11-03 | Bmc Software, Inc. | Balancing data across partitions of a table space during load processing |
US8156304B2 (en) * | 2009-12-04 | 2012-04-10 | Oracle International Corporation | Dynamic data storage repartitioning |
US9495338B1 (en) | 2010-01-28 | 2016-11-15 | Amazon Technologies, Inc. | Content distribution network |
US8484243B2 (en) * | 2010-05-05 | 2013-07-09 | Cisco Technology, Inc. | Order-independent stream query processing |
US9323775B2 (en) * | 2010-06-19 | 2016-04-26 | Mapr Technologies, Inc. | Map-reduce ready distributed file system |
US11726955B2 (en) | 2010-06-19 | 2023-08-15 | Hewlett Packard Enterprise Development Lp | Methods and apparatus for efficient container location database snapshot operation |
JP5661355B2 (ja) * | 2010-07-09 | 2015-01-28 | 株式会社野村総合研究所 | 分散キャッシュシステム |
WO2012015507A1 (en) * | 2010-07-29 | 2012-02-02 | Spirae, Inc. | Dynamic distributed power grid control system |
US8468247B1 (en) | 2010-09-28 | 2013-06-18 | Amazon Technologies, Inc. | Point of presence management in request routing |
US10958501B1 (en) | 2010-09-28 | 2021-03-23 | Amazon Technologies, Inc. | Request routing information based on client IP groupings |
US9712484B1 (en) | 2010-09-28 | 2017-07-18 | Amazon Technologies, Inc. | Managing request routing information utilizing client identifiers |
US9003035B1 (en) | 2010-09-28 | 2015-04-07 | Amazon Technologies, Inc. | Point of presence management in request routing |
US8805784B2 (en) * | 2010-10-28 | 2014-08-12 | Microsoft Corporation | Partitioning online databases |
US8452874B2 (en) | 2010-11-22 | 2013-05-28 | Amazon Technologies, Inc. | Request routing processing |
US8577885B2 (en) | 2010-12-09 | 2013-11-05 | International Business Machines Corporation | Partitioning management of system resources across multiple users |
US11615115B2 (en) | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10977277B2 (en) | 2010-12-23 | 2021-04-13 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US11544288B2 (en) | 2010-12-23 | 2023-01-03 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US9805108B2 (en) | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US10713280B2 (en) | 2010-12-23 | 2020-07-14 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10262050B2 (en) | 2015-09-25 | 2019-04-16 | Mongodb, Inc. | Distributed database systems and methods with pluggable storage engines |
US9881034B2 (en) | 2015-12-15 | 2018-01-30 | Mongodb, Inc. | Systems and methods for automating management of distributed databases |
US10740353B2 (en) | 2010-12-23 | 2020-08-11 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10997211B2 (en) | 2010-12-23 | 2021-05-04 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US10366100B2 (en) | 2012-07-26 | 2019-07-30 | Mongodb, Inc. | Aggregation framework system architecture and method |
US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10614098B2 (en) | 2010-12-23 | 2020-04-07 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US8572031B2 (en) | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US10346430B2 (en) | 2010-12-23 | 2019-07-09 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US10467042B1 (en) | 2011-04-27 | 2019-11-05 | Amazon Technologies, Inc. | Optimized deployment based upon customer locality |
US9251021B2 (en) * | 2011-05-23 | 2016-02-02 | Bradley Gene Calder | Asynchronous replication in a distributed storage environment |
US9519555B2 (en) | 2011-05-23 | 2016-12-13 | Microsoft Technology Licensing, Llc | Synchronous replication in a distributed storage environment |
US8595267B2 (en) * | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
US8572091B1 (en) * | 2011-06-27 | 2013-10-29 | Amazon Technologies, Inc. | System and method for partitioning and indexing table data using a composite primary key |
US9052831B1 (en) * | 2011-06-30 | 2015-06-09 | Amazon Technologies, Inc. | System and method for performing live partitioning in a data store |
US8676951B2 (en) * | 2011-07-27 | 2014-03-18 | Hitachi, Ltd. | Traffic reduction method for distributed key-value store |
US8645316B2 (en) | 2011-08-16 | 2014-02-04 | International Business Machines Corporation | Storing records in databases in a randomized manner to effectively utilize database servers |
KR101301607B1 (ko) * | 2011-10-31 | 2013-09-10 | 삼성에스디에스 주식회사 | 분산 데이터 저장소를 위한 데이터 파티셔닝 장치 및 방법 |
US9575990B2 (en) * | 2011-11-07 | 2017-02-21 | Sap Se | Partitioning data within a distributed data storage system using virtual file links |
US10372688B2 (en) | 2011-11-07 | 2019-08-06 | Sap Se | Moving data within a distributed data storage system using virtual file links |
US8880565B2 (en) * | 2011-12-23 | 2014-11-04 | Sap Se | Table creation for partitioned tables |
US20130311421A1 (en) * | 2012-01-06 | 2013-11-21 | Citus Data Bilgi Islemleri Ticaret A.S. | Logical Representation of Distributed Database Table Updates in an Append-Only Log File |
US9753999B2 (en) * | 2012-01-06 | 2017-09-05 | Citus Data Bilgi Islemieri Ticaret A.S. | Distributed database with mappings between append-only files and repartitioned files |
US10860563B2 (en) | 2012-01-06 | 2020-12-08 | Microsoft Technology Licensing, Llc | Distributed database with modular blocks and associated log files |
US20130311488A1 (en) * | 2012-01-06 | 2013-11-21 | Citus Data Bilgi Islemleri Ticaret A.S. | Time Stamp Bounded Addition of Data to an Append-Only Distributed Database Table |
US8868711B2 (en) * | 2012-02-03 | 2014-10-21 | Microsoft Corporation | Dynamic load balancing in a scalable environment |
US9852010B2 (en) | 2012-02-03 | 2017-12-26 | Microsoft Technology Licensing, Llc | Decoupling partitioning for scalability |
US10860384B2 (en) * | 2012-02-03 | 2020-12-08 | Microsoft Technology Licensing, Llc | Managing partitions in a scalable environment |
US10623408B1 (en) | 2012-04-02 | 2020-04-14 | Amazon Technologies, Inc. | Context sensitive object management |
US9154551B1 (en) | 2012-06-11 | 2015-10-06 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US11403317B2 (en) | 2012-07-26 | 2022-08-02 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10872095B2 (en) | 2012-07-26 | 2020-12-22 | Mongodb, Inc. | Aggregation framework system architecture and method |
US11544284B2 (en) | 2012-07-26 | 2023-01-03 | Mongodb, Inc. | Aggregation framework system architecture and method |
US9501483B2 (en) | 2012-09-18 | 2016-11-22 | Mapr Technologies, Inc. | Table format for map reduce system |
US9323577B2 (en) | 2012-09-20 | 2016-04-26 | Amazon Technologies, Inc. | Automated profiling of resource usage |
US9507837B2 (en) * | 2012-10-01 | 2016-11-29 | Oracle International Corporation | Reference data segmentation from single to multiple tables |
US9507750B2 (en) | 2012-10-12 | 2016-11-29 | A9.Com, Inc. | Dynamic search partitioning |
AU2013328901B2 (en) * | 2012-10-12 | 2016-07-28 | A9.Com, Inc. | Index configuration for searchable data in network |
US9374276B2 (en) | 2012-11-01 | 2016-06-21 | Microsoft Technology Licensing, Llc | CDN traffic management in the cloud |
US9537973B2 (en) * | 2012-11-01 | 2017-01-03 | Microsoft Technology Licensing, Llc | CDN load balancing in the cloud |
US20150317345A1 (en) * | 2012-11-27 | 2015-11-05 | Nokia Solutions And Networks Oy | Multiple fields parallel query method and corresponding storage organization |
US10205698B1 (en) | 2012-12-19 | 2019-02-12 | Amazon Technologies, Inc. | Source-dependent address resolution |
ES2658188T3 (es) | 2012-12-27 | 2018-03-08 | Huawei Technologies Co., Ltd. | Método y aparato de extensión de particiones |
US9485309B2 (en) * | 2013-03-14 | 2016-11-01 | Red Hat, Inc. | Optimal fair distribution among buckets of different capacities |
US11030055B2 (en) * | 2013-03-15 | 2021-06-08 | Amazon Technologies, Inc. | Fast crash recovery for distributed database systems |
US9514007B2 (en) * | 2013-03-15 | 2016-12-06 | Amazon Technologies, Inc. | Database system with database engine and separate distributed storage service |
US9330158B1 (en) * | 2013-05-20 | 2016-05-03 | Amazon Technologies, Inc. | Range query capacity allocation |
US9471657B1 (en) | 2013-05-20 | 2016-10-18 | Amazon Technologies, Inc. | Range query capacity allocation |
US9294391B1 (en) | 2013-06-04 | 2016-03-22 | Amazon Technologies, Inc. | Managing network computing components utilizing request routing |
CN104376025B (zh) * | 2013-08-16 | 2017-10-10 | 华为技术有限公司 | 分布式数据库的数据存储方法和装置 |
US9794135B2 (en) | 2013-11-11 | 2017-10-17 | Amazon Technologies, Inc. | Managed service for acquisition, storage and consumption of large-scale data streams |
US9720989B2 (en) | 2013-11-11 | 2017-08-01 | Amazon Technologies, Inc. | Dynamic partitioning techniques for data streams |
US10635644B2 (en) | 2013-11-11 | 2020-04-28 | Amazon Technologies, Inc. | Partition-based data stream processing framework |
US9858322B2 (en) | 2013-11-11 | 2018-01-02 | Amazon Technologies, Inc. | Data stream ingestion and persistence techniques |
US9639589B1 (en) | 2013-12-20 | 2017-05-02 | Amazon Technologies, Inc. | Chained replication techniques for large-scale data streams |
US10042910B2 (en) | 2014-02-24 | 2018-08-07 | Sap Se | Database table re-partitioning using two active partition specifications |
US9740724B2 (en) | 2014-04-29 | 2017-08-22 | International Business Machines Corporation | Data partitioning for high-efficiency data retrieval |
US9779121B2 (en) * | 2014-06-27 | 2017-10-03 | Sap Se | Transparent access to multi-temperature data |
US9286001B2 (en) * | 2014-06-30 | 2016-03-15 | Microsoft Licensing Technology Llc | Effective range partition splitting in scalable storage |
US9800575B1 (en) * | 2014-09-24 | 2017-10-24 | Ebay Inc. | Assigning storage responsibility in a distributed data storage system with replication |
US11095715B2 (en) | 2014-09-24 | 2021-08-17 | Ebay Inc. | Assigning storage responsibility in a distributed data storage system with replication |
KR101912728B1 (ko) | 2014-11-05 | 2018-10-29 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 데이터 처리 방법 및 장치 |
US10356150B1 (en) * | 2014-12-15 | 2019-07-16 | Amazon Technologies, Inc. | Automated repartitioning of streaming data |
US10097448B1 (en) | 2014-12-18 | 2018-10-09 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10169395B2 (en) * | 2015-02-12 | 2019-01-01 | International Business Machines Corporation | Database identifier generation in transaction processing systems |
US10225326B1 (en) | 2015-03-23 | 2019-03-05 | Amazon Technologies, Inc. | Point of presence based data uploading |
US9819567B1 (en) | 2015-03-30 | 2017-11-14 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US9832141B1 (en) | 2015-05-13 | 2017-11-28 | Amazon Technologies, Inc. | Routing based request correlation |
US10496669B2 (en) | 2015-07-02 | 2019-12-03 | Mongodb, Inc. | System and method for augmenting consensus election in a distributed database |
US10650024B2 (en) | 2015-07-30 | 2020-05-12 | Google Llc | System and method of replicating data in a distributed system |
US10673623B2 (en) | 2015-09-25 | 2020-06-02 | Mongodb, Inc. | Systems and methods for hierarchical key management in encrypted distributed databases |
US10394822B2 (en) | 2015-09-25 | 2019-08-27 | Mongodb, Inc. | Systems and methods for data conversion and comparison |
US10846411B2 (en) | 2015-09-25 | 2020-11-24 | Mongodb, Inc. | Distributed database systems and methods with encrypted storage engines |
US10423626B2 (en) | 2015-09-25 | 2019-09-24 | Mongodb, Inc. | Systems and methods for data conversion and comparison |
US10270878B1 (en) | 2015-11-10 | 2019-04-23 | Amazon Technologies, Inc. | Routing for origin-facing points of presence |
US10348639B2 (en) | 2015-12-18 | 2019-07-09 | Amazon Technologies, Inc. | Use of virtual endpoints to improve data transmission rates |
US10108632B2 (en) * | 2016-05-02 | 2018-10-23 | Google Llc | Splitting and moving ranges in a distributed system |
US10671496B2 (en) | 2016-05-31 | 2020-06-02 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US10075551B1 (en) | 2016-06-06 | 2018-09-11 | Amazon Technologies, Inc. | Request management for hierarchical cache |
US10776220B2 (en) | 2016-06-27 | 2020-09-15 | Mongodb, Inc. | Systems and methods for monitoring distributed database deployments |
US10110694B1 (en) | 2016-06-29 | 2018-10-23 | Amazon Technologies, Inc. | Adaptive transfer rate for retrieving content from a server |
US9992086B1 (en) | 2016-08-23 | 2018-06-05 | Amazon Technologies, Inc. | External health checking of virtual private cloud network environments |
US10033691B1 (en) | 2016-08-24 | 2018-07-24 | Amazon Technologies, Inc. | Adaptive resolution of domain name requests in virtual private cloud network environments |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11562023B1 (en) * | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US10469513B2 (en) | 2016-10-05 | 2019-11-05 | Amazon Technologies, Inc. | Encrypted network addresses |
US10831549B1 (en) | 2016-12-27 | 2020-11-10 | Amazon Technologies, Inc. | Multi-region request-driven code execution system |
US10372499B1 (en) | 2016-12-27 | 2019-08-06 | Amazon Technologies, Inc. | Efficient region selection system for executing request-driven code |
US10938884B1 (en) | 2017-01-30 | 2021-03-02 | Amazon Technologies, Inc. | Origin server cloaking using virtual private cloud network environments |
US10503613B1 (en) | 2017-04-21 | 2019-12-10 | Amazon Technologies, Inc. | Efficient serving of resources during server unavailability |
CN107329692B (zh) * | 2017-06-07 | 2020-02-28 | 杭州宏杉科技股份有限公司 | 一种数据重删的方法及存储设备 |
US11075987B1 (en) | 2017-06-12 | 2021-07-27 | Amazon Technologies, Inc. | Load estimating content delivery network |
US10447648B2 (en) | 2017-06-19 | 2019-10-15 | Amazon Technologies, Inc. | Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP |
US10866868B2 (en) | 2017-06-20 | 2020-12-15 | Mongodb, Inc. | Systems and methods for optimization of database operations |
US10248562B2 (en) | 2017-06-30 | 2019-04-02 | Microsoft Technology Licensing, Llc | Cost-based garbage collection scheduling in a distributed storage environment |
US10241716B2 (en) | 2017-06-30 | 2019-03-26 | Microsoft Technology Licensing, Llc | Global occupancy aggregator for global garbage collection scheduling |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US12118009B2 (en) | 2017-07-31 | 2024-10-15 | Splunk Inc. | Supporting query languages through distributed execution of query engines |
US10742593B1 (en) | 2017-09-25 | 2020-08-11 | Amazon Technologies, Inc. | Hybrid content request routing system |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
CN107943421B (zh) * | 2017-11-30 | 2021-04-20 | 成都华为技术有限公司 | 一种基于分布式存储系统的分区划分方法及装置 |
CN108108434A (zh) * | 2017-12-19 | 2018-06-01 | 福建中金在线信息科技有限公司 | 一种管理数据库的方法及装置 |
US10592578B1 (en) | 2018-03-07 | 2020-03-17 | Amazon Technologies, Inc. | Predictive content push-enabled content delivery network |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
US20190342380A1 (en) | 2018-05-07 | 2019-11-07 | Microsoft Technology Licensing, Llc | Adaptive resource-governed services for performance-compliant distributed workloads |
CN109218385B (zh) * | 2018-06-28 | 2021-08-03 | 西安华为技术有限公司 | 处理数据的方法和装置 |
US10768830B1 (en) | 2018-07-16 | 2020-09-08 | Amazon Technologies, Inc. | Streaming data service with isolated read channels |
US10798140B1 (en) | 2018-07-16 | 2020-10-06 | Amazon Technologies, Inc. | Stream data record reads using push-mode persistent connections |
US11075984B1 (en) | 2018-07-16 | 2021-07-27 | Amazon Technologies, Inc. | Workload management at streaming data service supporting persistent connections for reads |
US11070600B1 (en) | 2018-07-16 | 2021-07-20 | Amazon Technologies, Inc. | Optimization techniques to support lagging readers at streaming data service |
US10956246B1 (en) | 2018-07-16 | 2021-03-23 | Amazon Technologies, Inc. | Isolated read channel management interfaces at streaming data service |
US10855754B1 (en) | 2018-07-16 | 2020-12-01 | Amazon Technologies, Inc. | Isolated read channel categories at streaming data service |
US10884820B1 (en) * | 2018-08-31 | 2021-01-05 | Veritas Technologies Llc | Intelligent and automatic replication load score based load balancing and resiliency of replication appliances |
CN111104057B (zh) * | 2018-10-25 | 2022-03-29 | 华为技术有限公司 | 存储系统中的节点扩容方法和存储系统 |
CN111221857B (zh) * | 2018-11-08 | 2023-04-18 | 华为云计算技术有限公司 | 从分布式系统中读数据记录的方法和装置 |
US10862852B1 (en) | 2018-11-16 | 2020-12-08 | Amazon Technologies, Inc. | Resolution of domain name requests in heterogeneous network environments |
US11086840B2 (en) | 2018-12-07 | 2021-08-10 | Snowflake Inc. | Transactional streaming of change tracking data |
US11025747B1 (en) | 2018-12-12 | 2021-06-01 | Amazon Technologies, Inc. | Content request pattern-based routing system |
US10979496B2 (en) * | 2019-04-08 | 2021-04-13 | Microsoft Technology Licensing, Llc | IoT partition management and load balancing |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
CN110147944B (zh) * | 2019-04-30 | 2023-08-01 | 创新先进技术有限公司 | 排名方法及装置 |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11481391B1 (en) * | 2019-11-25 | 2022-10-25 | Amazon Technologies, Inc. | Query language operations using a scalable key-item data store |
CN111126589B (zh) * | 2019-12-31 | 2022-05-20 | 昆仑芯(北京)科技有限公司 | 神经网络数据处理装置、方法和电子设备 |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US11599516B1 (en) * | 2020-06-24 | 2023-03-07 | Amazon Technologies, Inc. | Scalable metadata index for a time-series database |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
US11403023B2 (en) * | 2020-10-20 | 2022-08-02 | Micron Technology, Inc. | Method of organizing a programmable atomic unit instruction memory |
US11308066B1 (en) | 2021-02-24 | 2022-04-19 | International Business Machines Corporation | Optimized database partitioning |
US20220318227A1 (en) * | 2021-03-30 | 2022-10-06 | Dropbox, Inc. | Content management system for a distributed key-value database |
CN113297432B (zh) * | 2021-06-01 | 2023-11-07 | 阿里巴巴新加坡控股有限公司 | 用于分区拆分与合并的方法、处理器可读介质和系统 |
US12072939B1 (en) | 2021-07-30 | 2024-08-27 | Splunk Inc. | Federated data enrichment objects |
US12093272B1 (en) | 2022-04-29 | 2024-09-17 | Splunk Inc. | Retrieving data identifiers from queue for search of external data system |
Family Cites Families (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313629A (en) | 1989-10-23 | 1994-05-17 | International Business Machines Corporation | Unit of work for preserving data integrity of a data-base by creating in memory a copy of all objects which are to be processed together |
US5341308A (en) * | 1991-05-17 | 1994-08-23 | Altera Corporation | Methods for allocating circuit elements between circuit groups |
CA2159269C (en) | 1995-09-27 | 2000-11-21 | Chaitanya K. Baru | Method and apparatus for achieving uniform data distribution in a parallel database system |
US5909681A (en) * | 1996-03-25 | 1999-06-01 | Torrent Systems, Inc. | Computer system and computerized method for partitioning data for parallel processing |
US5761500A (en) * | 1996-04-18 | 1998-06-02 | Mci Communications Corp. | Multi-site data communications network database partitioned by network elements |
US5765166A (en) * | 1996-04-23 | 1998-06-09 | Raytheon Company | Use of symmetric multiprocessors for multiple hypothesis tracking |
US5995904A (en) * | 1996-06-13 | 1999-11-30 | Exxon Production Research Company | Method for frequency domain seismic data processing on a massively parallel computer |
US6014656A (en) | 1996-06-21 | 2000-01-11 | Oracle Corporation | Using overlapping partitions of data for query optimization |
US5946685A (en) | 1997-06-27 | 1999-08-31 | Sun Microsystems, Inc. | Global mount mechanism used in maintaining a global name space utilizing a distributed locking mechanism |
US5933834A (en) | 1997-10-16 | 1999-08-03 | International Business Machines Incorporated | System and method for re-striping a set of objects onto an exploded array of storage units in a computer system |
US5987468A (en) | 1997-12-12 | 1999-11-16 | Hitachi America Ltd. | Structure and method for efficient parallel high-dimensional similarity join |
US6240413B1 (en) | 1997-12-22 | 2001-05-29 | Sun Microsystems, Inc. | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
US6173293B1 (en) | 1998-03-13 | 2001-01-09 | Digital Equipment Corporation | Scalable distributed file system |
US6697846B1 (en) | 1998-03-20 | 2004-02-24 | Dataplow, Inc. | Shared file system |
US6230151B1 (en) * | 1998-04-16 | 2001-05-08 | International Business Machines Corporation | Parallel classification for data mining in a shared-memory multiprocessor system |
US6163856A (en) | 1998-05-29 | 2000-12-19 | Sun Microsystems, Inc. | Method and apparatus for file system disaster recovery |
JP4286857B2 (ja) | 1998-11-18 | 2009-07-01 | 富士通株式会社 | ノード間共用ファイル制御方法 |
US6523078B1 (en) | 1999-11-23 | 2003-02-18 | Steeleye Technology, Inc. | Distributed locking system and method for a clustered system having a distributed system for storing cluster configuration information |
US7281031B1 (en) | 2000-03-22 | 2007-10-09 | Emc Corporation | Method and apparatus for providing additional resources for a host computer |
US6536024B1 (en) * | 2000-07-14 | 2003-03-18 | International Business Machines Corporation | Method for making integrated circuits having gated clock trees |
EP1532543A4 (en) * | 2000-09-11 | 2008-04-16 | Agami Systems Inc | STORAGE SYSTEM COMPRISING PARTITIONED METADATA THAT MIGRATE LIKELY |
US7082102B1 (en) | 2000-10-19 | 2006-07-25 | Bellsouth Intellectual Property Corp. | Systems and methods for policy-enabled communications networks |
US7165096B2 (en) | 2000-12-22 | 2007-01-16 | Data Plow, Inc. | Storage area network file system |
US7788335B2 (en) | 2001-01-11 | 2010-08-31 | F5 Networks, Inc. | Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system |
US8195760B2 (en) * | 2001-01-11 | 2012-06-05 | F5 Networks, Inc. | File aggregation in a switched file system |
US20070169336A1 (en) * | 2001-03-26 | 2007-07-26 | Daniel Luch | Electrically conductive patterns, antennas and methods of manufacture |
US7062490B2 (en) | 2001-03-26 | 2006-06-13 | Microsoft Corporation | Serverless distributed file system |
US20020184327A1 (en) | 2001-05-11 | 2002-12-05 | Major Robert Drew | System and method for partitioning address space in a proxy cache server cluster |
US20030041097A1 (en) | 2001-07-11 | 2003-02-27 | Alexander Tormasov | Distributed transactional network storage system |
US6687701B2 (en) | 2001-09-25 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Namespace management in a distributed file system |
US7299463B2 (en) | 2001-09-28 | 2007-11-20 | Intel Corporation | Method for atomically updating a plurality of files |
US7035851B1 (en) | 2001-12-07 | 2006-04-25 | Ncr Corp. | Reorganization of database records using partition merging |
US7406473B1 (en) | 2002-01-30 | 2008-07-29 | Red Hat, Inc. | Distributed file system using disk servers, lock servers and file servers |
KR100453228B1 (ko) | 2002-03-21 | 2004-10-15 | 한국전자통신연구원 | 공유 디스크 파일 시스템의 저널링 및 회복 방법 |
US8037181B2 (en) | 2002-06-28 | 2011-10-11 | Microsoft Corporation | Re-partitioning directories |
US7299239B1 (en) | 2002-12-02 | 2007-11-20 | Oracle International Corporation | Methods for partitioning an object |
US7146365B2 (en) | 2003-01-27 | 2006-12-05 | International Business Machines Corporation | Method, system, and program for optimizing database query execution |
US7197490B1 (en) | 2003-02-10 | 2007-03-27 | Network Appliance, Inc. | System and method for lazy-copy sub-volume load balancing in a network attached storage pool |
US7222119B1 (en) | 2003-02-14 | 2007-05-22 | Google Inc. | Namespace locking scheme |
CA2422161C (en) | 2003-03-14 | 2009-10-06 | Ibm Canada Limited - Ibm Canada Limitee | Decoupled object identification for object switching in database systems |
CA2470720C (en) | 2003-05-17 | 2011-10-18 | Microsoft Corporation | Mechanism for applying transforms to multi-part files |
US7243089B2 (en) | 2003-11-25 | 2007-07-10 | International Business Machines Corporation | System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data |
US7349926B2 (en) | 2004-03-30 | 2008-03-25 | International Business Machines Corporation | Atomic renaming and moving of data files while permitting lock-free look-ups |
US7428588B2 (en) | 2004-04-08 | 2008-09-23 | International Business Machines Corporation | Method for distributing and geographically load balancing location aware communication device client-proxy applications |
US7319997B1 (en) | 2004-06-07 | 2008-01-15 | Ncr Corp. | Dynamic partition enhanced joining |
US7685128B2 (en) | 2004-06-10 | 2010-03-23 | International Business Machines Corporation | Remote access agent for caching in a SAN file system |
US20050289143A1 (en) | 2004-06-23 | 2005-12-29 | Exanet Ltd. | Method for managing lock resources in a distributed storage system |
US7359923B2 (en) | 2004-08-20 | 2008-04-15 | International Business Machines Corporation | Online incremental deferred integrity processing and maintenance of rolled in and rolled out data |
US7650336B1 (en) | 2004-12-02 | 2010-01-19 | Adobe Systems Incorporated | File system atomic lock |
KR100695395B1 (ko) | 2004-12-07 | 2007-03-15 | 에스케이 텔레콤주식회사 | 다수개의 대용량 저장장치를 갖는 시스템에서의 컨텐츠관리 시스템 |
US8126870B2 (en) * | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US20060277221A1 (en) * | 2005-06-01 | 2006-12-07 | Green Hills Software, Inc. | Transactional file system with client partitioning |
US8661459B2 (en) | 2005-06-21 | 2014-02-25 | Microsoft Corporation | Content syndication platform |
US7870353B2 (en) | 2005-08-15 | 2011-01-11 | International Business Machines Corporation | Copying storage units and related metadata to storage |
US8166020B2 (en) * | 2005-12-22 | 2012-04-24 | Oracle International Corporation | Query generator |
US8392400B1 (en) * | 2005-12-29 | 2013-03-05 | Amazon Technologies, Inc. | Method and apparatus for stress management in a searchable data service |
US7801912B2 (en) | 2005-12-29 | 2010-09-21 | Amazon Technologies, Inc. | Method and apparatus for a searchable data service |
US7650514B2 (en) | 2005-12-30 | 2010-01-19 | Microsoft Corporation | Scalable leases |
US7392335B2 (en) | 2006-02-10 | 2008-06-24 | Oracle International Corporation | Anticipatory changes to resources managed by locks |
US8117153B2 (en) | 2006-03-28 | 2012-02-14 | Oracle America, Inc. | Systems and methods for a distributed cache |
KR20070111263A (ko) * | 2006-05-17 | 2007-11-21 | 삼성전자주식회사 | 재부팅 없이 영역 분할을 수행하는 장치 및 그 방법 |
US8255420B2 (en) | 2006-05-23 | 2012-08-28 | Noryan Holding Corporation | Distributed storage |
US7512597B2 (en) * | 2006-05-31 | 2009-03-31 | International Business Machines Corporation | Relational database architecture with dynamic load capability |
US7624118B2 (en) | 2006-07-26 | 2009-11-24 | Microsoft Corporation | Data processing over very large databases |
US7844851B2 (en) | 2006-12-13 | 2010-11-30 | Oracle International Corporation | System and method for protecting against failure through geo-redundancy in a SIP server |
US7756889B2 (en) | 2007-02-16 | 2010-07-13 | Oracle International Corporation | Partitioning of nested tables |
US7792822B2 (en) | 2007-03-02 | 2010-09-07 | Microsoft Corporation | Systems and methods for modeling partitioned tables as logical indexes |
CN101276364B (zh) | 2007-03-30 | 2010-12-22 | 阿里巴巴集团控股有限公司 | 一种分布式计算数据合并方法、系统及其装置 |
US20090077097A1 (en) * | 2007-04-16 | 2009-03-19 | Attune Systems, Inc. | File Aggregation in a Switched File System |
CN101145158A (zh) * | 2007-06-06 | 2008-03-19 | 中兴通讯股份有限公司 | 一种数据库表分区的方法 |
US8812333B2 (en) * | 2007-09-17 | 2014-08-19 | Amadeus S.A.S. | Automated split ticketing |
US7870174B2 (en) * | 2007-10-11 | 2011-01-11 | Oracle International Corporation | Reference partitioned tables |
US8392482B1 (en) * | 2008-03-31 | 2013-03-05 | Amazon Technologies, Inc. | Versioning of database partition maps |
US8250130B2 (en) * | 2008-05-30 | 2012-08-21 | International Business Machines Corporation | Reducing bandwidth requirements for matrix multiplication |
US20100082551A1 (en) * | 2008-09-26 | 2010-04-01 | Microsoft Corporation | Data placement transparency for high availability and load balancing |
US9996572B2 (en) | 2008-10-24 | 2018-06-12 | Microsoft Technology Licensing, Llc | Partition management in a partitioned, scalable, and available structured storage |
US8850013B2 (en) | 2010-05-10 | 2014-09-30 | Jaron Waldman | Server load balancing using geodata |
US20120011176A1 (en) | 2010-07-07 | 2012-01-12 | Nexenta Systems, Inc. | Location independent scalable file and block storage |
-
2008
- 2008-10-24 US US12/258,050 patent/US9996572B2/en active Active
-
2009
- 2009-10-23 MX MX2011003883A patent/MX2011003883A/es active IP Right Grant
- 2009-10-23 AU AU2009308176A patent/AU2009308176B2/en active Active
- 2009-10-23 JP JP2011533395A patent/JP5607059B2/ja active Active
- 2009-10-23 RU RU2011116167/08A patent/RU2011116167A/ru not_active Application Discontinuation
- 2009-10-23 KR KR1020117009130A patent/KR101597384B1/ko active IP Right Grant
- 2009-10-23 BR BRPI0914183A patent/BRPI0914183A2/pt not_active IP Right Cessation
- 2009-10-23 WO PCT/US2009/061972 patent/WO2010048595A2/en active Application Filing
- 2009-10-23 MY MYPI2011001308A patent/MY165932A/en unknown
- 2009-10-23 EP EP09822822.4A patent/EP2342634B1/en active Active
- 2009-10-23 TW TW098135992A patent/TW201022953A/zh unknown
- 2009-10-23 CN CN200980142662XA patent/CN102197372B/zh active Active
- 2009-10-23 CA CA2736586A patent/CA2736586A1/en not_active Abandoned
-
2011
- 2011-03-03 ZA ZA2011/01659A patent/ZA201101659B/en unknown
- 2011-03-08 IL IL211627A patent/IL211627A/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
RU2011116167A (ru) | 2012-10-27 |
EP2342634A4 (en) | 2016-05-11 |
WO2010048595A2 (en) | 2010-04-29 |
US9996572B2 (en) | 2018-06-12 |
MY165932A (en) | 2018-05-18 |
TW201022953A (en) | 2010-06-16 |
CN102197372B (zh) | 2013-11-20 |
EP2342634B1 (en) | 2019-12-11 |
CN102197372A (zh) | 2011-09-21 |
AU2009308176A1 (en) | 2010-04-29 |
BRPI0914183A2 (pt) | 2015-10-20 |
JP5607059B2 (ja) | 2014-10-15 |
ZA201101659B (en) | 2012-05-30 |
EP2342634A2 (en) | 2011-07-13 |
AU2009308176B2 (en) | 2014-05-15 |
KR20110082529A (ko) | 2011-07-19 |
CA2736586A1 (en) | 2010-04-29 |
JP2012507086A (ja) | 2012-03-22 |
IL211627A (en) | 2017-02-28 |
WO2010048595A3 (en) | 2010-07-29 |
IL211627A0 (en) | 2011-05-31 |
KR101597384B1 (ko) | 2016-02-24 |
US20100106934A1 (en) | 2010-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MX2011003883A (es) | Manejo de division en un almacenamiento estructurado dividido, escalable y disponible. | |
US11153380B2 (en) | Continuous backup of data in a distributed data store | |
US8103628B2 (en) | Directed placement of data in a redundant data storage system | |
US7546486B2 (en) | Scalable distributed object management in a distributed fixed content storage system | |
US7788303B2 (en) | Systems and methods for distributed system scanning | |
KR101453425B1 (ko) | 메타데이터 서버 및 메타데이터 관리 방법 | |
US7146377B2 (en) | Storage system having partitioned migratable metadata | |
CA2574735C (en) | Metadata management for fixed content distributed data storage | |
US7257690B1 (en) | Log-structured temporal shadow store | |
US20120173596A1 (en) | Relational objects for the optimized management of fixed-content storage systems | |
US20060167838A1 (en) | File-based hybrid file storage scheme supporting multiple file switches | |
CN111078121A (zh) | 一种分布式存储系统数据迁移方法、系统、及相关组件 | |
EP3788489A1 (en) | Data replication in a distributed storage system | |
CN115617264A (zh) | 分布式存储方法及装置 | |
CN109885619A (zh) | 基于分布式数据库的数据写入与读取方法和装置 | |
KR101035857B1 (ko) | 데이터 관리 방법 및 그 시스템 | |
JP5446378B2 (ja) | ストレージシステム | |
US8032691B2 (en) | Method and system for capacity-balancing cells of a storage system | |
US20130318040A1 (en) | Data replication apparatus and method using hierarchical organization of data servers | |
Junping | Analysis of key technologies of distributed file system based on big data [J] |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration | ||
PD | Change of proprietorship |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC |