อนาคตของ kdb+?
(timestored.com)- ในภาคการเงิน kdb+ เคยเป็นเครื่องมือทรงพลังสำหรับ การวิเคราะห์ข้อมูลตลาดย้อนหลัง และการคำนวณแบบเรียลไทม์ แต่ตอนนี้มีเทคโนโลยีทดแทนที่สุกงอมเพียงพอเกิดขึ้นในแต่ละกรณีการใช้งานแล้ว
- ผู้ใช้จำนวนมากไม่ได้ต้องการความเร็วสูงสุดของ kdb+ และแพลตฟอร์มภายในของธนาคารก็ไม่สามารถดึงประสิทธิภาพนั้นออกมาได้เต็มที่ ทำให้ ความได้เปรียบด้านความเร็ว มีความชี้ขาดน้อยลง
- การวิเคราะห์ควอนต์บนเครื่องโลคัลถูกขับเคลื่อนโดย ecosystem ของ Python แทบทั้งหมด และ เครื่องมือคอมมูนิตี้ฟรี อย่าง DuckDB และ Polars ก็ได้เปรียบกว่าในแง่การเรียนรู้และการย้ายงาน
- การสตรีมแบบเรียลไทม์และการประมวลผลแบบกระจายยังเป็นจุดแข็งของ kdb+ แต่ความยากในการติดตั้งใช้งานและ mindshare ของ Kafka·Flink·RisingWave ที่แพร่หลายขึ้นทำให้ขยายตัวได้ยาก
- หาก kdb+ จะอยู่รอดในระยะยาว ก็จำเป็นต้องมีช่องทางใช้งานฟรี การโฟกัสที่ผลิตภัณฑ์หลัก การลดความชันของการเรียนรู้ และความเป็นมวลชนที่พอจะขยายออกนอกภาคการเงินได้
บทบาทที่ kdb+ รับผิดชอบมาในภาคการเงิน
- kdb+ ถูกใช้งานในหลายระบบและงานวิเคราะห์ของภาคการเงิน
- การจัดเก็บและวิเคราะห์ข้อมูลตลาดย้อนหลัง: ตัวอย่างเช่น MS Horizon, Citi CloudKDB, UBS Krypton
- การวิเคราะห์ควอนต์บนเครื่องโลคัล: การวิเคราะห์สภาพคล่อง, การวิเคราะห์ PnL, การวิเคราะห์ความสามารถทำกำไรแยกตามลูกค้า
- เอนจินคำนวณสตรีมมิงแบบเรียลไทม์: Streaming VWAP, Streaming TCA
- การประมวลผลแบบกระจาย: งานอย่างการคำนวณมาร์จินพอร์ตหุ้นและการวิเคราะห์ความเสี่ยง ที่ต้องแบ่งข้อมูลไปคำนวณแล้วรวมกลับมา
ข้อมูลตลาดย้อนหลัง: ลูกค้าเดิมยังอยู่ แต่การขยายลูกค้าใหม่ทำได้ยาก
- ผู้ใช้จำนวนมากต้องการคิวรีข้อมูลขนาดใหญ่เพื่อสร้าง minute bar ทำ asof join หรือทำ การวิเคราะห์อนุกรมเวลา ที่ซับซ้อนยิ่งขึ้น
- ตัวเลือกคู่แข่งขยายกว้างไปถึงฐานข้อมูลใหม่อย่าง ClickHouse และ QuestDB, ผู้ให้บริการคลาวด์อย่าง BigQuery และ Redshift, รวมถึง Market Data as a Service
- มี 3 เหตุผลที่ทำให้ความได้เปรียบด้านความเร็วของ kdb+ ไม่ได้ชี้ขาดเหมือนเมื่อก่อน
- ผู้ใช้ส่วนใหญ่ไม่ได้ต้องการ “ความเร็ว” ระดับของ kdb+
- แพลตฟอร์มภายในของธนาคารส่วนใหญ่ไม่สามารถดึงความเร็วของ kdb+ ออกมาได้เต็มที่
- ผลิตภัณฑ์คู่แข่งตอนนี้เร็วพอแล้ว
- ClickBench benchmark ถูกยกเป็นตัวอย่างของ benchmark ที่เปิดเผยอย่างโปร่งใส
- kdb+ อาจรักษา ลูกค้าเดิม ไว้ได้ แต่บริษัทระดับ tier 2 ต้องการทางเลือกแบบ cloud-native หรือทางเลือกอื่น ๆ มากกว่า จึงไม่ง่ายที่จะได้ลูกค้าใหม่
- ลูกค้าหลักเดิมต้องลงทุนสูงมากเพื่อสร้างแพลตฟอร์มของตนเอง และแพลตฟอร์ม kdb cloud เองก็ยังมีส่วนที่ต้องขัดเกลาอีก
การวิเคราะห์ควอนต์บนเครื่องโลคัล: ecosystem ของ Python เหนือกว่า
- ทางเลือกสำหรับการวิเคราะห์ควอนต์บนเครื่องโลคัล ส่วนใหญ่จัดอยู่ในแนวทาง ยึด Python เป็นศูนย์กลาง
- Python + DuckDB
- Python + Polars
- Python + PyKX
- Python + dataframe, Modin เป็นต้น
- ในพื้นที่นี้ Python ชนะไปแล้ว และคำถามที่เหลือใกล้เคียงกับว่าใครจะเป็นผู้ให้เครื่องมือเสริมด้านความเร็วที่ดีกว่า
- เหตุผลที่ DuckDB และ Polars มีโอกาสสูงคือความเป็น ฟรี
- ผู้ใช้ที่เริ่มตั้งแต่มหาวิทยาลัยมักเรียนด้วยเครื่องมือฟรี และมีโอกาสสูงที่จะไม่เปลี่ยนในภายหลัง
- ควอนต์ที่ทำงานอยู่ในบริษัทก็ชอบเครื่องมือฟรีที่สามารถใช้วิเคราะห์ลักษณะเดียวกันต่อได้ในงานถัดไป
- หากพึ่งพา kdb+ อย่างเดียว เมื่อย้ายไปบริษัทที่ไม่มี kdb+ ก็อาจสูญเสียทักษะส่วนใหญ่ของตนไป
- kdb+ เป็นผลิตภัณฑ์เฉพาะทางที่ยังไม่สามารถขยายออกนอกวงการการเงินได้มาก มีต้นทุนเริ่มต้นสูง และมีจุดอ่อนเรื่องไวยากรณ์ที่ไม่คุ้นเคย
การสตรีมแบบเรียลไทม์และการประมวลผลแบบกระจาย: มีจุดแข็ง แต่ผู้ชนะยังไม่แน่ชัด
- การสตรีมแบบเรียลไทม์และการประมวลผลแบบกระจายเป็นกรณีใช้งานที่ได้รับความนิยมน้อยกว่าของ kdb+ มาโดยตลอด และก็ไม่ใช่เหตุผลหลักที่ทำให้ปิดสัญญาได้
- ความสามารถในการผสาน ข้อมูลเรียลไทม์และข้อมูลย้อนหลัง เข้าด้วยกันในโมเดลเดียว ถูกมองว่าเป็นจุดแข็งที่สุดของ kdb+
- ในการติดตั้งใช้งานจริง บางครั้งต้องอาศัยคนที่เชี่ยวชาญมาก ไม่เช่นนั้นระบบอาจเละเทะได้
- กรณีล้มเหลวแบบนี้ยังส่งผลลบต่อการที่หน่วยงานอื่นในบริษัทจะนำ kdb+ ไปใช้ในวัตถุประสงค์อื่นด้วย
- ผู้ชนะสุดท้ายของพื้นที่นี้ยังไม่ชัดเจน แต่โอกาสที่จะเป็น kdb+ ดูค่อนข้างต่ำ
- Kafka มีการติดตั้งใช้งานขนาดใหญ่และ mindshare ไปแล้ว และเทคโนโลยีอย่าง Flink กับ RisingWave ก็กำลังมาแรง
โอเพนซอร์สและการทำให้เป็นมาตรฐานกำลังดูดซับข้อดีของ kdb+
- kdb+ เป็นเทคโนโลยีที่ยอดเยี่ยม แต่ในขณะที่มันยังยอดเยี่ยมอยู่ในระดับใกล้เคียงกับเมื่อ 15 ปีก่อน ecosystem รอบข้างกลับเปลี่ยนไปอย่างรวดเร็ว
- บริษัทโอเพนซอร์สที่ดีหลายแห่งได้นำแนวคิดแกนหลักของ kdb+ ไปใช้
- Parquet/Iceberg คล้ายกับฟอร์แมตดิสก์ของ kdb+ สำหรับการจัดเก็บแบบคอลัมน์ที่ปรับแต่งมาอย่างดี
- ฟอร์แมต in-memory ของ Apache Arrow คล้ายกับฟอร์แมตคอลัมน์ in-memory ของ kdb+
- แนวคิด log/replay/ksql ของ Kafka หากมองจากบางมุม ก็คล้ายกับ tplog
- QuestDB, DuckDB, ClickHouse ล้วนรองรับ asof join
- คู่แข่งไม่ได้เพียงเรียนรู้ข้อดีของ kdb+ แต่ยังทำให้มันกลายเป็นมาตรฐานด้วย
- Snowflake, Dremio, Confluent, Databricks ต่างรองรับ Apache Iceberg และ Parquet แล้ว
- QuestDB, DuckDB, Python ต่างรองรับ Parquet แบบเนทีฟแล้ว
- เมื่อข้อมูลอยู่ในรูป Parquet เครื่องมือหลายตัวก็สามารถทำงานกับข้อมูลชุดเดียวกันได้
- โครงสร้างการเปรียบเทียบจึงไม่ใช่ KX ปะทะคู่แข่งรายเดียวอีกต่อไป แต่เป็น KX ปะทะคู่แข่งหลายรายทั้งชุด
สิ่งที่ KX ต้องเปลี่ยน
- มีการประเมินว่า KX กำลังเปลี่ยนแปลงอยู่ แต่ยังไม่เร็วพอ
- การเปลี่ยนแปลงที่จำเป็นสรุปได้เป็น 4 ข้อ
- ต้องมี เวอร์ชันฟรี ที่ใช้ได้หลายวัตถุประสงค์ และจัดทำไลเซนส์ที่สมเหตุสมผลเพื่อให้ลูกค้าที่มีงบจำกัดก็ใช้งานได้ง่าย
- ต้องโฟกัสกับการทำให้ผลิตภัณฑ์หลักยอดเยี่ยม
- MongoDB และ InfluxDB เป็นกรณีเปรียบเทียบว่าฐานข้อมูลที่ดีเพียงอย่างเดียวก็สามารถคว้าสัญญาใหญ่ได้
- เมื่อเทียบกับผลิตภัณฑ์รายรอบอย่าง Delta และ kdb.ai ความสมบูรณ์ของผลิตภัณฑ์หลักสำคัญกว่า
- ต้องลด เส้นโค้งการเรียนรู้ ที่ชันของ kdb+ ลงด้วย
- หากจำเป็น ก็รวมถึงการเปลี่ยนภาษาและเทคโนโลยีเองด้วย
- หากไม่สามารถกลายเป็นสิ่งที่คนวงกว้างเข้าถึงได้มากขึ้น ก็อาจนำไปสู่การถดถอยอย่างช้า ๆ
- ไม่ใช่แค่ผลิตภัณฑ์เทคโนโลยีหลักเท่านั้น แต่ควรพิจารณาการเปลี่ยนแปลงในระดับบริษัทที่กว้างขึ้นด้วย รวมถึงต้นทุนและโครงการขนาดใหญ่อย่าง AI และงบการตลาดมหาศาล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
อยากเสนอ TimescaleDB เป็นอีกตัวเลือกหนึ่งด้วย เพราะเป็นส่วนขยายของ PostgreSQL องค์ประกอบที่เกี่ยวกับ SQL อย่าง replication และ authentication จึงยังคงอยู่เหมือนเดิม
รองรับทั้งการจัดเก็บแบบคอลัมน์และการบีบอัด และเร็วมาก เคยใช้ในแอปพลิเคชันด้านการเงินอยู่หลายแห่ง ข้อมูล tick ปริมาณมหาศาลไหลเข้ามาถึงแอปพลิเคชันด้วยความเร็วแทบจะสูงสุดเท่าที่ฮาร์ดแวร์จะรองรับได้
การสนับสนุนก็ดี และตอบสนองรวดเร็วใน Slack เคยใช้ kdb เช่นกัน แต่มีข้อเสียใหญ่คือราคาแพง และภาษา Q แม้บางครั้งจะสนุกเหมือนเล่น code golf ด้วยโค้ดสั้น ๆ แต่สุดท้ายก็รู้ว่าตัวอักษรเดี่ยว ๆ ไม่ได้สื่อความหมายได้ดีอย่างที่คิด
ถ้าเป้าหมายคือ การวิเคราะห์เชิงควอนต์ แบบเฉพาะหน้า kdb อาจเหมาะ เพราะคุณจะพิมพ์สตริงสั้น ๆ ลงใน REPL ทั้งวันเพื่อหาสิ่งที่ทำเงินได้ แต่หลายงานจริง ๆ แล้วใกล้เคียงกับงาน cron มากกว่า ดังนั้นถ้าจะรัน query ที่กำหนดไว้ตามตารางเวลา ควรทำให้อยู่ในรูปแบบที่คนถัดไปอ่านเข้าใจและดูแลต่อได้ดีกว่า
สถานการณ์อย่าง “แสดงเซ็นเซอร์บนแผนที่และแสดงกราฟค่าของแต่ละเซ็นเซอร์” สามารถจัดการได้รวดเร็วและเรียบร้อยด้วย query เดียว
แต่ข้อมูลของผมค่อนข้างผิดปกติ ฝั่งต้นทางสามารถเปลี่ยนโครงสร้างได้ตามใจ และผมต้องรองรับมัน ถ้าราคา InfluxDB ไม่บ้าคลั่งขนาดนั้น พูดตรง ๆ คงเลือกใช้ InfluxDB ทันที
เคย ลาออกหลังทำได้ 2 สัปดาห์ จากงาน quant trading ที่ใช้ kdb+ ใช้งานได้ก็จริง แต่ประสบการณ์แย่มาก
จะบ่นว่า design ของภาษาหรือการ debug แย่มากก็ได้ แต่สิ่งที่น่าอึดอัดที่สุดคือวิธีที่มีหรือไม่มี coding rules ซึ่งผมมองว่าภาษาและชุมชนมีบทบาทมากในเรื่องนี้ วัฒนธรรมบริษัทก็มีส่วนด้วย พอถามว่าทำไมเอกสารถึงแย่ขนาดนี้ ก็ได้คำตอบว่า “พอเวลาผ่านไปเราจะเข้าใจเอง และต้องทำแบบนี้เพื่อไม่ให้ทีมอื่นเอาไอเดียของเราไปใช้ได้”
สแต็กทั้งหมดก็เก่า และเครื่องมืออย่าง Q ก็ทำงานที่น่าสนใจได้ยากหลายอย่าง เช่น คัดลอกข้อมูลจาก qStudio ไป Excel เพื่อวาดกราฟ
สิ่งเดียวที่ดีคือไม่ได้ตามกระแส Docker/Kubernetes แต่ deploy ลงเซิร์ฟเวอร์โดยตรง เป็นเรื่องสมเหตุสมผลที่ quant ควรแก้ไขสิ่งต่าง ๆ ใน production ได้รวดเร็ว แต่ผมก็คิดว่านักพัฒนาเว็บแอปก็ไม่ควรต้องรอทีละ 10 นาทีเพื่อดูผลการแก้ไขใน production เช่นกัน
ผมมีทฤษฎีว่าทำไมเหล่า quant ถึงชอบ kdb: kdb เป็น อาวุธ ที่ดี เหมาะกับบางวัตถุประสงค์ แต่เรียกว่า เครื่องมือ ได้ยาก เพราะการสร้างอะไรด้วยมันน่าเบื่อ พวกเขาชอบตรงที่มันทำงานได้ทันที แต่การที่ใช้มีดตอกตะปูได้ ไม่ได้แปลว่านั่นคือจุดประสงค์ของมีด
ถ้าต่อจากทฤษฎีนั้น LISP โดยเฉพาะ Racket อาจเป็นเครื่องมือที่ดีที่สุด แม้จะไม่ใช่ภาษาที่ทรงพลังที่สุดตั้งแต่แรก แต่เพราะมีความสามารถในการเปลี่ยนตัวภาษาเอง จึงสร้าง abstraction ได้มากมาย C++ และ Python เป็นภาษาโปรแกรมที่ยอดเยี่ยมสำหรับสร้างซอฟต์แวร์ที่ดี และ Python ก็เป็นอาวุธที่ค่อนข้างดีด้วย
Q อาจทำให้เกิดภาพลวงตาว่าเป็นภาษาที่ดีที่สุดสำหรับสำรวจข้อมูล quant แต่จริง ๆ เป็นเพราะเหล่า quant ไม่ได้ลงทุนมากพอในการสร้างซอฟต์แวร์ที่ดีและใช้เครื่องมือที่ดี ถ้าเรียนรู้ Python IDE ให้ดี ก็อาจ productive กว่าโปรแกรมเมอร์ Q คนใดก็ได้
เรื่อง performance ผมจะยังไม่เริ่มพูด แม้บทความในลิงก์จะไม่ค่อยดี แต่ก็แตะเรื่องนั้นไว้
สมัยก่อนเคยประทับใจ Kdb+ มาก เคยไป meetup ที่ Chicago ด้วย query ใหญ่ ๆ รันแทบจะทันที และ syntax แบบ APL ดูเหมือนคาถาวิเศษที่มีแต่คนสายคณิตศาสตร์เท่านั้นที่รู้ ตัวแทนฝ่ายขายบอกว่า Kdb ถูก optimize มากจนใส่ลงใน L1 cache ของโปรเซสเซอร์ในตอนนั้นได้
ผ่านมา 10 ปี ตอนนี้ทำงานแบบเดียวกันบนไฟล์ Parquet ด้วย Python, DuckDB, Jupyter อยู่ DuckDB ไม่ได้ทำแค่ parallelization แต่ทำ vectorization ด้วย ไม่รู้ว่าถ้า benchmark เทียบกับ kdb+ จะเป็นอย่างไร แต่ responsiveness ของ DuckDB บน dataset ขนาดใหญ่ให้ความรู้สึกว่าเร็วอย่างน้อยเท่า kdb+ แน่นอนว่า kdb+ คงถูก optimize มากกว่ามาก แต่ความต่างคือ DuckDB ฟรี
ดูมีความเป็นไปได้มากกว่าว่าเขาหงุดหงิดและลาออกเพราะไม่เข้าใจโค้ด
ถ้าเป็นนักพัฒนา quant ที่ชำนาญและตำแหน่งนั้นดีจริง การลาออกหลัง 2 สัปดาห์ภายใต้เงื่อนไขสัญญาแบบนี้คงเป็นหายนะต่อการจัดการการย้ายงานครั้งต่อไป
เช่น เปิด Jupyter Notebook แล้วทำแบบนี้ได้เลย
import pykx as kxdf = kx.q(“select from foo where bar”)plt.plot(df[“x”], df[“y”])เป็นการผสานรวมที่ลื่นไหลและทรงพลังมาก ได้ข้อดีของทั้งสองโลก และอาจกลายเป็นฟีเจอร์ที่ทำให้ผลิตภัณฑ์นี้อยู่รอดไปได้อีก 10 ปีข้างหน้า
ฟีเจอร์ที่น่าสนใจอย่างหนึ่งของ kdb+/Q ที่ไม่ได้กล่าวถึงอย่างชัดเจนตรงนี้คือ การผสานรวมแนวดิ่ง โดยปกติ use case ของทั้งสแตกที่ต้องเลือกเทคโนโลยีสำเร็จรูปหลายตัวมาประกอบกัน สามารถจัดการได้ด้วยเทคโนโลยีเดียว
ด้วยภาษา Q, ความสามารถพื้นฐานในการ serialize ข้อมูล และความสามารถในการสื่อสารระหว่างโปรเซส โปรแกรมเมอร์ที่ชำนาญจึงสามารถสร้างระบบที่ต้องการให้พอดีได้ด้วยภาษาเดียว และ codebase ก็มักเล็กพอจะใส่ในเอกสารไม่กี่หน้า ไม่ใช่หลายร้อยหรือหลายพันหน้า
ถ้าองค์กรตัดสินใจไปแล้วว่าจะให้ซอฟต์แวร์ โปรโตคอล หรือฟอร์แมตอื่นรับบทบาทบางส่วนเหล่านี้ ประโยชน์ของการผสานรวมแนวดิ่งทั้งในแง่ workflow การพัฒนาและประสิทธิภาพโดยรวมก็จะลดลง ยิ่ง kdb+ เองเป็นซอฟต์แวร์ proprietary และยังแพงด้วย จึงเข้าใจได้ว่าทำไมการนำมาใช้เต็มรูปแบบในโปรเจกต์ใหม่จึงหาเหตุผลรองรับได้ยาก ตัวเทคโนโลยีเองเหมือนอัญมณี น่าเสียดายจริง ๆ
ผลิตภัณฑ์แดชบอร์ดใช้งานยาก และมีบั๊กร้ายแรงที่ทำให้ตัวแก้ไขล่มบ่อยแม้กับแดชบอร์ดที่ซับซ้อนระดับกลาง Q มีฟีเจอร์มากมายจนถ้าใช้เขียนเว็บแอปพลิเคชันคงสนุกมาก แต่ถ้าจะส่งมอบอะไรให้ผู้ใช้กลับต้องใช้ตัวแก้ไขแบบ drag-and-drop เท่านั้น
ผมคิดว่าถ้า Shakti มีไลบรารีสำหรับจัดการ use case ระดับองค์กรทั่วไป เช่น load balancing, สิทธิ์ผู้ใช้ และ SSO ก็อาจกลายเป็นคู่แข่งตัวจริงของ Kx ได้ โปรแกรมเมอร์ K ที่ชำนาญน่าจะทำได้ภายใน 1–2 สัปดาห์ แต่บริษัทใหญ่ ๆ มักจะอนุญาตให้นำผลิตภัณฑ์มาใช้ก็ต่อเมื่อฟีเจอร์เหล่านี้ถูก implement ไว้แล้ว
กำลังทดลองไอเดียสร้างเลเยอร์ผสานรวมแบบนี้ด้วย SQL บนเทคโนโลยีโอเพนซอร์สอย่าง Kafka, Flink, Postgres, Iceberg แล้วเติม syntax sugar ที่ทำให้การประมวลผล time series ใน SQL สะดวกขึ้น
https://github.com/DataSQRL/sqrl/
เป้าหมายคือแปลง SQL สร้าง DAG ของการคำนวณ แล้วให้ตัวเพิ่มประสิทธิภาพแบบ cost-based ตัด DAG เพื่อกระจายไปยังเทคโนโลยีข้อมูลพื้นฐานต่าง ๆ เพื่อมอบพลังของ kdb+ ในรูปแบบแพ็กเกจที่ผสานเทคโนโลยีโอเพนซอร์สกับ SQL
ควรออก เวอร์ชันฟรี ที่ใช้ได้หลายวัตถุประสงค์
ผมคิดว่านี่คืออุปสรรคใหญ่ที่สุดที่ทำให้ kdb+ ไม่ได้รับการยอมรับในฐานะเทคโนโลยีและผลิตภัณฑ์ที่ยอดเยี่ยม และไม่เติบโตในชุมชนนักพัฒนา
ผมเคยใช้ kdb+ อย่างหนักในวงการการเงินมาหลายปีจนกลายเป็นแฟน การออกแบบและความเรียบง่ายมีความงามสง่าเหมือนมีรากมาจากปรัชญา Unix หลังจากออกจากวงการการเงินและไม่ได้ทำงานในบริษัทที่ใช้ kdb+ แล้ว ผมก็ยังมักมีแรงอยากใช้ kdb+ กับโปรเจกต์เล็ก ๆ ตามที่ต่าง ๆ อยู่บ่อยครั้ง
น่าหงุดหงิดที่ใช้ไม่ได้อีกแล้ว และไม่สามารถโชว์เครื่องมือ niche ที่ไม่ค่อยมีใครรู้จักนี้ให้เพื่อนร่วมงานดู แล้ว geek out ว่ามันเรียบง่ายและมีประสิทธิภาพแค่ไหนกับงานและการคำนวณบางประเภท
เมื่อก่อนผมต้องเขียนโค้ด C++ ที่ส่งข้อมูลไปยัง kdb และตัวถอดรหัส wire protocol ของพวกเขา ซึ่งทั้งสองอย่างมีไบนารี kdb สำหรับทดสอบแน่นอน
แค่ต้องใช้ทดสอบเท่านั้น เหมือนว่า Kx จะให้ไลเซนส์สำหรับพัฒนา แต่ก็เป็นเรื่องค่อนข้างนานมาแล้ว
โดยรวมเห็นด้วยกับเนื้อหาในบทความนี้ ถ้าสร้างใหม่ตอนนี้ก็เก็บข้อมูลไว้ใน Parquet แล้วเข้าถึงด้วย Polars หรือ DuckDB ก็พอ
ผมเกลียด q/kdb+ มากจนถึงขั้นสร้างภาษาเองสำหรับวิเคราะห์ time series แต่ผู้ชนะมาหลายปีแล้วก็คือ Python
เคยสร้างสตาร์ทอัพที่ประสบความสำเร็จพอสมควรด้วย kdb+ เป็นเทคโนโลยีที่ผมรู้จัก และช่วยให้สร้างผลิตภัณฑ์ที่แข็งแรงได้อย่างรวดเร็ว แต่เมื่อขยายขนาดขึ้น ก็ต้องเขียนใหม่ด้วย ซอฟต์แวร์โอเพนซอร์ส เพื่อขยายทีม
โดยรวมเห็นด้วยกับข้อเสนอแนะ แต่ผมคิดว่า Kx ควรเปิดแพลตฟอร์มเป็นโอเพนซอร์ส แบบนั้นจะดึงดูดนักพัฒนาประเภทที่อยากร่วมปรับปรุงและสร้างเครื่องมือให้ ecosystem ได้
Kdb+ ดูเท่มากจริง ๆ และผมเคยเรียนมันกับ APL แบบเล่น ๆ ในอุตสาหกรรมของผมก็น่าจะเหมาะกับหลายงานพอสมควร แต่ราคานี่เหลือเชื่อเกินไป
เราจ่ายเงินแบบ 100,000 ดอลลาร์ต่อ CPU เหมือนที่ธนาคารในวงการการเงินจ่ายไม่ได้ ดังนั้นในทางปฏิบัติก็เท่ากับเมินกลุ่มลูกค้าที่มีศักยภาพขนาดใหญ่มากไป
คนอื่นสามารถเรียนรู้เทคนิคของพวกเขา แล้วทำสิ่งเดียวกันให้เหมาะกับโดเมนและภาษาต่าง ๆ ได้
มีบางจุดในบทความที่ควรแก้ไข
clickhouse-localและchdbได้แต่ยังไม่มีที่ไหนลงมือย้ายจริง เหมือนจะเป็นการตัดสินใจครั้งใหญ่เมื่อคิดถึง integration ต่าง ๆ ที่แตกแขนงออกมาจาก KDB ถึงอย่างนั้นก็ชัดเจนว่ามันให้ความรู้สึกเหมือนผู้สืบทอดทางจิตวิญญาณ
สงสัยว่าตอนนี้ถ้าเริ่มเรียนตั้งแต่ศูนย์ ยังสามารถทำเงินก้อนใหญ่จาก การพัฒนา kdb+ ได้ไหม จำได้ว่าเมื่อไม่กี่ปีก่อนเคยเห็นประกาศงานที่จ่ายประมาณปีละ 1 ล้านดอลลาร์ ซึ่งน่าทึ่งมาก
น่าเสียดายที่ kdb+ มี ข้อกำหนด DeWitt ทำให้ไม่มีใคร benchmark เทียบกับฐานข้อมูลอื่น ๆ ที่กล่าวถึงในบทความได้
ก็สงสัยเหมือนกันว่ามี benchmark สาธารณะที่ทำโดยบุคคลที่สามหรือไม่