Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~

284 views

Published on

[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~

https://satonaoki.wordpress.com/2018/06/14/webinar-build-2018-updates-data-iot/

ライブ - https://info.microsoft.com/JA-AZUREPLAT-WBNR-FY18-06Jun-14-AzureDataTechnology-MCW0005488_01Registration-ForminBody.html

オンデマンド - https://info.microsoft.com/JA-AZUREPLAT-WBNR-FY18-06Jun-14-AzureDataTechnology-MCW0005488_02OnDemandRegistration-ForminBody.html

Published in: Software
  • Be the first to comment

[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~

  1. 1. Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
  2. 2. Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
  3. 3. https://www.microsoft.com/ja-jp/events/decode/2018/online/default.aspx
  4. 4. Azure Cosmos DB Azure SQL Database Azure Database for MySQL / PostgreSQL SQL Data Warehouse Azure Databricks IoT Azure IoT Suite Microsoft IoT Cetnral IoT エッジ Microsoft Azure Sphere de:code 2018 Online - セッション資料/動画
  5. 5. http://aka.ms/ weeklyazure
  6. 6. 本セッションで紹介する Azure サービス
  7. 7. Azure Cosmos DB
  8. 8. Azure Cosmos DB SQL MongoDB Table API ターンキー グローバル分散 ストレージ、スループットの エラスティック スケール アウト 99 パーセンタイルでの 低レイテンシ保証 包括的な SLA 5 つの明確に定義された 整合性モデル ドキュメント列ファミリ キー/値 グラフ
  9. 9. 要求ユニット (RU) GET POST PUT Query … = = = =
  10. 10. 要求ユニット (RU) 最小 RU/秒 最大 RU/秒 入力リクエスト レプリカが 休止状態 レート制限 レート制限なし
  11. 11. New 一連のコンテナーに対するRU/秒のプロビジョニング コンテナー レベルで スループットを プロビジョニング データベース レベルで スループットを プロビジョニング テナント テーブル コンテナー グラフ コンテナー データベース内の 一連のコンテナー リソース パーティション リソース パーティション データベース レベルでのスループットのプロビジョニング
  12. 12. ストレージとスループットのエラスティックなスケール アウト
  13. 13. New Bulk Executor Library
  14. 14. ターンキー グローバル分散
  15. 15. New グローバル スケールのマルチ マスター (プレビュー)
  16. 16. New 仮想ネットワーク サービス エンドポイント
  17. 17. Azure SQL Database
  18. 18. Azure のデータベースサービス オンプレ RDBMS 連動型 ETL PaaS RDB IaaS + PaaS NoSQL https://azure.microsoft.com/ja-jp/product-categories/databases/
  19. 19. SQL Server ファミリーのポートフォリオ オンプレミス 共有 低コスト 専有 高コスト 管理工数高 管理工数低 クラウド
  20. 20. フルマネージドの SQL Server データベース SQL Server OS Azure が管理 利用者が管理 VM上の SQL Server ホスト OS 仮想化 フルコントロール データベース SQL Server OS 仮想化 ホスト OS 容易な管理 Azure SQL Database
  21. 21. SQL Server と SQL Database エンジンの比較 項目 SQL Server SQL Database 冗長構成 SQL Server の高可用性機能 を使用し個別に構成 既定で DC 内の3重化構成 (SLA:99.99 %) Geo レプリケーションでリージョ ン間の冗長構成が可能 Premium / Business Critical では、ゾーン冗長 / 読み取りスケールを利用可能 トランザクション 分離レベル ロック方式 (Read Committed) が既定、行バー ジョン管理方式への変更可能 行バージョン管理方式 (RCSI または、SNAPSHOT) が既定
  22. 22. データベースの継続性 自動バックアップ ポイントタイム復元 エクスポート エクスポート時点 への復元 BLOB ストレージ Bacpac ファイル Azure SQL Database プライマリー レプリカ セカンダリ レプリカ セカンダリ レプリカ アプリケーション からの読み取り と書き込み データセンター内 (三重化) https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-read-scale-out
  23. 23. コントロールリング 冗長構成について(Basic/Standard/汎用)
  24. 24. コントロールリング 冗長構成について(Premium/Business Critical) テナントリング
  25. 25. アクティブ geo レプリケーション Azure SQL Database プライマリー レプリカ セカンダリ レプリカ アプリケーション からの読み取り と書き込み https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-read-scale-out 東日本リージョン セカンダリ レプリカ 西日本リージョン セカンダリ レプリカ 東アジアリージョン セカンダリ レプリカ 西ヨーロッパリージョン
  26. 26. 自動フェールオーバーグループ (プレビュー) フェールオーバー グループリージョン1 リージョン2 プライマリ セカンダリ (Read Only) Azure SQL サーバー (論理サーバー) Azure SQL サーバー (論理サーバー) 2 種類の CNAME レコード • 読み取り/書き込みリスナー:<グループ名>.database.windows.net • 読み取りリスナー:<グループ名>.secondary.database.windows.net https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-geo-replication-overview
  27. 27. おさらい:Database Transaction Unit (DTU) とは 参考:データベース トランザクション ユニット (DTU) とエラスティック データベース トランザクション ユニット (eDTU) の説明 https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-what-is-a-dtu DTU 使用率
  28. 28. vCore モデル(プレビュー) DTU モデル vCore モデル https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-service-tiers-vcore
  29. 29. vCore モデル別の違い モデル SLA 説明 汎用 99.99 % ほとんどのビジネスワークロードに最適でバランスのとれたオプション Azure Premium Storage ページ BLOB を使用 Business Critical IO要件の高いビジネスアプリケーション 分離された複数のレプリカを使用した最高の耐障害性 ローカルSSDストレージを使用 SQL Server の Azure ハイブリッド特典を使用することで ライセンスコストを減らすことも可能 Premium ≒ Business Critical
  30. 30. SQL Database Managed Instance (プレビュー) https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-managed-instance
  31. 31. SQL Server ファミリーのポートフォリオ オンプレミス 共有 低コスト 専有 高コスト 管理工数高 管理工数低 クラウド
  32. 32. 長期的なバックアップ保有期間 (プレビュー) https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-long-term-retention
  33. 33. コントロールリング おさらい: 冗長構成について テナントリング
  34. 34. ゾーン冗長の構成(プレビュー) コントロールリング テナントリング
  35. 35. セキュリティ関連機能一覧 Security Management Threat Protection Information Protection
  36. 36. Virtual Network サービス エンドポイント
  37. 37. セキュリティ関連機能一覧 Security Management Threat Protection Information Protection
  38. 38. 検出、分類、ラベル付け & 保護 データの検出と分類 (プレビュー) https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-data-discovery-and-classification ポータルから設定状況 を確認可能 推奨事項の確認/設定と 手動設定が可能
  39. 39. SQL 脆弱性評価 https://docs.microsoft.com/ja-jp/sql/relational-databases/security/sql-vulnerability-assessment?view=sql-server-
  40. 40. 透過的なデータ暗号化 (TDE) 暗号化されると 錠前付きに bacpac ファイル / bcp コマンド によるエクスポート時には暗号化 されていないことに注意
  41. 41. Azure Key Vault 透過的データ暗号化(BYOK) https://docs.microsoft.com/ja-jp/sql/relational-databases/security/encryption/transparent-data-encryption-byok-azure-sql?view=azuresqldb-current
  42. 42. • Azure Security Center 監査と脅威の検出 https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-threat-detection
  43. 43. 脅威検出の種類と方法 アラートを知らせる メール
  44. 44. SQL Advanced Threat Protection (ATP)
  45. 45. Azure Database Migration Service (DMS) DMS SQL Server 2005 - 2017 SQL Assessment tools SSMA & DMA SQL Database Managed Instance
  46. 46. 移行元データベースの評価 https://blogs.msdn.microsoft.com/dataplatjp/2018/05/22/azure-database-migration-service-01/
  47. 47. スキーマの移行
  48. 48. 移行プロジェクトの作成
  49. 49. データの移行
  50. 50. SQL Database の管理ツール SQL Server Management Studio • 以前からあるツール • Windows 版のみ • 最新版は17.6 • SQL Server インストール 媒体と別に配布 Visual Studio Code プラグイン (vscode-mssql) • マルチプラットフォーム対応 • OSS • マーケットプレイスから インストール可能 SQL Operations Studio (プレビュー) • マルチプラットフォーム対応 • OSS https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql https://docs.microsoft.com/en-us/sql/sql-operations-studio/download
  51. 51. SQL Operations Studio
  52. 52. Azure Database for MySQL/PostgreSQL
  53. 53. Azure Database for MySQL / PostgreSQL Overview MySQL Community 版 / PostgreSQL 組み込み高可用性 秒単位のスケールアウト お好みの言語 お好みのフレームワーク MySQL : 5.6 , 5.7 PostgreSQL : 9.5 , 9.6 MySQL : 8.0 ( coming soon ) PostgreSQL : 10 (6月) 1台で SLA 99.99 % InnoDB MyISAM
  54. 54. Azure Database for MySQL / PostgreSQL Overview 標準でデータは暗号化 Protect data Control access SSL接続 ファイアウォール Identity MySQL / PostgreSQL ネイティブ認証
  55. 55. 高可用性 / スケールアップ Postgres:5432 Master Slave Slave Slave Azure Storage <hostname>.postgres.database.azure.com Master
  56. 56. バックアップ / リストア バックアップ / リストア 標準で実装済み Point in Time RestoreLRS or GRS ローカルリージョン ペアリージョン 選択可能 完全バックアップ 1 回 / 1week 差分バックアップ 2 回 / 1day トランザクションログ 1 回 / 5min 標準 7 days MAX 35 days
  57. 57. リソース確認 / 監視 Azure Portal から簡単にリソース利用状況を確認 / 監視が可能 リソース状況確認 アラート生成 CPU percent IO percent Memory percent …etc メール送信 Webhook
  58. 58. • Private Preview Scenarios to GA • OSS Databases – MySQL and PostgreSQL Azure Database Migration Service (Azure DMS) A seamless, end-to-end solution for moving on-premises SQL Server, Oracle, and other relational databases to the cloud
  59. 59. 負荷分散 ( MySQL ) Replica WriteRead Read
  60. 60. データ イン レプリケーション (MySQL)
  61. 61. 仮想ネットワーク サービス エンドポイント
  62. 62. Azure SQL Data Warehouse
  63. 63. ペタバイトクラスのスケールアウト型クラウドデータウェアハウス • 超並列処理 (MPP) アーキテクチャ • エラスティックなスケーラビリティ • SQL Server と同等の使い勝手 • 優れた性能/
  64. 64. コントロール ノード コンピュート ノード Azure Storage コントロールノード ユーザーからの接続 コンピュートとストレージの調整 コンピュートノード クエリ実行 スケールアウト / イン可能 不要なときは停止可能 リモートストレージ データベース保存 60 分散(ディストリビューション) コンピュート ノード コンピュート ノード コンピュート ノード
  65. 65. クエリ性能のパワーを表す指標 DWH において最も重要な以下の 3 要素を数値化 • 行のスキャン性能 • ロード性能 • ノード間のコピー性能 スキャン性能 3.36M row/sec ロード性能 130K row/sec ノード間のコピー性能 350K row/sec DW100 あたりの参考性能 ※参考の数値となります DW100 = 1 コンピュートノード
  66. 66. コントロールノード コンピュートノード リモート ストレージ D51 D52 D53 D60 … D41 D42 D43 D50 … D31 D32 D33 D40… D21 D22 D23 D30 … D11 D12 D13 D20 … D1 D2 D3 D10 …
  67. 67. コントロールノード コンピュートノード リモート ストレージ D51 D52 D53 D60 … D41 D42 D43 D50 … D31 D32 D33 D40… D21 D22 D23 D30 … D11 D12 D13 D20 … D1 D2 D3 D10 …
  68. 68. コントロールノード コンピュートノード リモート ストレージ D51 D52 D53 D60 … D41 D42 D43 D50 … D31 D32 D33 D40… D21 D22 D23 D30 … D11 D12 D13 D20 … D1 D2 D3 D10 … クエリ
  69. 69. コントロールノード コンピュートノード リモート ストレージ D51 D52 D53 D60 … D41 D42 D43 D50 … D31 D32 D33 D40… D21 D22 D23 D30 … D11 D12 D13 D20 … D1 D2 D3 D10 … 結果
  70. 70. D51 D52 D53 D60 … D41 D42 D43 D50… D31 D32 D33 D40 … D21 D22 D23 D30 … D11 D12 D13 D20 … D1 D2 D3 D10 …
  71. 71. • 2018/5/1 に GA した新アーキテクチャ 計算ノードリソースの大幅な強化 リモートストレージとキャッシュレイヤ (NVMe SSD) の組み合わせでデータを保持 同時実行クエリ数が 32→128 に カラムストアの容量が無制限に ※ 従来の Optimized for Elasticity は Compute Optimized Gen1 に
  72. 72. コントロールノード コンピュートノード リモート ストレージ D51 D52 D53 D60 … D41 D42 D43 D50 … D31 D32 D33 D40… D21 D22 D23 D30 … D11 D12 D13 D20 … D1 D2 D3 D10 … LRU2 アルゴリズムにより 頻度の高いデータを キャッシュ化 キャッシュ
  73. 73. • キャッシュアクセス:~ 数10μs リモートディスクへのアクセスを避けることにより、 データアクセス時間を大幅に短縮
  74. 74. パフォーマンスレベル コンピュートノード コンピュートノード当たりの ディストリビューション DW あたりの メモリ (GB) Gen1 同数コンピュートノードの 場合のメモリ (GB) DW1000c 2 30 600 48 (DW200) DW1500c 3 20 900 72 (DW300) DW2000c 4 15 1200 96 (DW400) DW2500c 5 12 1500 120 (DW500) DW3000c 6 10 1800 144 (DW600) DW5000c 10 6 3000 240 (DW1000) DW6000c 12 5 3600 288 (DW1200) DW7500c 15 4 4500 360 (DW1500) DW10000c 20 3 6000 480 (DW2000) DW15000c 30 2 9000 720 (DW3000) DW30000c 60 1 18000 1440 (DW6000)
  75. 75. • 32 を超える同時実行クエリを行うときには静的リソースクラスを使用 • Gen1→Gen2 はアップグレードできますが、逆は不可
  76. 76. ラウンドロビン分散 ハッシュ分散 レプリケート 全てのディストリビューション に均等にランダムに分散 指定した列のハッシュ値に 基づいて分散 テーブルを各コンピューティング ノードの最初のディストリビュー ションに複製 DISTRIBUTION= ROUND_ROBIN DISTRIBUTION= HASH(Key) DISTRIBUTION= REPLICATED 2018/4/26 に GA
  77. 77. データ移動が発生しないため 高パフォーマンスを期待できる 利用を検討すると良いケース ハッシュ 分散
  78. 78. 再構成が必要な時 再構成のタイミング • 簡単な SQL で再構成を行う SELECT TOP 1 * FROM <表名>; 再構成の動作 • 再構成中は ExclusiveUpdate ロックがテーブルに適用される
  79. 79. DWH 処理においてボトルネックとなる要素を解消
  80. 80. Azure Databricks
  81. 81. Bigdata システムの課題 バッチ処理 ⇒ 限られた 時間で大量データを 処理したい リアルタイム分析 ⇒ データ の生成から遅延時間を 最小限にして分析したい 蓄積された大量データを活用した アドバンストアナリティクスを実施したい POS システム、EC サイト、IoT データ分析、CDR 分析、コールセンターデータ、・・・
  82. 82. Bigdata プラットフォームの要件
  83. 83. Apache Spark というソリューション © Databricks 2018 SQL Query Data Frame Unresolved Logical Plan Logical Plan Optimized Logical Plan Selected Physical Plan RDDsPhysical Plans CostModel Catalog Analysis Logical Optimization Physical Planning Code Generation Catalyst 分散処理 オプティマイザー インメモリ処理
  84. 84. Azure Databricks システムの要件をクリアする ソリューション 並列分散処理を可能にする オープンソース分析エンジン Apache Spark の PaaS ソリューション
  85. 85. 構造化データ Azure Databricks で実現できること バッチ分析 ⇒ 限られた時間で大量データを処理をしたい 分析アプリ ダッシュボード ログ、メディア r センサーデータ CDR、POSデータど データ加工集計非構造化データ 基幹業務 DWH システム オンラインデータ
  86. 86. Azure Databricks で実現できること リアルタイム分析 ⇒ データの生成から遅延時間を最小限にした分析をしたい 加工・集計データ ライブストリームデータ ストリーム処理 センサーデータ CDR、POS データなど 分析アプリ ダッシュボード データリポジトリ
  87. 87. Azure Databricks で実現できること 蓄積された大量データを活用したアドバンストアナリティクスを実施したい データコレクター ストリームデータ センサーデータ CDR、POS など データリポジトリ 基幹業務 オンラインデータ アドバンスト アナリティクス 分析アプリ ダッシュボード
  88. 88. Databricks とは
  89. 89. Azure Databricks
  90. 90. Databricks Notebook ジョブ スケジュール グラフ種別 スクリプト 記述部分 実行結果 詳細表示
  91. 91. • Azure Databricks は Azure の 1st パーティーサービス • Azure の各種サービスとの統合 • AAD 統合 なぜ Azure Databricks なのか Microsoft Azure
  92. 92. Azure Databricks は Azure の 1st パーティーサービス Azure の多様なビッグデータソリューション Azure Data Lake Analytics Azure Data Lake Store Azure Storage Any Hadoop technology, any distribution Workload optimized, managed clusters Data Engineering in a Job-as-a-service model Azure Marketplace HDP | CDH | MapR Azure Data Lake Analytics IaaS Clusters Managed Clusters Big Data as-a-Service Azure HDInsight Frictionless & Optimized Spark clusters Azure Databricks BIGDATA STORAGE BIGDATA ANALYTICS ReducedAdministration CONTROL EASE OF USE 1st パーティーサービス
  93. 93. Azure Databricks は Azure の 1st パーティーサービス Azure の他のサービスとの比較 HDInsight with Spark Azure Databricks Azure Data Lake Analytics マネージドサービス Yes Yes Yes オートスケール No Yes Yes スケール時停止不要 No Yes Yes 開発言語 Python, Scala, Java, R, SQL Python, Scala, Java, R, SQL C#/U-SQL スケールアウト 単位 クラスター クラスター ジョブ単位 数分以内の スケールアウト No Yes Yes インメモリ 処理 Yes Yes No
  94. 94. Azure の各種サービスとの統合 Azure ストレージサービスへのダイレクトデータアクセス Azure ストレージサービスを Databricks に直接マウントして集約された データを処理 IoT デバイスやメディアなどの非構造化データ、オンプレミスの構造化データを Azure ストレージサービ スに集約 Blob Storage 基幹系アプリ (構造化データ) r センサーデータ (非構造化データ) ログ/ファイル/メディア (非構造化データ) Azure Databricks Data Lake Store Data Factory IoT Hub Stream Analytics
  95. 95. Azure の各種サービスとの統合 Azure ストレージアカウントのアクセス(DBFS としてマウント) 指定項目 このサンプルでの値 コンテナ名 democontainer00 ストレージアカウント名 testadflabstaging マウントポイント /mnt/demofolder00
  96. 96. Azure の各種サービスとの統合 Azure PaaS サービスへのダイレクトアクセス Azure Databricks で加工された構造化データを Azure Data Warehouse へロード(Polybase データロードをサポート) Blob Storage Azure Databricks Data Lake Store SQL Data Warehouse Azure Machine Learning Azure Analysis Services
  97. 97. Azure の各種サービスとの統合 指定項目 このサンプルでの値 SQLDW サーバー名 adventureworks098 指定項目 このサンプルでの値 ステージングコンテナ stagingcontainer
  98. 98. Azure の各種サービスとの統合 Data Factory Azure Databricks Blob Storage Cosmos DB SQL Database SQL Data Warehouse Data Lake Store Power BI Cosmos DB Connector JDBC connection DBFS mount DBFS mount Event Hubs Connector SQL DB Connector SQL DW Connector Event Hubs Kafka Streaming Data Factory Activity Kafka on HDInsight
  99. 99. AAD 統合 クラスター ワークスペース ジョブ フォルダー ノートブック テーブル
  100. 100. Azure Databricks で実現できること リアルタイム分析 ⇒ データの生成から遅延時間を最小限にした分析をしたい 加工・集計データ ストリームデータ ストリーム処理 センサーデータ CDR、POS データなど 分析アプリ ダッシュボード データリポジトリ 再掲
  101. 101. Structured Streaming ライブストリームデータ インプットテーブル クエリ― アウトプットテーブル 外部データストア センサーデータのリアルタイムな分析 金融市場の変化をリアルタイムに追跡 モバイル端末データのリアルタイムな可視化 POS端末データのリアルタイム分析と需要予測
  102. 102. kafka の サブスクライブ設定例
  103. 103. Azure Databricks で実現できること 蓄積された大量データを活用したアドバンストアナリティクスを実施したい データコレクター ストリームデータ センサーデータ CDR、POS など データリポジトリ 基幹業務 オンラインデータ アドバンスト アナリティクス 分析アプリ ダッシュボード 再掲
  104. 104. 様々な機械学習応用シーンに活用
  105. 105. • Spark MLlib プリインストール済 • DataFrame ベースの API サポート • Tungsten や Catalyst による最適化 • 言語・ML アルゴリズムをとおして 統一された API を提供 • ML pipeline サポート • 複数の ML 処理を一つのパイプラインとして記述 • MMLSpark • マシンラーニング・モデルの構築に必要なデータ操作を効率化 • Cognitive Toolkit, TensorFlowOnSpark, BigDL などのライブラリ/フ レームワークを用いたディープラーニングモデル開発 Spark Machine Learning
  106. 106. ディープラーニングモデル開発 Deep Learning Pipelines for Apache Spark • Python ベースの ハイレベル API でディープ ラーニングを簡潔に記述 • Spark Cluster を利用した大規模スコアリン グ(Batch/Streaming) • イメージデータのための転移学習、 ハイパーパラメタチューニングの支援 • ImageNet の学習済モデルを利用可能 Spark クラスタ上でハイパーパラメタチューニング 転移学習への応用
  107. 107. 本セッションで紹介する Azure サービス
  108. 108. “IoT” とは?
  109. 109. Microsoft Azure IoT Reference Architecture
  110. 110. Microsoft Azure IoT Reference Architecture
  111. 111. Azure IoT Central
  112. 112. IoT の SaaS と PaaS PaaS SaaS SaaS – Microsoft IoT Central PaaS – IoT Solution Accelerators
  113. 113. IoT Solution Accelerators
  114. 114. PaaS, コンテナ, OSS Microservices VM Devices Cosmos DB Web App IoT Hub C# simulator Active Directory
  115. 115. www.azureiotsolutions.com
  116. 116. Azure IoT Hub
  117. 117. IoT Hub は傾聴のスペシャリスト
  118. 118. IoT Hub は傾聴のスペシャリスト
  119. 119. Azure IoT Edge
  120. 120. エッジサイドで IoT
  121. 121. IoT Edge 機能強化について
  122. 122. Azure Sphere
  123. 123. https://www.microsoft.com/ja-jp/events/decode/2018/online/default.aspx
  124. 124. Azure Cosmos DB Azure SQL Database Azure Database for MySQL / PostgreSQL SQL Data Warehouse Azure Databricks IoT Azure IoT Suite Microsoft IoT Cetnral IoT エッジ Microsoft Azure Sphere de:code 2018 Online - セッション資料/動画
  125. 125. http://aka.ms/ weeklyazure
  126. 126. © 2018 Microsoft Corporation. All rights reserved. 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

×