>100 Views
January 27, 26
スライド概要
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
第12回 大阪SAS勉強会 DBを用いたSAS処理高速化について For リアルワールドデータ 2026/1/28 Toshiaki Habu C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
経緯 • SASユーザー総会にてデータベース処理の話が人気 – 2025年の内容において相当人気が高かったらしい • データベース研究したいけど何から着手すればよいか分からないという声 – SASで処理したいけど数百ギガのCSVを読み込ませて処理できる? • マシンスペックにもよるが、ノートPCだとディスクやらメモリのエラーログが・・・ • データ抽出処理で1日放置してやっと結果がでる.ただ臨んだ結果ではない場合やり直しが大変・・・ – SASにて大規模データ処理をするには何が必要か分からない. • やり方は色々とあると思いますが、1つの選択肢を提示したいなぁと思い、 発表します. C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
一般論 • Life Science領域においては、RWDの利用はデータ準備フェーズで大規模なデータに対し て条件を変えながら繰り返し抽出・加工を行うことが多い – 抽出した後のデータは、そこまで大きくない. • データの抽出・集計(フィルタ、結合、集計)はSASデータセットよりデータベースのほ うが速い – DB(Oracle / SQL Server / Teradata 等)はセット指向処理(逐次処理ではない)、最適化する エンジンあり、並列処理を持つ – データの成形はSASデータセットも得意 • 統計解析・高度解析(回帰、混合モデル、バリデート済み解析)は SASが有利 – 統計解析用に最適化されている – SQLではそもそも統計手法が限定的 結論:データベースにてデータ抽出後にSASを利用するのが良い(はず) C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
DBへのアクセスについて • SAS製品(SAS Foundation=Base SAS)からDB上のデータへアクセスする際は、SAS環境に導入したDB 接続クライアントソフトウェアを介して接続/アクセスします.よって、事前にSASサーバーへ接続対象 DBに合わせた接続クライアントソフトウェアをインストール、接続設定を行う必要があります. DBサーバー SAS環境(SASサーバー・PC SAS) Access製品 一部抜粋 紹介 ・Oracle ・DB2 ・SQL Server ・Redshift ・Teradata ・Netezza ・MySQL ・・・他 SAS Foundation ①Base SAS + ②Access製品 ③DB接続 クライアントソフトウェア DBインスタン ス • Oracleへアクセスする場合、①Base SAS、②Access Interface to Oracle or ODBCといったSAS製品以外 に、③DB接続クライアントソフトウェアとしてOracle Clientソフトウェア、もしくはOracle ODBCドライ バをSAS環境へインストールし、接続設定を行う必要があります C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
Access製品の仕組みについて 実行処理速度を上げる為のポイント(ボトルネックになりやすい箇所) SAS環境(SASサーバー・PC SAS) DBサーバー ココ SAS Foundation Base SAS + Access製品 ③DB接続クライアントソフト ウェア DBインスタンス ①SASコードを実行 ②Access製品がSQLへ変換す る(Push Down:暗黙的Passthrough) ③DB接続クライアントが DBにSQLを投げる ④SQLに従い処理をし, データをSAS側へ送る ⑥DB側にて処理が出来な かった内容をSASプログラ ムにて実施. C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed . ⑤DBより送られてきた データを受信 ココ
SASのIn-Database処理の種類と対応するDB製品 DBの種類によって出来る処理処理の種類が変わります SAS In-Database Feature Amazon Redshift Google Big Query SAS Visual Analytics In-Database DATA Step Processing BASE SAS Procedures SQL Pass-Through SingleStore Databricks 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 Snowflake Oracle Teradata DB2 Hadoop MySQL PostgreSQL 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 ご参考: https://go.documentation.sas.com/doc/en/pgmsascdc/v_067/indbug/n1lo1d19ercldkn14vm45k13z3so.htm#n0usq0djt8kncln1ozuk 40ktvz4h C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
SASのIn-Database処理の種類と対応するDB製品 DBの種類によって出来る処理処理の種類が変わります SAS In-Database Feature Amazon Redshift Google Big Query SAS Visual Analytics In-Database DATA Step Processing BASE SAS Procedures SQL Pass-Through 〇 〇 SingleStore Databricks 〇 〇 〇 〇 〇 Snowflake Oracle Teradata DB2 Hadoop MySQL PostgreSQL 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 In-Database DATA Step Processingが使えると、DB側 にてData Stepを実施する. 〇 〇 〇 〇 〇 〇 〇 〇 ご参考: https://go.documentation.sas.com/doc/en/pgmsascdc/v_067/indbug/n1lo1d19ercldkn14vm45k13z3so.htm#n0usq0djt8kncln1ozuk 40ktvz4h C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
SAS SpeedyStoreとは • 「SAS Viya」とHigh Performance databaseである「SingleStore」を組み 合わせた統合ソリューション • SingleStoreとは • SingleStore社が提供するクラウドネイティブのデータベースソリューション • 列ストアと行ストアの両方のアーキテクチャ • デフォルトは列ストア • 列ストアでも単一行検索を高速に行う仕組み有 • ノンチューニング • パーティションキーの自動設定 • 指定したキー項目に基づいて、データを別々の物理セクションに分割して格納する機能 • パーティションキーでの絞り込みは検索範囲を限定できるため高速化 • 統計情報の自動取得 C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
行ストアと列ストアについて 行ストア • • • • データ格納方式:1行の全てのカラム値を物理的に連続して格納 特徴:新規データの追加や、特定の1行全体を扱う処理(トランザクション)が高速 用途:オンライン・トランザクション処理(OLTP)、更新やランダムアクセスが多い用途に適している 欠点:多くの行にまたがる特定カラムの集計(=分析用途)では、不要なデータも多く読み込みが発生し、 非効率 列ストア • • • • データ格納方式:カラム(列)ごとにデータが物理的に連続して格納 特徴:同じカラムの値は似ていることが多く圧縮率が高い。また必要な列だけを選択して効率的にアクセ ス・集計できる 用途:分析・集計など多数の行にまたがり一部のカラムのみ扱う処理(OLAP)に最適 欠点:新規データの追加や特定の1行全体のアクセス・更新は苦手なことが多い 特徴 行ストア 列ストア 物理的なデータ格納単位 行単位 列単位 圧縮率 低い 高い クエリ特性 単一行検索が得意 列単位のアクセス・集計に強い 更新処理 高速 更新が多いとパフォーマンス低下 用途 OLTP向け データウェアハウス、分析向け C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
SAS SpeedyStoreの価値 SAS ViyaとSingleStoreの組み合わせでは “より多くの処理をSingle Store内で実行”することが 可能。 ・“SASとデータベース間のデータ転送を最小限に抑える”ことによる「処理の高速化」 ・ SAS側で使用するメモリ・ストレージを削減できることによる「インフラコストの削減」 観点 従来の仕組み (DatastepからDBに対する処理) SAS Viya + Single Store (In-Database DATA Step Processing) データ転送 データベースからSASへ明細データを移動しCAS (SAS)で集計。データ転送の時間がボトルネッ クに。 従来型より多くの処理をデータベースで処理すること で データ移動を最小化 。 SASマシン上のリソース 明細データをSASに転送するためSAS上に大量のメ モリが必要(=高コスト)。 SAS上のメモリにロードするデータ量を削減。インフ ラコストを最適化 。 処理速度 ネットワークの帯域とSASの処理性能に依存。 データベース内で直接処理するため、データ処理に関 わる処理時間を大幅に短縮 。 C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
SASにてデータベース処理を行うために… • SASのライセンス – SAS9 or Viya – (SAS9の場合)Access Interface to XXXX • Viyaにおいては標準機能としてあります. • これによりSASからデータベースにSQLが発行できるようになる. • 無い場合、DBのコンソールからデータ加工処理をする必要がある. • データベース – Redshift/Snowflake/Singlestore等の準備 • データベース処理をするのに無いと・・・ • インフラ – サーバーやらネットワークやら • 通信設定・権限設定も必要 C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
(宣伝)SAS Viya + Speedystore + HMSサービス まるっとSASにお任せ! • HMSサービス – SAS社が行うホスティングサービス – サービスレベル99% – 構築のみならずシステム運用もSAS社のスペシャリストが実施 • Viya + Speedystore – SAS社にて提供が可能 – HMSサービスにて提供が可能 これらを活用することで簡便にリアルワールドデータを構想で扱える環境が作れる (もちろん貴社内で利用しているAWS/Azure等でViya+Speedystoreを導入する事も可能) C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
SAS Speedystore 代表的なアーキテクチャーについて(AWS上の例) Cloudサービス お客様サイト Amazon Elastic Kubernetes Service (Amazon EKS*) ✓ SAS Viya: Speedystore等の機能 ✓ S3 データ保管場所. 必要に応じDB側に自動インポート Internet ✓ DB instance SingleStore データベース CAS SAS Compute(SAS9) 等を実行するスペック Client *Kubernetes内にViya+Singlestoreを入れることで管理面 が楽にできる. Internet DB instance Master Aggregator Child Aggregator Leaf×2 13 C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed . Amazon Simple Storage Service (Amazon S3) 厳格に処理をトレースしたい、というお客様のニーズ があれば、Clinical Accerarationという製品と組み合 わせることで、オーディットを残しつつ処理が出来る.
System architecture sample: SAS Clinical Acceleration and SAS Speedystore Customer HMS or Customer Cloud Amazon Elastic Kubernetes Service (Amazon EKS) Web Real World Data Vendors DB instance for CA Oracle RWD (CSV) Data Transfer (Monthly) Import (Monthly) Amazon S3 Clinical Acceleration (SAS Studio : Job) SAS Speedystore (Singlestore) DB instance for RWD SingleStore Clinical Data Statistician RWD Statistician ✓ SAS Viya: Clinical Acceraration/Speedystore等の機能 ✓ S3:データ保管場所.必要に応じDB側に自動インポート ✓ DB instance: RWD用SingleStore データベース、 OracleはCAのレポジトリ用 * HMS(Hosted Managed Services):SAS のソフトウェアを、SAS社がホスティングして、代わりに運用管理してくれるクラウドサービス.インストール等も実行 14 C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
検証した結果について • 口頭にて共有 C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
Thank you!! C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
大阪SAS勉強会 再掲 SASを用いてデータベース接続処理を実施する際の チューニング方法 2024/10/18 SAS Institute Japan Toshiaki Habu C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
注意事項 • 本プレゼンテーションの内容・発表は、私個人の意見や見解に基づくものであり、必ずし も所属会社の公式な立場や意見を代表するものではありません. • 前回の本勉強会に参加させて頂き、面白そうだからエントリーしてみました. 1SASプログラマーとしての発表になります. C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
はじめに • 皆さんが利用されているSASからデータベース(OracleやらPostgres)を利用してい る方はいらっしゃいますか? • 近年、治験以外のデータを取り扱うケースの問い合わせが増えております.どのように取 り扱うべきか?等を含め、色々とお問い合わせを頂く事がございます. (例:Real World Dataのデータ処理等) • 直ぐには使う事はないかもしれませんが、SASがどのようにデータベースを扱っているか? のアーキテクチャ含め説明させて頂ければと思います. • 目標:SASのDB処理のアーキテクチャを理解し、どのような対応が出来るか把握する C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
DBへのアクセスについて • SAS製品(SAS Foundation=Base SAS)からDB上のデータへアクセスする際は、SAS環境に導 入したDB接続クライアントソフトウェアを介して接続/アクセスします.よって、事前にSASサーバーへ接続 対象DBに合わせた接続クライアントソフトウェアをインストール、接続設定を行う必要があります. DBサーバー SAS環境(SASサーバー・PC SAS) Access製品 一部抜粋 紹介 ・Oracle ・DB2 ・SQL Server ・Redshift ・Teradata ・Netezza ・MySQL ・・・他 SAS Foundation ①Base SAS + ②Access製品 ③DB接続クライアントソフトウェア DBインスタンス • Oracleへアクセスする場合、①Base SAS、②Access Interface to Oracle or ODBCといった SAS製品以外に、③DB接続クライアントソフトウェアとしてOracle Clientソフトウェア、もしくはOracle ODBCドライバをSAS環境へインストールし、接続設定を行う必要があります C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
Access製品の仕組みについて SASのデータステップにおける処理ステップ DBサーバー SAS環境(SASサーバー・PC SAS) SAS Foundation Base SAS + Access製品 ①SASコードを実行 ②Access製品がSQLへ変換する (Push Down:暗黙的Passthrough) ⑥DB側にて処理が出来な かった内容をSASプログラムに て実施. C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed . ③DB接続クライアントソフトウェア DBインスタンス ③DB接続クライアントがDBに SQLを投げる ④SQLに従い処理をし,デー タをSAS側へ送る ⑤DBより送られてきたデータを 受信
Access製品の仕組みについて 実行処理速度を上げる為のポイント(ボトルネックになりやすい箇所) DBサーバー SAS環境(SASサーバー・PC SAS) ココ SAS Foundation Base SAS + Access製品 ①SASコードを実行 ②Access製品がSQLへ変換する (Push Down:暗黙的Passthrough) ⑥DB側にて処理が出来な かった内容をSASプログラムに て実施. C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed . ③DB接続クライアントソフトウェア DBインスタンス ③DB接続クライアントがDBに SQLを投げる ④SQLに従い処理をし,デー タをSAS側へ送る ⑤DBより送られてきたデータを 受信 ココ
Access製品の仕組みについて 実行処理速度を上げる為のポイント(ボトルネックになりやすい箇所) DBサーバー SAS環境(SASサーバー・PC SAS) ココ SAS Foundation Base SAS + Access製品 ③DB接続クライアントソフトウェア DBインスタンス SAS環境とのデータのやり取りを減らすこと大事. ① Passing Function(SASの機能をDB側にて実行できる変数)を使う. 公開されているマニュアルに例示あり SAS Help Center: Passing SAS Functions to Oracle ①DB側にて処理をしたいSQLを書けるのであれば、execute(明示的Pass-through)の機能を利用する. ②発行しているSQLを確認し、より最適な処理が実行できないか検討する options sastrace=',,,d' sastraceloc=saslog nostsuffix msglevel=i; C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
Passing Function • SASのプログラミングマニュアルにてData Accessの部分に記載あり SAS® 9.4 and SAS® Viya® 3.5 Programming Documentation https://go.documentation.sas.com/doc/jp/pgmsascdc/9.4_3.5/pgmsaswlcm/home.htm C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .
SQL Procedure: execute • 例文: SASのAccess製品は、SASのデータステップをSQLへ変 換していますが、このプロシジャを利用するとそのままDB側 へSubmitすることが可能です. Proc sql; Execute( DB側で処理をしたいSQL ) Quit; SAS® 9.4 and SAS® Viya® 3.5 Programming Documentation https://go.documentation.sas.com/doc/en/pgmsascdc/9.4 _3.5/sqlproc/n0tpd3yaqvep53n1g8wahav3hgco.htm C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed . DBにSubmitをしたい最適なSQLが解る方は、こちらの 方法にて実行する事により、より高速に処理が出来る可 能性があります.
SASTRACE= SAS System Option • 例文: options sastrace=',,,d' sastraceloc=saslog nostsuffix; 本Optionをつける事で、Data StepにてDBに SubmitしたSQLがログファイルに出力されます. libname mydblib oracle user=myusr1 password=mypwd1 schema=bday_data; data mydblib.snow_birthdays; set work.winter_birthdays; run; libname mydblib clear; SAS® 9.4 and SAS® Viya® 3.5 Programming Documentation https://go.documentation.sas.com/doc/en/pgmsascdc/9.4 _3.5/acreldb/n0732u1mr57ycrn1urf24gzo38sc.htm C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed . 発行しているSQLにて無駄な処理が無いか?を確 認する為に利用できます.
Thank you!! 貴社環境に適した高速化を検討したい場合、SASのコンサルティングサービス (有償支援)を活用する事も可能です. 私のような小童ではなく、ガチ勢が多くいますので、必要に応じご検討ください. C o py r i gh t © S AS In s t i t u t e In c . A l l ri gh t s res er v ed .