> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SingleStore

> 将 SingleStore 的自定义事件同步到 OneSignal，以基于用户行为触发自动化 Journeys 和个性化消息活动。

export const PLATFORM_0 = "SingleStore"

export const DATA_TYPE_0 = "event data"

export const COLUMN_HEADER_0 = "SingleStore Column"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata as JSON"

## 概述

OneSignal + SingleStore 集成可将自定义事件从您的 SingleStore 数据库同步到 OneSignal，以基于用户行为触发自动化消息活动和 Journeys。

SingleStore 是为实时分析和高性能应用程序设计的分布式 SQL 数据库。

***

## 要求

* 访问自定义事件（目前处于测试阶段）
* [升级账户计划](https://onesignal.com/pricing)（免费应用不可用）。

### SingleStore

* **SingleStoreDB Cloud** 或 **SingleStoreDB v7.1+**
* 具有适当权限的**数据库用户**
* 包含结构化行为数据的**事件表**
* 从 OneSignal 到您的 SingleStore 集群的**网络连接**

***

## 设置

<Steps>
  <Step title="为 OneSignal 创建专用用户">
    创建一个具有强密码的专用用户帐户：

    ```sql theme={null}
    -- 创建具有密码登录能力的 census 用户
    CREATE USER CENSUS IDENTIFIED BY '<strong-unique-password>';
    ```
  </Step>

  <Step title="授予事件数据权限">
    为包含事件数据的模式提供只读访问权限：

    ```sql theme={null}
    -- 授予对包含事件数据的模式的只读访问权限
    GRANT SELECT ON analytics.* TO CENSUS;

    -- 如果需要，为其他模式重复此操作
    GRANT SELECT ON events.* TO CENSUS;
    ```

    <Info>
      如果您有多个包含事件数据的模式，请为每个模式重复 `GRANT SELECT` 语句。
    </Info>
  </Step>

  <Step title="连接到 OneSignal">
    在 OneSignal 中，前往 **数据 > 集成**，然后点击 **添加集成**。

    选择 **SingleStore** 并提供以下连接详细信息：

    * **主机：** 您的 SingleStore 集群端点
    * **端口：** 3306（默认）
    * **数据库：** 您的数据库名称
    * **用户名：** `CENSUS`
    * **密码：** 步骤 1 中的密码
  </Step>
</Steps>

***

### 事件数据映射

将您的 {PLATFORM_0} {DATA_TYPE_0} 映射到 OneSignal 的自定义事件格式：

| OneSignal 字段  | {COLUMN_HEADER_0} | 描述                         | 必需 |
| ------------- | ----------------- | -------------------------- | -- |
| `name`        | `event_name`      | 事件标识符                      | 是  |
| `external_id` | `user_id`         | 用户标识符                      | 是  |
| `timestamp`   | `event_timestamp` | 事件发生时间                     | 否  |
| `properties`  | `event_data`      | {PROPERTIES_DESCRIPTION_0} | 否  |

### 事件表模式示例

```sql theme={null}
-- SingleStore 事件表示例
CREATE TABLE analytics.user_events (
    event_id BIGINT AUTO_INCREMENT PRIMARY KEY,
    event_name VARCHAR(100) NOT NULL,
    user_id VARCHAR(255) NOT NULL,
    event_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    event_data JSON,
    session_id VARCHAR(255),
    device_type VARCHAR(50)
);
```

### SQL 查询模式

编写自定义 SQL 查询来转换您的事件数据：

```sql theme={null}
-- 示例：最近的高价值事件
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATE_SUB(NOW(), INTERVAL 7 DAY)
    AND JSON_EXTRACT_STRING(event_data, 'value') > '100'
ORDER BY event_timestamp DESC;
```

***

## 高级网络配置

OneSignal 可以成功连接到使用高级网络控制（包括地区限制和 IP 地址允许列表）的 SingleStore 实例。

有关配置网络访问的更多信息，请联系您的 SingleStore 管理员或 OneSignal 支持。

***

## 限制

* 实时分析查询可能会在高流量时期影响集群性能
* JSON 操作应该针对分布式执行进行优化

***

## 常见问题解答

### 我可以连接到多个 SingleStore 模式吗？

是的，您可以通过为每个包含事件数据的模式运行 `GRANT SELECT` 语句来授予 CENSUS 用户访问多个模式的权限。

### OneSignal 是否支持 SingleStore Cloud？

是的，OneSignal 支持 SingleStoreDB Cloud 和本地 SingleStoreDB v7.1+ 安装。
