Comment concevoir des rapports sur de grands systèmes distribués ?
过去多啦不再A梦
过去多啦不再A梦 2017-06-20 10:05:40
0
1
1148

Je suis vraiment sans voix. La deuxième soumission a de nouveau été rejetée pour la raison : « Ce contenu appartient à une discussion technique. Il est recommandé de parler brièvement de vos réflexions sur cette question afin de mieux avoir un échange technique avec les autres. » c'était la première fois à cause de la mise en page, je l'admets. Pourquoi est-il si difficile de publier un post de questions-réponses ? D'accord, exprimez-le simplement comme requis. Si vous n'en avez vraiment aucune idée, devez-vous l'inventer au hasard ? Je pense que l'équipe du site Web a de bonnes intentions, mais pour les nouveaux arrivants, elle risque d'être abandonnée à cause de cela. Pour la dernière fois, je n'utiliserai plus ce forum. C'est vraiment difficile de poser des questions.

Ce qui suit est le texte original, et je joindrai quelques-unes de mes propres réflexions à la fin.

C'est ma première fois ici. Ma mise en page était trop compliquée pour la première fois, ce qui m'a fait échouer la révision. J'ai ensuite appris une syntaxe de démarque spécifiquement pour cela. Sans plus attendre, entrons dans le texte.

  1. Contexte du système

    • Une grande entreprise publique cotée possède des succursales dans diverses provinces et villes Afin de gérer uniformément les processus commerciaux et les données financières des succursales et filiales à travers le pays, une plateforme de gestion a été développée puis distribuée à chaque province et ville. basé sur les conditions réelles. Un développement secondaire est nécessaire pour remplacer les systèmes financiers décentralisés et les systèmes de gestion d'entreprise d'origine de diverses villes.

  2. Présentation de la plateforme

    • Le frontend utilise angulaireJs, bootstrap, html, le backend utilise springMVC, MyBatis, la base de données inclut Oracle et Mysql, le framework rpc utilise dubbo, le centre d'enregistrement utilise zookeeper et le cache utilise redis. + grappe. L'ensemble du système comprend plusieurs modules métiers dont principalement 5 modules : « Gestion de projet », « Gestion des contrats », « Gestion des achats », « Gestion des ventes » et « Gestion comptable ».

  3. Demande existante

    • Réalisez plus de 100 rapports basés sur les activités existantes. Le module de reporting disposera d'une base de données et d'une application indépendantes.

  4. Difficultés techniques

    • Comment créer un grand tableau à utiliser dans tous les rapports ?
      Comprendre clairement la partie métier est naturellement le plus basique, mais les services sont appelés via des interfaces entre chaque module.

    • Comment extraire de grandes quantités de données de bases de données distribuées ?
      Chaque module possède sa propre base de données, certains utilisent Oracle, d'autres MySQL et le niveau de volume de données dépasse des dizaines de millions.

    • Quelle devrait être la manière la plus raisonnable de synchroniser les données ? Avec quelle technologie ?
      La synchronisation incrémentielle est difficile. Il n'existe aucun moyen efficace de la part du module métier pour garantir que les données incrémentielles ne soient pas manquées ; s'il s'agit de données complètes, la quantité de données à chaque fois est vraiment trop importante. De plus, comment pouvons-nous garantir les performances lors de l’affichage des rapports et de l’exportation des données ?

C'est la première fois que je fais un si gros projet, donc je suis vraiment confus. Cela peut ne pas être exprimé clairement. Si vous avez quelque chose à ajouter, veuillez laisser un message. J'espère que les seniors du forum pourront me donner quelques conseils, je leur en serais très reconnaissant.

ps :
Il y a de nombreuses parties du démarque que je ne comprends toujours pas très bien. Par exemple, lorsque des listes ordonnées et non ordonnées sont imbriquées, pourquoi les points noirs unis deviennent-ils creux ?
Pourquoi le retour à la ligne non ordonné de la ligne de liste n'est-il valable que pour la ligne actuelle, et lorsque la ligne actuelle est valide, les lignes ci-dessus qui ont été renvoyées à la ligne ne sont pas valides ?
Je ne comprends pas. Se pourrait-il que la syntaxe des différents éditeurs soit différente ?
Comment puis-je voir la démarque des publications publiées par d'autres ? Si vous pouvez le voir, vous pouvez au moins l'apprendre.


Idées de design personnel

  1. Analysez les dimensions statistiques et les champs communs de tous les rapports, créez un nouvel utilisateur Oracle dans le module de rapport, divisez tous les champs en tableaux selon le module et utilisez-le comme tableau de base du rapport

  2.  ;
  3. Vous devez considérer la méthode d'extraction des données. Actuellement, je peux penser à deux méthodes :

    • Fournir des interfaces via chaque module et insérer les données dans le grand tableau de base du module de rapport ; Avantages : Les règles d'extraction sont faciles à maintenir. Inconvénients : Faibles performances ;

    • Connectez la base de données Oracle et la base de données Mysql via DBLink et utilisez des procédures stockées pour insérer directement des données dans la grande table de base. Avantages : Amélioration des performances ; Inconvénients : Il sera difficile pour les règles d'être maintenues par d'autres.
  4. Les données sont entièrement synchronisées à chaque fois. Avantages : La logique est simple. Inconvénients : La quantité de synchronisation des données est trop importante et le temps est trop long.
  5. Ce qui précède sont quelques opinions personnelles. J'espère que vous, les seniors, pourrez me donner quelques conseils.
过去多啦不再A梦
过去多啦不再A梦

répondre à tous(1)
过去多啦不再A梦

La demande que vous avez mentionnée consiste essentiellement à créer un entrepôt de données. L'idée de base est la suivante :

1. Les bases de données de l'entrepôt de données et du système métier sont indépendantes. La modélisation de l'entrepôt de données nécessite généralement une conception hiérarchique, et non la simple construction d'une grande table.
Il est généralement divisé en couche tampon, couche de base, couche d'agrégation, couche de rapport, etc. L'objectif de chaque couche est différent La couche de base est toujours basée sur le modèle paradigmatique, la couche d'agrégation doit généralement rendre les données redondantes et. la couche de rapport est généralement une conception de tableau large avec de nombreuses colonnes.

2. Synchronisation des données. Lorsque la quantité de données est importante, il doit y avoir un mécanisme incrémentiel. Sinon, une modification du système doit être appliquée.

3. Il existe plusieurs idées de méthodes de synchronisation :

a. 用dblink打通数据库,人工写存储过程。
b. 用informatic powercenter 或kettle类似的ETL工具
c. 专用的数据库层同步软件,如oracle的ogg等
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!