Heim  >  Fragen und Antworten  >  Hauptteil

Wie entwerfe ich Berichte für große verteilte Systeme?

Die zweite Einreichung wurde erneut mit der Begründung abgelehnt: „Dieser Inhalt gehört zur Fachdiskussion. Es wird empfohlen, kurz über Ihre Gedanken zu diesem Thema zu sprechen, um einen besseren fachlichen Austausch zu ermöglichen.“ Aufgrund des Layouts war es das erste Mal. Ich gebe zu, warum ist es so schwierig, einen Frage-und-Antwort-Beitrag zu veröffentlichen? Okay, drücken Sie es einfach nach Bedarf aus. Wenn Sie wirklich keine Ahnung haben, müssen Sie es dann zufällig erfinden? Ich glaube, dass das Website-Team eine gute Absicht hat, aber für Neulinge ist es wahrscheinlich, dass es aus diesem Grund aufgegeben wird. Zum letzten Mal werde ich dieses Forum nicht mehr nutzen. Es ist wirklich schwierig, Fragen zu stellen.

Das Folgende ist der Originaltext, und ich werde am Ende einige meiner eigenen Gedanken anhängen.

Es ist mein erstes Mal hier. Mein Layout war zum ersten Mal zu chaotisch, was dazu führte, dass ich die Rezension nicht bestanden habe. Später lernte ich eine spezielle Markdown-Syntax. Kommen wir ohne weitere Umschweife zum Text.

  1. Systemhintergrund

    • Ein großes börsennotiertes Staatsunternehmen verfügt über Niederlassungen in verschiedenen Provinzen und Städten. Um die Geschäftsprozesse und Finanzdaten von Niederlassungen und Tochtergesellschaften im ganzen Land einheitlich zu verwalten, wurde eine Verwaltungsplattform entwickelt und dann an jede Provinz und Stadt verteilt Basierend auf den tatsächlichen Bedingungen ist eine sekundäre Entwicklung erforderlich, um die ursprünglichen dezentralen Finanzsysteme und Unternehmensverwaltungssysteme verschiedener Städte zu ersetzen.

  2. Plattformeinführung

    • Das Frontend verwendet AngularJs, Bootstrap, HTML, das Backend verwendet SpringMVC, MyBatis, die Datenbank enthält Oracle und MySQL, das RPC-Framework verwendet Dubbo, das Registrierungscenter verwendet Zookeeper und der Cache verwendet Redis. Die gesamte Systemarchitektur ist verteilt + Cluster. Das gesamte System umfasst mehrere Geschäftsmodule, hauptsächlich fünf Module: „Projektmanagement“, „Vertragsmanagement“, „Beschaffungsmanagement“, „Vertriebsmanagement“ und „Buchhaltungsmanagement“.

  3. Bestehende Nachfrage

    • Erstellen Sie über 100 Berichte basierend auf dem bestehenden Geschäft. Das Berichtsmodul verfügt über eine unabhängige Datenbank und Anwendung.

  4. Technische Schwierigkeiten

    • Wie erstelle ich eine große Tabelle zur Verwendung in allen Berichten?
      Das klare Verstehen des Geschäftsteils ist natürlich das Grundlegendste, aber Dienste werden über Schnittstellen zwischen den einzelnen Modulen aufgerufen.

    • Wie extrahiere ich große Datenmengen aus verteilten Datenbanken?
      Jedes Modul verfügt über eine eigene Datenbank, einige verwenden Oracle, andere MySQL und das Datenvolumen übersteigt mehrere zehn Millionen.

    • Was sollte der sinnvollere Weg sein, Daten zu synchronisieren? Mit welcher Technologie?
      Die inkrementelle Synchronisierung ist schwierig. Es gibt keine gute Möglichkeit, sicherzustellen, dass inkrementelle Daten nicht übersehen werden, da die Datenmenge jedes Mal zu groß ist. Wie können wir außerdem die Leistung bei der Anzeige von Berichten und dem Export von Daten sicherstellen?

Das ist das erste Mal, dass ich ein so großes Projekt mache, daher bin ich wirklich verwirrt. Wenn Sie etwas hinzufügen möchten, hinterlassen Sie bitte eine Nachricht. Ich hoffe, dass mir die Senioren im Forum einen Rat geben können, ich wäre sehr dankbar.

ps:
Es gibt viele Teile des Markdowns, die ich immer noch nicht ganz verstehe. Wenn beispielsweise geordnete und ungeordnete Listen verschachtelt sind, warum werden die durchgezogenen schwarzen Punkte leer?
Warum ist der Zeilenumbruch der ungeordneten Liste nur für die aktuelle Zeile gültig, und wenn die aktuelle Zeile gültig ist, sind die oben umbrochenen Zeilen ungültig?
Ich verstehe nicht. Könnte es sein, dass die Syntax verschiedener Editoren unterschiedlich ist?
Wie kann ich den Abschlag von Beiträgen sehen, die von anderen gepostet wurden? Wenn man es sehen kann, kann man es zumindest lernen.


Persönliche Designideen

  1. Analysieren Sie die statistischen Dimensionen und gemeinsamen Felder aller Berichte, erstellen Sie einen neuen Oracle-Benutzer im Berichtsmodul, teilen Sie alle Felder entsprechend dem Modul in Tabellen auf und verwenden Sie sie als Basistabelle des Berichts

  2. Sie müssen über die Methode der Datenextraktion nachdenken. Derzeit fallen mir zwei Methoden ein:

    • Stellen Sie Schnittstellen über jedes Modul bereit und fügen Sie die Daten in die große Basistabelle des Berichtsmoduls ein. Vorteile: Die Extraktionsregeln sind einfach zu pflegen

    • Verbinden Sie die Oracle-Datenbank und die MySQL-Datenbank über DBLink und verwenden Sie gespeicherte Prozeduren, um Daten direkt in die große Basistabelle einzufügen. Vorteile: Leistungsverbesserung; Nachteile: Es wird für andere schwierig sein, die Regeln einzuhalten.
  3. Daten werden jedes Mal vollständig synchronisiert. Vorteile: Die Logik ist einfach; Nachteile: Die Datensynchronisation ist zu groß und die Zeit ist zu lang.
  4. Das Obige sind einige persönliche Meinungen. Ich hoffe, dass Sie Senioren mir einige Ratschläge geben können.
过去多啦不再A梦过去多啦不再A梦2678 Tage vor1127

Antworte allen(1)Ich werde antworten

  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-20 10:07:40

    你说的需求基本算是建设数据仓库,基本的思路是:

    1、数据仓库和业务系统的数据库独立,数据仓库的建模一般要分层设计,不是简单的建成大表。
    普遍会分为缓冲层、基础层、聚合层、报表层等,每层的侧重点不太一样,基础层还是以范式模型为主,聚合层就要普遍要做数据冗余,报表层一般是列很多的宽表设计。

    2、数据同步,在数据量大的情况下必须有增量机制,如果没有需应用系统改造。

    3、同步方法有几种思路:

    a. 用dblink打通数据库,人工写存储过程。
    b. 用informatic powercenter 或kettle类似的ETL工具
    c. 专用的数据库层同步软件,如oracle的ogg等

    Antwort
    0
  • StornierenAntwort