¿Cuál es la pila de tecnología (más específicamente la base de datos) detrás del Generador de informes en Salesforce.com?

Report Builder utiliza Oracle como su principal almacén de datos. Cuando salía de Salesforce, hubo discusiones sobre la exploración de nuevas soluciones para aumentar Oracle, pero el Generador de informes no usa nada más hasta donde yo sé.

A medida que personaliza un informe en el generador de informes, las actualizaciones de metadatos de informe correspondientes se envían al servidor. El cambio se valida, se actualizan los metadatos y se obtiene el nuevo conjunto de resultados para el informe. El conjunto de resultados se almacenará en caché. El motor de informes toma los metadatos y genera el SQL correspondiente que se utilizará para obtener datos de la base de datos y devolverlos al cliente.

El rendimiento de los informes en tiempo real se logra mediante una serie de técnicas:

Limite el número de filas recuperadas
La cantidad de filas que se obtienen son limitadas dependiendo del tipo de informe si está generando un informe desde el generador de informes. El generador de informes está diseñado para darle una vista previa del resultado final del informe, ya que el informe real puede tardar mucho más en ejecutarse. La mayoría de los tipos de informes limitan los resultados a 50 filas.

Resultados intermedios de caché
Después de recuperar las filas para un informe, este conjunto de resultados se almacena en caché. Había una capa de abstracción para invalidar automáticamente este caché si la actualización de los metadatos del informe alteraría el conjunto de resultados. Acciones como reordenar columnas golpearían la caché y evitarían volver a golpear la base de datos.

PLSQL personalizado y sugerencias para el optimizador de consultas
Hay una gran cantidad de PLSQL personalizados en uso para mejorar el rendimiento de la base de datos para objetos estándar. Hay un equipo separado que trabaja en optimizaciones de consultas y utiliza muchas sugerencias para forzar el mejor plan de ejecución.

Soluciones personalizadas (tablas, índices) para organizaciones muy grandes.
Si desea informar sobre objetos con una gran cantidad de filas, se han realizado esfuerzos para proporcionar índices personalizados u opciones de fragmentación para mejorar el rendimiento. Esta opción rara vez se necesita, pero ocurre en ciertas situaciones y el enfoque varía según el cliente.

No estoy seguro de saber la respuesta completa a su pregunta.

Sin embargo, la mayoría de los datos de SalesForce (Force.com) se almacenan en una gran tabla grande, dividida de manera apropiada. Por lo tanto, es casi una inmensa tensión contra una sola tabla de datos.

Todas las otras tablas en SalesForce existen para proporcionar una capa de indirección para relaciones, claves, personalizaciones de UI, etc. y pueden considerarse como metatablas.
Si está preguntando acerca de la personalización, su consulta esencialmente pasa por una capa de indirección polimórfica en tiempo de ejecución, que esencialmente ejecuta la consulta en esta tabla gigante. Esta tabla tiene algunos índices muy inteligentes e incluso las metatablas tienen índices muy inteligentes. Entonces, la personalización en sí agrega una sobrecarga insignificante.

Por supuesto, consultar los datos en la tabla gigante puede generar una gran presión y no sé qué técnicas se usan más allá de los índices muy inteligentes en esta tabla y almacenar todos los metadatos en la RAM.

Busque en Google “Arquitectura de plataforma multiusuario Force.com de Craig Weissman”

More Interesting

Cómo desarrollarme en las pruebas de software

¿Cómo puede un SE con 8 años de experiencia en TI (Java, Sterling Commerce) en Bangalore tratar de establecerse en los Estados Unidos sin ofertas en el lugar en este momento?

Como ingeniero senior sin una educación CS o SE significativa, ¿cómo puede dar forma a su camino profesional para seguir subiendo la cuesta de grandes y desafiantes problemas técnicos?

¿Qué servidor de desarrollo utiliza habitualmente y por qué?

¿Cuál preferirá: análisis de código estático o análisis de código dinámico? ¿Qué análisis preferiría realizar durante el desarrollo de software?

¿Cuánta estructura de datos y conocimiento de algoritmos debo obtener para ser un mejor ingeniero de software?

¿Es bueno cambiar de compañía cada año en el campo del desarrollo de software?

¿Puedo convertirme en ingeniero de software sin conocer las estructuras de datos y los algoritmos?

¿Cómo puedo saber si mi desarrollador va lento o rápido (si no soy técnico)?

¿Agile, en desarrollo de software, soporte o innovación de cortina?

¿Cuál es la diferencia entre ingeniería de software y otra ingeniería?

¿Apreciaríamos los canales de Go si no están muy familiarizados con el otro paradigma de la comunicación por hilos utilizando mutexes y semáforos?

¿Qué información necesita un probador mientras escribe una prueba unitaria?

¿Qué se necesita para convertirse en un desarrollador de juegos?

Cómo obtener una ventaja en ingeniería de software si quiero trabajar en una gran empresa como Microsoft o Facebook mientras obtengo mi título de Asociado