2010-03-28 12 views
1

Est-ce que quelqu'un connaît un exemple de définition et de construction dynamiques de catalogues et de définitions de cube ADO MD (ActiveX Data Objects multidimensionnel) avec un ensemble de données autre qu'une base de données? Contexte: nous avons une énorme quantité de données dans notre application que nous exportons vers une base de données, puis interroger en utilisant les jointures SQL habituelles, les groupes, les sommes etc. pour produire des rapports. Les données de l'application sont à l'origine dans des objets et des tableaux. Le problème est que la quantité de données est si grande que l'exportation peut prendre plus de 2 heures. J'essaie donc de trouver un bon moyen d'interroger les objets en mémoire, soit par un algorithme ou une bibliothèque OLAP personnalisée, soit par ADO MD. Mais je n'ai pas réussi à trouver un exemple d'utilisation d'ADO MD sans base de données.Comment créer un catalogue ADO multidimensionnel personnalisé sans base de données

Nous utilisons Delphi 2010, donc j'utiliserais ADO ActiveX mais j'imagine que le MD ADO.NET est similaire. Je me rends compte que si les données d'application étaient déjà stockées dans une base de données, le problème se résoudrait lui-même. Aussi, si Delphi avait la capacité LINQ, je pourrais interroger les objets et les tableaux de cette façon.

Répondre

1

L'exportation prend 2 heures? Certaines entreprises ont fait face à pire! Sur une base de nuit!

Nous avions l'habitude de programmer le transfert de données dans l'entrepôt à 3h du matin, et le déclenchement des travaux de traitement de cube vers 6h du matin .... alors lutte pour rendre la disponibilité de 9h. Une chose qui améliorait l'efficacité était de s'assurer que seules les nouvelles données étaient traitées, et non les anciennes valeurs qui restaient inchangées. Par exemple, notre entrepôt a tenu des ventes de restaurant pour les 5 dernières années, il n'y avait donc pas besoin de recharger des lignes sur un mois comme ils seraient les mêmes!

Est-il possible d'exporter les données de l'ensemble de votre application dans une base de données SQL une seule fois, puis chaque jour après cela ajouter juste un peu de nouvelles données, ou réexporter juste une sous-section de l'application? Cela aidera les temps de chargement.

+0

C'est vrai. C'est essentiellement ce qu'ils font maintenant, exporter des révisions à la base de données. Même cela prend du temps cependant. J'ai pensé que si je pouvais le faire en .NET assez facilement en utilisant LINQ, il devrait y avoir un moyen de le faire en Delphi. J'ai réussi à trouver une solution réalisable, je vais répondre à ma propre question. –

+0

En fait je ne vais pas y répondre parce que je n'ai pas fini par utiliser ADO MD alors je ne sais toujours pas comment l'utiliser. Pour résoudre le problème, j'ai bouclé les objets et chargé les données dans un TClientDataSet, qui est un ensemble de données basé sur la mémoire dans Delphi. Ensuite, j'ai utilisé le composant TxQuery récemment ouvert pour regrouper et ordonner les données dans le jeu de données client. Semble fonctionner assez bien jusqu'à présent. TxQuery est génial et se trouve à l'adresse http://code.google.com/p/txquery/. –