検索

Artículo
· 1 hr atrás Lectura de 4 min

Denim Tears ® | Oficjalny sklep w Polsce

 

Denim Tears: The Cultural Fashion Movement and the Rise of the Denim Tears Hoodie

Streetwear has evolved far beyond simple fashion—it has become a form of culture, identity, and storytelling. Among the most influential brands shaping this global movement is Denim Tears, a label founded by Tremaine Emory. Denim Tears has earned worldwide attention not because it follows trends, but because it creates them. Its powerful message, artistic expression, and deep historical influence make it one of today's most respected streetwear names. Among its standout creations, the Denim Tears Hoodie has become a symbol of expression, individuality, and cultural pride.In this article, we dive deep into the story behind Denim Tears, explore the significance of the Denim Tears Hoodie, and understand why this brand continues to dominate the streetwear world.

The Story Behind Denim Tears

Denim Tears is more than a clothing line—it’s a powerful narrative. Created by Tremaine Emory, an influential figure in fashion and culture, the brand highlights African American history, identity, and resilience. Emory focuses on blending art, fashion, and historical storytelling to create garments that carry meaning and emotion.While many brands sell style, Denim Tears sells significance.One of the brand’s most iconic motifs is the cotton wreath, a symbol deeply connected to the history of African American struggles during slavery. By putting these symbols on everyday fashion pieces, Emory encourages people to remember the past, acknowledge cultural roots, and spark conversations about identity.This emotional storytelling is what sets Denim Tears apart—and why it has grown into a cultural movement embraced by people all over the world.

Why Denim Tears Stands Out in Streetwear

The fashion world is crowded with brands trying to gain attention, but Denim Tears has created a unique place for itself. The reason is simple: authenticity.

Here’s why Denim Tears continues to rise:

1. Deep Meaning Behind Every Design

Each piece represents art, culture, and history. Instead of random graphics, the designs speak to real stories and real experiences.

2. Limited Drops and High Demand

Denim Tears collections often release in limited quantities, making each item rare and more valuable. This exclusivity drives massive demand from collectors and streetwear fans.

3. Collaborations With Major Brands

Denim Tears has collaborated with big names like Levi’s, Converse, and Champion. These collaborations highlight the brand’s global influence and expand its reach.

4. A Strong, Loyal Fan Base

People who buy Denim Tears don’t just wear it—they connect with it. This emotional connection keeps the brand growing organically.

The Denim Tears Hoodie: A Modern Streetwear Essential

Among the brand’s most popular pieces, the Denim Tears Hoodie has quickly become a must-have item for streetwear lovers. It is stylish, comfortable, and carries the emotional depth that defines the brand.

1. Unique Designs

The hoodies often feature symbolic graphics such as:

  • The cotton wreath logo
  • Cultural artwork
  • Emory’s signature storytelling prints

These designs make the hoodie instantly recognizable.

2. Premium Quality

Denim Tears is known for using high-quality cotton and top-tier printing methods. The hoodies are soft, durable, and made for long-term comfort.

3. Versatile Fashion

A Denim Tears Hoodie can be styled with almost anything:

  • Jeans
  • Cargo pants
  • Streetwear sneakers
  • Jackets

Whether you're going for a casual or a bold streetwear look, the hoodie fits perfectly.

4. A Symbol of Culture

Wearing a Denim Tears Hoodie is not just a fashion choice—it’s a statement of identity and cultural awareness. The hoodie represents art, history, and modern style in one piece.

How Denim Tears Influences Fashion Culture

Denim Tears has pushed the boundaries of streetwear by blending fashion with cultural storytelling. Here’s how it continues to make an impact:

1. Bringing History Into Modern Fashion

By integrating symbols linked to African American history, Denim Tears keeps important conversations alive. This connection between fashion and history educates people through style.

2. Shaping New Generations in Streetwear

Young artists, designers, and creators look up to Denim Tears as inspiration. The brand encourages others to create with purpose, not just for trends.

3. Influencing Celebrity Style

Celebrities, influencers, and athletes frequently wear Denim Tears. When stars rock the Denim Tears Hoodie, it helps the brand grow even more.

4. Creating a Global Movement

Denim Tears is loved worldwide because its message is universal—identity, expression, and culture are things everyone relates to.

Why You Should Own a Denim Tears Hoodie

If you love streetwear, then the Denim Tears Hoodie deserves a place in your wardrobe. It is more than a fashion item—it is:

  • A cultural symbol
  • A premium quality piece
  • A conversation starter
  • A unique, artistic design
  • A collectible for streetwear fans

The hoodie connects modern fashion with meaningful storytelling, making it one of the most iconic pieces of today’s streetwear culture.

Conclusion

Denim Tears continues to transform the landscape of global streetwear with its powerful blend of art, culture, and fashion. The Denim Tears Hoodie, one of its standout creations, is admired by collectors, creators, and fashion lovers for its meaning, quality, and design.Whether you are a longtime fan or discovering the brand for the first time, Denim Tears offers more than clothing—it offers a deeper message. And that is what makes the brand truly legendary.

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 4 hr atrás Lectura de 7 min

Pythonモジュール入門

img

モジュールは重要なテーマです! ObjectScriptにはこの概念はありませんが、Pythonでは基本的な考え方です。 一緒に見ていきましょう。

モジュールとは?

モジュールは、クラスとパッケージの間にある中間層だと私は考えています。 例を見てみましょう。

悪い例:

# MyClass.py
class MyClass:
    def my_method(self):
        print("Hello from MyClass!")

別のスクリプトでこのクラスを使用する場合、次のようになります。

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 4 hr atrás Lectura de 6 min

Ritu Tech N Build – Transforming Prefabricated Construction in Haridwar With Innovation, Quality & Speed

 

In today’s rapidly evolving industrial world, businesses rely on structures that are strong, reliable, cost-effective and quick to build. Traditional construction methods often fail to offer this perfect balance. That’s exactly where Ritu Tech N Build, commonly known as RituTech, has established itself as one of the most trusted and forward-thinking names in the construction industry—especially for prefabricated structures in Haridwar and the surrounding industrial hubs of Uttarakhand.

Over the last several years, RituTech Haridwar has become synonymous with superior quality engineering, advanced prefabrication technologies, and timely project delivery. Whether you’re planning to build a warehouse, an industrial shed, a production unit, or a multi-storey steel structure, Ritu Tech Haridwar offers turnkey solutions designed to meet modern industrial demands.

 


A Pioneer in Prefabricated Structures in Haridwar

With industries growing exponentially in SIDCUL and nearby regions, the demand for strong, quick-to-erect and cost-efficient structures has never been higher. This is where RituTech stands out as a leading prefabricated structures manufacturer in Haridwar. Their dedication to innovation, precision engineering and customer-focused execution has helped them become a preferred choice for companies looking to expand or build from the ground up.

Unlike many service providers who focus only on one phase, Ritu Tech N Build manages everything—from design and engineering to fabrication, installation, finishing and handover. This seamless process ensures that every client gets a ready-to-use structure delivered within the promised timeline.

 


Why Businesses Choose RituTech Haridwar

1. Faster Construction with Zero Compromise on Quality

The biggest advantage of working with a prefabricated structures company in Haridwar is the remarkable speed of construction. Prefabricated elements are manufactured in a controlled environment using advanced machinery and assembled on-site with minimal welding. This drastically reduces delays caused by weather conditions, labour issues, and material wastage.

Ritu Tech’s prefabricated solutions help industries become operational much faster—giving them a competitive advantage in both time and cost.

 


2. Better Cost Efficiency Than Conventional Construction

Prefabricated technology naturally reduces overall costs by saving labour hours, reducing material wastage and enabling quicker project completion. For industries in Haridwar and SIDCUL looking to expand their operations without stretching their budget, ritutech provides the ideal blend of affordability and long-term reliability.

 


3. Customised Design for Every Industry

Whether you need a large-span production unit, a storage godown, a high-capacity warehouse, or a modern commercial set-up, Ritu Tech Haridwar creates structures tailored to the unique needs of each business sector. Every design is engineered to withstand heavy industrial usage, long-term wear, unpredictable weather and local environmental conditions.

Their engineering team ensures that every project follows a systematic approach—taking into account structural load, future expansion possibilities, ventilation, insulation, interior workflow efficiency and aesthetic considerations.

 


4. Strong Local Presence Means Better Service

Because Ritu Tech N Build operates actively in Haridwar and other Uttarakhand industrial regions, clients benefit from faster responses, easier coordination and improved on-site supervision. Their local experience also ensures smoother project management, faster delivery of materials and deep understanding of regional industrial requirements.

This local advantage is one of the reasons why more businesses now search for ritutech haridwar when looking for dependable prefabricated building partners.

 


Product & Service Expertise That Covers Every Industrial Need

Ritu Tech’s offerings are broad and versatile, making them a complete construction partner for industries across Uttarakhand and North India. Here are the major solutions they provide:

• Prefabricated Building Structures in Haridwar

These include industrial sheds, warehouses, workshops, store units, production facilities and much more. Built with precision and high-grade steel, these prefabricated structures provide long life, stability and low maintenance.

• Pre-Engineered Buildings (PEB)

Their PEB systems are fast, economical and lightweight. They allow easy expansion and modification, perfect for industries expecting long-term growth.

• Multi-Storey Steel Buildings

For showrooms, offices, institutions or mixed-use commercial spaces, RituTech offers multi-storey steel structures known for strength, safety and modern aesthetics.

• Metal Roofing, Decking Sheets & Cladding

Their roofing and wall panel systems enhance structural durability while improving insulation, temperature regulation and overall building aesthetics.

• Tensile Structures & Custom Projects

From tensile covers to parking sheds and custom steel projects, RituTech’s creativity and engineering innovation shine through.

Every structure manufactured by RituTech reflects meticulous detailing, advanced machinery usage and strict adherence to quality standards—making them a reliable prefabricated structures company in Haridwar.

 


Industries That Rely on RituTech

Companies from multiple segments trust Ritu Tech N Build for their structural needs. Some key sectors include:

  • Pharmaceuticals
  • Food processing
  • Manufacturing units
  • FMCG companies
  • Automotive component plants
  • Packaging industries
  • E-commerce warehousing
  • Cold storage units
  • Commercial retail buildings
  • Educational and institutional buildings

The flexibility and speed of prefabricated building structures in Haridwar make them ideal for industries with continuous demand for expansion and quick operational setup.

 


The RituTech Approach: Transparent, Efficient & Client-Centric

What makes clients repeatedly choose RituTech is their well-structured execution model:

Step 1 – Requirement Study & Site Assessment

The team first understands the client’s operational needs, machinery load, land size and future expansion plans.

Step 2 – Tailored Structural Design

Every drawing is engineered to optimise strength, airflow, functionality and aesthetic appeal.

Step 3 – Fabrication in World-Class Facilities

Precision-cut components are manufactured in advanced workshops, ensuring perfect alignment and minimal on-site adjustments.

Step 4 – Delivery & On-Site Erection

Teams assemble the entire structure quickly using pre-engineered components, ensuring minimal disruption.

Step 5 – Final Finishing & Handover

The structure is inspected, validated and delivered as a ready-to-operate asset.

This transparent and disciplined approach has helped ritutech build long-term trust with clients.

 


Why RituTech Is the Best Choice for Prefabricated Structures in Haridwar

  • Strong reputation & proven track record
  • Local manufacturing and service presence
  • Faster project completion
  • Durable, corrosion-resistant structures
  • Competitive pricing and full value for money
  • Modern machinery & strict quality control
  • 100% customisable solutions
  • Long-term service support and maintenance options

For companies in SIDCUL, Shivalik Nagar, Roorkee, Dehradun and nearby areas, partnering with Ritu Tech Haridwar ensures top-level construction quality delivered in record time.

 


Future-Ready Construction for Growing Businesses

The industrial growth in Haridwar and Uttarakhand is accelerating rapidly. With companies expanding manufacturing capacity, upgrading warehouses and setting up new units, the need for modern prefabricated construction technology is becoming essential.

Ritu Tech N Build is not just a manufacturer—it is a strategic partner helping businesses grow with infrastructure that is strong, scalable and long-lasting.

If your business aims to move fast, reduce costs and upgrade your operations, choosing RituTech Haridwar is one of the smartest decisions you can make.

 


Final Words

As industries evolve, construction methods must evolve too. Prefabricated technology is the future of industrial building—and RituTech is leading that future in Haridwar. With unmatched expertise, modern engineering capabilities and years of hands-on experience, Ritu Tech N Build stands tall as a dependable and results-driven prefabricated structures manufacturer in Haridwar.

If you’re planning your next industrial shed, warehouse, PEB building, or commercial project, then ritutech haridwar is the partner that will turn your vision into a strong, reliable and efficient structure.

Comentarios (0)1
Inicie sesión o regístrese para continuar
InterSystems Official
· 7 hr atrás

发布说明:InterSystems 云服务——版本 25.22.2

概述

该版本引入了FHIR Server 2025.10.0,该版本遵循最新标准并实现了性能提升。它还增强了Health Connect Cloud(HCC)升级流程,提高了其可靠性,并通过在 VPN 配置中支持前缀列表为Network Connect增加了新的灵活性。


新功能和增强功能

类别

功能/改进

详细信息

FHIR Server

发布 FHIR 服务器 2025.10.0

推出 InterSystems FHIR Server 的最新版本,具有更高的可扩展性、更强的 FHIR R5 一致性以及对批量数据交换的优化。

Health Connect Cloud

升级流程改进

简化和强化了 HCC 部署的升级工作流程,缩短了维护窗口持续时间,提高了回滚安全性和自动化准确性。

Network Connect

静态 VPN 导入支持前缀列表

静态 VPN 导入任务现在支持 AWS 前缀列表,简化了路由管理,使客户环境中的网络配置更加动态和一致。


推荐操作

此版本无建议操作。


支持

如需帮助或了解有关这些更新的更多信息,请通过 iService 或 InterSystems 云服务门户(InterSystems Cloud Service Portal)提交支持请求。

©2025 InterSystems Corporation。保留所有权利。

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 12 hr atrás Lectura de 12 min

Data Streaming com interoperabilidade do InterSystems IRIS

As arquiteturas de dados modernas utilizam soluções de captura, transformação, movimentação e carregamento de dados em tempo real para construir data lakes, data warehouses analíticos e repositórios de big data. Isso permite a análise de dados de diversas fontes sem impactar as operações que os utilizam. Para alcançar esse objetivo, é essencial estabelecer um fluxo de dados contínuo, escalável, elástico e robusto. O método mais comum para isso é a técnica de CDC (Change Data Capture). O CDC monitora a produção de pequenos conjuntos de dados, captura esses dados automaticamente e os entrega a um ou mais destinatários, incluindo repositórios de dados analíticos. O principal benefício é a eliminação do atraso D+1 na análise, já que os dados são detectados na origem assim que são produzidos e, posteriormente, replicados para o destino.

Este artigo demonstrará as duas fontes de dados mais comuns para cenários de CDC, tanto como origem quanto como destino. Para a origem dos dados, exploraremos o CDC em bancos de dados SQL e arquivos CSV. Para o destino dos dados, utilizaremos um banco de dados colunar (um cenário típico de banco de dados analítico de alto desempenho) e um tópico do Kafka (uma abordagem padrão para transmitir dados para a nuvem e/ou para vários consumidores de dados em tempo real).

Visão Breve

Este artigo fornecerá um exemplo para o seguinte cenário de interoperabilidade:

 

  1. O SQLCDCAdapter utilizará o SQLInboundAdapter para detectar novos registros no banco de dados SQL e extraí-los com a ajuda de uma conexão JDBC e da linguagem SQL.
  2. O SQLCDCAdapter encapsulará os dados capturados em uma mensagem e a enviará para o CDCProcess (um Processo de Negócio usando a notação BPL).
  3. O CDCProcess recebe os dados SQL como uma mensagem e utiliza a Operação SQL para persistir os dados no IRIS e a Operação Kafka para transmitir os dados capturados para um tópico do Kafka.
  4. A Operação SQL persistirá os dados da mensagem em uma Classe Persistente do InterSystems IRIS modelada como armazenamento colunar.
  5. O armazenamento colunar é uma opção que oferece desempenho superior em consultas para dados analíticos.
  6. A Operação Kafka transformará a mensagem em JSON e a enviará para um tópico do Kafka, onde um data lake na nuvem ou qualquer outro assinante poderá consumi-la.
  7. Esses fluxos de dados são executados em tempo real, estabelecendo um fluxo de dados contínuo.
  8. O Serviço BAM calculará as métricas de negócios a partir da tabela colunar em tempo real. Um painel de BI exibirá as métricas de negócios resultantes para o usuário instantaneamente.

Instalando o exemplo

O pacote iris-cdc-sample (https://openexchange.intersystems.com/package/iris-cdc-sample) é um aplicativo de exemplo que implementa o cenário descrito acima. Para instalá-lo, siga estas etapas:

1. Clone/git pull o repositório em qualquer diretório local:

$ git clone https://github.com/yurimarx/iris-cdc-sample.git

2. Abra o terminal neste diretório e execute o comando abaixo:

$ docker-compose build

3. Execute o contêiner IRIS com seu projeto:

$ docker-compose up -d


Componentes do exemplo

Este exemplo utiliza os seguintes contêineres:

  • iris: Plataforma InterSystems IRIS, incluindo:
    • Banco de Dados Colunar IRIS (para armazenar os dados capturados).
    • Interoperabilidade IRIS com um ambiente de produção para executar o processo de CDC (captura de dados de alteração). A produção captura dados de um banco de dados externo (PostgreSQL), os persiste no IRIS e os transmite para um tópico do Kafka.
    • IRIS BAM (Monitoramento de Atividade Comercial) para calcular métricas de vendas em tempo real por produto e exibi-las em um painel.
  • salesdb: Um banco de dados PostgreSQL contendo dados de vendas a serem capturados em tempo real.
  • zookeeper: Um serviço usado para gerenciar o broker Kafka.
  • kafka: O broker Kafka com o tópico de vendas, utilizado para receber e distribuir dados de vendas como eventos em tempo real.
  • kafka-ui: Uma interface web do Kafka para administração e operação de tópicos e eventos.
services:
  iris:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    command: --check-caps false --ISCAgent false
    ports:
      - 1972
      - 52795:52773
      - 53773
    volumes:
      - ./:/home/irisowner/dev/
    networks:
      - cdc-network
  salesdb:
    image: postgres:14-alpine
    container_name: sales_db
    restart: always
    environment:
      POSTGRES_USER: sales_user
      POSTGRES_PASSWORD: welcome1
      POSTGRES_DB: sales_db
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
      - postgres_data:/var/lib/postgresql/data/
    ports:
      - "5433:5432"
    networks:
      - cdc-network


  zookeeper:
      image: confluentinc/cp-zookeeper:7.5.0
      container_name: zookeeper
      hostname: zookeeper
      networks:
        - cdc-network
      ports:
        - "2181:2181"
      environment:
        ZOOKEEPER_CLIENT_PORT: 2181
        ZOOKEEPER_TICK_TIME: 2000
  kafka:
    image: confluentinc/cp-kafka:7.5.0
    container_name: kafka
    hostname: kafka
    networks:
      - cdc-network
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://kafka:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
  kafka-ui:
      image: provectuslabs/kafka-ui:latest
      container_name: kafka-ui
      hostname: kafka-ui
      networks:
        - cdc-network
      ports:
        - "8080:8080"
      depends_on:
        - kafka
      environment:
        KAFKA_CLUSTERS_0_NAME: local_kafka_cluster
        KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
volumes:
  postgres_data:
    driver: local


networks:
  cdc-network:
    driver: bridge

Criando uma tabela colunar

Tabelas colunares são utilizadas para armazenar dados não normalizados, como os seguintes:

Nome do produto

Nome Loja

Valor venda (Price)

Orange

Store 1

120

Orange 

Store 1

200

Banana

Store 2

100

Banana

Store 1

120

Orange

Store 2

110

Como os valores de Nome do Produto e Nome da Loja se repetem com frequência, armazenar os dados em formato colunar (como colunas em vez de linhas) conserva espaço de armazenamento e proporciona um desempenho superior na recuperação de dados. Historicamente, esse tipo de processamento exigia a criação de cubos de BI. No entanto, o armazenamento colunar resolve esse problema, eliminando a necessidade de replicar dados operacionais em cubos.
Agora, siga estas etapas para criar a tabela colunar de Vendas para o nosso exemplo:

1. Crie uma nova classe ObjectScript chamada Sales dentro do pacote dc.cdc.

2. Escreva o seguinte código-fonte:

Class dc.cdc.Sales Extends %Persistent [ DdlAllowed, Final ]
{

Parameter STORAGEDEFAULT = "columnar";
Parameter USEEXTENTSET = 1;
Property ProductName As %String;
Property StoreName As %String;
Property SalesValue As %Double;
}

3. O parâmetro STORAGEDEFAULT = "columnar" configura a tabela dc_cdc.Sales para usar columnar storage, ao invés de usar linha.

Criando a operação comercial para salvar os dados capturados

Após capturar os dados de vendas em um StreamContainer usando o SalesSqlService (nenhuma implementação é necessária; a configuração é feita no ambiente de produção na seção "Executando CDC"), precisamos de uma Operação de Negócios para processar o StreamContainer, extrair os dados de vendas do PostgreSQL e salvá-los na tabela Sales. Execute os passos abaixo:
1. Crie a classe SalesOperation dentro do pacote dc.cdc.
2. Escreva o código-fonte abaixo:

Class dc.cdc.SalesOperation Extends Ens.BusinessOperation
{

Method ProcessSalesData(pRequest As Ens.StreamContainer, Output pResponse As Ens.StringResponse) As %Status
{
    Set tSC = $$$OK
    Set pResponse = ##class(Ens.StringResponse).%New()

    Try {
        
        Set tStream = pRequest.Stream
        
        Do tStream.Rewind()

        Set content = ""
        While 'tStream.AtEnd {
            Set content = content _ tStream.Read(4096) 
        }

        Set tDynamicObject = {}.%FromJSON(content)
        
        Set sales = ##class(dc.cdc.Sales).%New()
        Set sales.ProductName = tDynamicObject."product_name"
        Set sales.StoreName = tDynamicObject."store_name"
        Set sales.SalesValue = tDynamicObject."sales_value"
        Set tSC = sales.%Save()

        Set pResponse.StringValue = tDynamicObject.%ToJSON()
        
    } Catch (ex) {
        Set tSC = ex.AsStatus()
        Set pResponse.StringValue = "Error while saving sales data!"
        $$$LOGERROR("Error while saving sales data: " _ ex.DisplayString())
    }

    Quit tSC
}

XData MessageMap
{
<MapItems>
  <MapItem MessageType="Ens.StreamContainer">
    <Method>ProcessSalesData</Method>
  </MapItem>
</MapItems>
}

}

3. O método ProcessSalesData receberá mensagens do tipo StreamContainer (devido à definição de MessageMap).

4. O método lerá os dados de vendas capturados em uma string JSON, carregará o JSON em um DynamicObject, criará um objeto Sales, definirá os valores de suas propriedades e o salvará na tabela Sales.

5. Finalmente, o método retornará a string JSON representando os dados de vendas na resposta.

 

Criando o serviço do BAM para monitorar vendas (Sales)

O InterSystems IRIS para Interoperabilidade inclui a funcionalidade BAM, permitindo monitorar dados de negócios em tempo real processados ​​em produção usando um Painel de Análise. Para criar o serviço BAM, siga os passos abaixo:
1. Crie uma nova classe chamada SalesMetric que estenda Ens.BusinessMetric no pacote dc.cdc.
2. Escreva o seguinte código-fonte:

Class dc.cdc.SalesMetric Extends Ens.BusinessMetric
{

Property TotalSales As Ens.DataType.Metric(UNITS = "$US") [ MultiDimensional ];
Query MetricInstances() As %SQLQuery
{
  SELECT distinct(ProductName) FROM dc_cdc.Sales
}

/// Calculate and update the set of metrics for this class
Method OnCalculateMetrics() As %Status
{
    Set product = ..%Instance
    Set SalesSum = 0.0
    &sql(
        select sum(SalesValue) into :SalesSum from dc_cdc.Sales where ProductName = :product 
    )

    Set ..TotalSales = SalesSum

    Quit $$$OK
}

}

3. A propriedade TotalSales permite o monitoramento em tempo real da soma das vendas por produto.
4. A propriedade Query MetricInstances define quais produtos devem ser monitorados.
5. O método OnCalculateMetrics calcula a soma das vendas para cada produto.
6. Esta classe será utilizada em um painel para gerar o total de vendas por produto em tempo real.

Executando o Processo e Produção do CDC - Change Data Capture


Nosso diagrama de produção final, com todos os processos ETL (Extração, Transformação e Carga) necessários, é mostrado abaixo:

 

Siga os próximos passos:

1. Acesse o ambiente de produção do CDC: http://localhost:52795/csp/user/EnsPortal.ProductionConfig.zen?PRODUCTIO...
2. Crie um novo EnsLib.JavaGateway.Service chamado Java (necessário para o SalesSqlService).

3. Gere um serviço de negócios chamado SalesSqlService (SQLCDCService) e configure os seguintes parâmetros:

a. DSN (string de conexão para PostgreSQL): jdbc:postgresql://sales_db:5432/sales_db.

b. Credenciais: Crie um pg_cred com o nome de usuário (sales_user) e a senha (welcome1) para acessar o PostgreSQL.

c. Nomes de configuração de destino: SalesProcess (o processo do CDC).

d. Consulta (para selecionar os dados a serem consumidos): select * from sales.

e. Nome do Campo Chave (a coluna que o IRIS usa para rastrear linhas já capturadas): id.
f. Serviço Java Gateway (obrigatório porque o adaptador CDC usa JDBC): Java (Java Gateway para esta produção).

g. Driver JDBC: org.postgresql.Driver.

h. Classpath JDBC (um driver para conectar com o PostgreSQL, copiado via script Dockerfile): /home/irisowner/dev/postgresql-42.7.8.jar.

4. Crie uma nova instância de dc.cdc.SalesMetric chamada SalesMetric.

5. Gere uma nova instância de EnsLib.Kafka.Operation e nomeie-a como SalesKafkaOperation (Operação Kafka) com os seguintes parâmetros:

a. ClientID: iris
b. Servers: kafka:9092

6. Crie uma nova instância de dc.cdc.SalesOperation chamada SalesOperation.

7. Desenvolva um Processo de Negócio chamado SalesProcess. A lógica de implementação do BPL deve ser a seguinte:

a. Diagrama final:

 

b. Crie 2 propriedades no Context:

i. `Sales` com o tipo `Ens.StringResponse` para armazenar os dados de vendas como uma string JSON.
ii. `KafkaMessage` com o tipo `EnsLib.Kafka.Message` (para ser usado para enviar os dados capturados para o tópico `sales-topic` do Kafka).

c. Gere uma chamada, salve na tabela `Sales` e defina o seguinte:

i. Destino: `SalesOperation`
ii. Classe da mensagem de solicitação: `Ens.StreamContainer` (dados capturados como fluxo)
iii. Ações da solicitação:

 

iv. Classe da mensagem de resposta: Ens.StringResponse (o fluxo será convertido em uma representação em string JSON dos dados capturados)

v. Ações de resposta:

 

d. Crie um bloco de código e escreva um código ObjectScript que preencha a mensagem do Kafka com as propriedades necessárias para que os dados de vendas (como uma string JSON) sejam publicados como um evento no tópico de vendas do broker do Kafka:

Set context.KafkaMessage.topic = "sales-topic"
Set context.KafkaMessage.value = context.Sales.StringValue 
Set context.KafkaMessage.key = "iris"

e. Crie uma chamada para o tópico de vendas do Kafka e defina o seguinte design:

i. Destino: SalesKafkaOperation
ii. Classe da mensagem de solicitação: %Library.Persistent (KafkaMessage é persistente)
iii. Ações da solicitação:

 

f. Crie uma atribuição chamada "Enviar Resposta" com o seguinte conteúdo:

i. Propriedade: response.StringValue
ii. Valor: "Processo finalizado!"

 

Vendo os resultados do CDC

Após habilitar o CDCProduction, insira alguns registros na tabela de vendas do PostgreSQL usando sua ferramenta de administração de banco de dados (DBeaver ou PgAdmin) e observe os resultados das mensagens de produção.

 

Consulte o diagrama de sequência para entender o processo do CDC (clique em qualquer link do cabeçalho da mensagem):

 

Visualizando o monitoramento do BAM em um painel de análise

Ao capturar dados em tempo real, você naturalmente deseja visualizar os resultados instantaneamente em um painel. Siga os passos abaixo para conseguir isso:
1. Acesse Analytics > Portal do Usuário (User Portal):

 

2. Clique Add Dashboard:

 

3. Defina as propriedades abaixo e clique em OK:

a. Pasta: Ens/Analytics
b. Nome do painel: Sales BAM

4. Clique em Widgets:

 

5. Clique o botão mais:

 

6. Configure the Widget as shown below:
 

7. Ajuste o novo widget para cobrir toda a área do painel.

8. Agora, selecione WidgetSales:

9. Escolha Controls:
  

10. Clique no botão mais:
  

11. Configure o controle conforme ilustrado abaixo (para visualizar o total de vendas em tempo real, com atualização automática):

12. Agora, quando novos valores forem capturados, o painel exibirá imediatamente os valores atualizados para TotalSales.

Para aprender mais:

A documentação da InterSystems pode ajudá-lo a aprofundar seus conhecimentos em CDC, BAM, Kafka e interoperabilidade. Visite as páginas abaixo para saber mais:

  1. BAM: https://docs.intersystems.com/iris20252/csp/docbook/Doc.View.cls?KEY=EGIN_options#EGIN_options_bam  
  2. Kafka: https://docs.intersystems.com/iris20252/csp/docbook/Doc.View.cls?KEY=ITECHREF_kafka 
  3. Adaptadores SQL (CDC para tabelas SQL): https://docs.intersystems.com/iris20252/csp/docbook/Doc.View.cls?KEY=ESQL_intro
  4. Criando produções de ETL/CDC: https://docs.intersystems.com/iris20252/csp/docbook/Doc.View.cls?KEY=PAGE_interop_languages
  5. BPL (low code para processos de negócio): https://docs.intersystems.com/iris20252/csp/docbook/Doc.View.cls?KEY=EBPL_use

 

Comentarios (0)1
Inicie sesión o regístrese para continuar