Heim  >  Artikel  >  Aufbrechen von Datensilos mit einem einheitlichen Data Warehouse: CDP auf Basis von Apache Doris

Aufbrechen von Datensilos mit einem einheitlichen Data Warehouse: CDP auf Basis von Apache Doris

百草
百草Original
2024-03-20 13:47:56960Durchsuche

Da Unternehmensdatenquellen immer vielfältiger werden, ist das Problem von Datensilos allgegenwärtig. Wenn Versicherungsunternehmen Kundendatenplattformen (CDPs) aufbauen, stehen sie vor dem Problem komponentenintensiver Rechenschichten und verstreuter Datenspeicherung aufgrund von Datensilos. Um diese Probleme zu lösen, führten sie CDP 2.0 auf Basis von Apache Doris ein und nutzten die einheitlichen Data-Warehouse-Funktionen von Doris, um Datensilos aufzubrechen, Datenverarbeitungspipelines zu vereinfachen und die Datenverarbeitungseffizienz zu verbessern.

Aufbrechen von Datensilos mit einem einheitlichen Data Warehouse: CDP auf Basis von Apache Doris

Das Datensilo-Problem ist für Online-Unternehmen wie Arthritis, da fast jeder mit zunehmendem Alter damit konfrontiert wird. Unternehmen interagieren mit Kunden über Websites, mobile Apps, HTML5-Seiten und Endgeräte. Aus irgendeinem Grund ist die Integration von Daten aus all diesen Quellen schwierig. Die Daten bleiben dort, wo sie sind, und können für eine weitere Analyse nicht miteinander korreliert werden. So entstehen Datensilos. Je größer Ihr Unternehmen wird, desto vielfältigere Quellen für Kundendaten stehen Ihnen zur Verfügung und desto wahrscheinlicher ist es, dass Sie in Datensilos stecken bleiben.

Genau das passiert mit den Versicherungsgesellschaften, die ich in diesem Artikel besprechen werde. Bis 2023 haben sie mehr als 500 Millionen Kunden betreut und 57 Milliarden Versicherungsverträge abgeschlossen. Als sie mit dem Aufbau ihrer Customer Data Platform (CDP) begannen, um solch große Datenmengen zu bewältigen, verwendeten sie mehrere Komponenten.

Datensilos in CDP

Wie die meisten Datenplattformen verfügt ihr CDP 1.0 sowohl über Batch-Pipelines als auch über Echtzeit-Streaming-Pipelines. Offline-Daten werden über einen Spark-Job in Impala geladen, wo sie beschriftet und in Gruppen unterteilt werden. Gleichzeitig sendet Spark es auch zur OneID-Berechnung an NebulaGraph (mehr dazu später in diesem Artikel). Andererseits werden Echtzeitdaten von Flink markiert und dann zur Abfrage in HBase gespeichert.

Dadurch entsteht eine komponentenintensive Rechenschicht in CDP: Impala, Spark, NebulaGraph und HBase.

Dadurch sind Offline-Beschriftungen, Live-Beschriftungen und Diagrammdaten auf mehrere Komponenten verteilt. Ihre Integration zur Bereitstellung weiterer Datendienste ist aufgrund redundanter Speicherung und großer Datenübertragungen kostspielig. Noch wichtiger ist, dass sie aufgrund von Speicherunterschieden den Umfang des CDH-Clusters und des NebulaGraph-Clusters erweitern mussten, was zu höheren Ressourcen- und Wartungskosten führte.

CDP basierend auf Apache Doris

Für CDP 2.0 beschlossen sie, eine einheitliche Lösung einzuführen, um das Chaos zu beseitigen. In der Rechenschicht von CDP 2.0 ist Apache Doris für die Echtzeit- und Offline-Datenspeicherung und -berechnung verantwortlich.

Um Offline-Daten aufzunehmen, nutzen sie die Streaming-Lademethode. Ihr 30-Thread-Ingest-Test zeigte, dass über 300.000 Update-Einfügungen pro Sekunde durchgeführt werden können. Um Echtzeitdaten zu laden, verwendeten sie eine Kombination aus Flink-Doris-Connector und Stream Load. Darüber hinaus nutzen sie bei Echtzeitberichten, die das Abrufen von Daten aus mehreren externen Datenquellen erfordern, Multikatalogfunktionen für föderierte Abfragen.

Der Kundenanalyse-Workflow für dieses CDP ist wie folgt. Zuerst organisieren sie Kundeninformationen und kennzeichnen dann jeden Kunden. Sie gruppieren Kunden nach Tags für gezieltere Analysen und Aktionen.

Als nächstes werde ich mich mit diesen Arbeitslasten befassen und Ihnen zeigen, wie Apache Doris sie beschleunigt.

Eine ID

Haben Sie schon einmal erlebt, dass Ihre Produkte und Dienstleistungen unterschiedliche Benutzerregistrierungssysteme haben? Sie könnten die E-Mail-Adresse von Benutzer-ID A auf einer Produktseite und dann die Sozialversicherungsnummer von Benutzer-ID B auf einer anderen Produktseite erfassen. Sie werden dann feststellen, dass Benutzer-ID A und Benutzer-ID B tatsächlich derselben Person gehören, da sie dieselbe Telefonnummer verwenden.

Deswegen ist OneID als Idee entstanden. Dabei werden die Benutzerregistrierungsinformationen aller Geschäftsbereiche in einer großen Tabelle in Apache Doris gesammelt, organisiert und sichergestellt, dass jeder Benutzer eine eindeutige OneID hat.

Auf diese Weise nutzen sie die Funktionalität von Apache Doris, um festzustellen, welche Registrierungen demselben Benutzer gehören.

Tag-Service

Dieser CDP speichert 500 Millionen Kundeninformationen aus mehr als 500 Quelltabellen mit insgesamt mehr als 2000 angehängten Tags.

Je nach Aktualität können Tags in Echtzeit-Tags und Offline-Tags unterteilt werden. Echtzeit-Tags werden von Apache Flink berechnet und in flache Tabellen in Apache Doris geschrieben, während Offline-Tags von Apache Doris berechnet werden, da sie aus Benutzerattributtabellen, Geschäftstabellen und Benutzerverhaltenstabellen in Doris stammen. Im Folgenden sind die Best Practices des Unternehmens bei der Datenkennzeichnung aufgeführt:

1. Offline-Kennzeichnung

Während der Spitzenzeit beim Datenschreiben können vollständige Aktualisierungen aufgrund des großen Datenumfangs leicht zu OOM-Fehlern führen. Um dies zu vermeiden, nutzten sie die INSERT INTO SELECT-Funktionalität von Apache Doris und ermöglichten teilweise Spaltenaktualisierungen. Dadurch wird der Speicherverbrauch erheblich reduziert und die Systemstabilität während des Datenladens aufrechterhalten.

set enable_unique_key_partial_update=true;
insert into tb_label_result(one_id, labelxx) 
select one_id, label_value as labelxx
from .....

2. Live-Labels

Teilweise Spaltenaktualisierungen sind auch für Live-Labels verfügbar, da selbst Live-Labels unterschiedlich schnell aktualisiert werden. Dazu muss lediglich „partial_columns“ auf „true“ gesetzt werden.

curl --location-trusted -u root: -H "partial_columns:true" -H "column_separator:," -H "columns:id,balance,last_access_time" -T /tmp/test.csv http://127.0.0.1:48037/api/db1/user_profile/_stream_load

3. Punktabfrage mit hoher Parallelität

以目前的业务规模,该公司正在以超过 5000 QPS 的并发水平接收标签查询请求。他们使用策略组合来保证高性能。首先,他们采用Prepared Statement来预编译和预执行SQL。其次,他们微调 Doris 后端和表的参数以优化存储和执行。最后,它们启用行缓存作为面向列的 Apache Doris 的补充。

微调 Doris 的后端参数be.conf:

disable_storage_row_cache = false                      
storage_page_cache_limit=40%

创建表时微调表参数:

enable_unique_key_merge_on_write = true
store_row_column = true
light_schema_change = true

4.标签计算(Join)

在实践中,很多标签服务都是通过数据库中的多表连接来实现的。这通常涉及 10 多个表。为了获得最佳的计算性能,他们在Doris中 采用了共置组策略。

客户分组

CDP 2.0 中的客户分组管道是这样的:Apache Doris 从客户服务接收 SQL,执行计算,并通过 SELECT INTO OUTFILE 将结果集发送到 S3 对象存储。该公司已将其客户分为100万组。过去在 Impala 中需要50 秒才能完成的客户分组任务,现在在 Doris 中只需要10 秒。 

除了对客户进行分组进行更细粒度的分析外,有时他们还会进行反向分析。即针对某个客户,找出他/她属于哪些群体。这有助于分析师了解客户的特征以及不同客户群体的重叠情况。

在 Apache Doris 中,这是通过 BITMAP 函数实现的:BITMAP_CONTAINS是检查客户是否属于某个组的快速方法, 、BITMAP_OR、BITMAP_INTERSECT和BITMAP_XOR是交叉分析的选择。 

结论

从CDP 1.0到CDP 2.0,保险公司采用统一数据仓库Apache Doris替代Spark+Impala+HBase+NebulaGraph。通过打破数据孤岛和简化数据处理管道,提高了数据处理效率。在CDP 3.0中,他们希望通过结合实时标签和离线标签来对客户进行分组,以进行更加多样化和灵活的分析。Apache Doris 社区和VeloDB团队将继续作为此次升级期间的支持合作伙伴。

Das obige ist der detaillierte Inhalt vonAufbrechen von Datensilos mit einem einheitlichen Data Warehouse: CDP auf Basis von Apache Doris. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn