TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

The future of kdb+?

219 点作者 geph20219 个月前

20 条评论

lordnacho9 个月前
I thought I&#x27;d throw in TimeScale. It&#x27;s a postgres extension, so all your SQL stuff is just the same (replication, auth, etc).<p>It&#x27;s also a column store, with compression. Runs super fast, I&#x27;ve used it in a couple of financial applications. Huge amounts of tick data, all coming down to your application nearly as fast as the hardware will allow.<p>Good support, the guys on Slack are responsive. No, I don&#x27;t have shares in it, I just like it.<p>Regarding kdb, I&#x27;ve used it, but there are significant drawbacks. Costs a bunch of money, that&#x27;s a big one. And the language... I mean it&#x27;s nice to nerd out sometimes with a bit of code golf, but at some point you are going to snap out of it and decide that single characters are not as expressive as they seem.<p>If your thing is ad-hoc quant analysis, then maybe you like kdb. You can sit there and type little strings into the REPL all day in order to find money. But a lot of things are more like cron jobs, you know you need this particular query run on a schedule, so just turn it into something legible that the next guy will understand and maintain.
评论 #41149087 未加载
评论 #41147676 未加载
Labo3339 个月前
I actually quit a quant trading job after 2 weeks because they used kdb+. I <i>could</i> use it but the experience was so bad...<p>People could complain about abysmal language design or debugging but what I found the most frustration in the coding conventions that they had (or had not), and I think the language and the community play a big role there. But also the company culture: I asked why the code was so poorly documented (no comments, single letter parameters, arcane function names). &quot;We understand it after some time and this way other teams cannot use our ideas.&quot;<p>Overall, their whole stack was outdated and ofc they could not do very interesting things with a tool such as Q. For example, they plotted graphs by copying data from qStudio to Excel...<p>The only good thing was they did not buy the docker &#x2F; k8s bs and were deploying directly on servers. It makes sense that quants should be able to fix things in production very quickly but I think it would also make sense for web app developers not to wait 10 minutes (and that&#x27;s when you have good infra) to see a fix in production.<p>I have a theory on why quants actually like kdb: it&#x27;s a good *weapon*. It serves some purpose but I would not call it a *tool* as building with it is tedious. People like that it just works out of the box. But although you <i>can</i> use a sword to drive nails, it is not its purpose.<p>Continuing on that theory, LISP (especially Racket) would be the best *tool* available as it is not the most powerful language out of the box but allows to build a lot of abstractions with features to modify the language itself. C++ and Python are just great programming languages as you can build good software on them, Python being also a fairly good weapon.<p>Q might give the illusion of being the best language to explore quant data, but that&#x27;s just because quants do not invest enough time into building good software and using good tools. When you actually master a Python IDE, you are definitely more productive than any Q programmer.<p>And don&#x27;t get me started on performance (the link covers it anyway even though the prose is bad).
评论 #41145100 未加载
评论 #41148195 未加载
评论 #41146427 未加载
评论 #41145069 未加载
评论 #41168334 未加载
评论 #41145193 未加载
RodgerTheGreat9 个月前
One of the compelling features of kdb+&#x2F;Q that isn&#x27;t explicitly called out here is <i>vertical integration</i>: it&#x27;s a single piece of technology that can handle the use-cases of a whole stack of other off-the-shelf technologies you&#x27;d otherwise need to select and glue together. The Q language, data serialization primitives, and IPC capabilities allow a skilled programmer to tailor-build <i>exactly the system you need</i> in one language, often in a codebase that would fit on a few sheets of paper instead of a few hundred or thousand.<p>If your organization has already committed to serving some of these roles with other pieces of software, protocols, or formats, the benefits of vertical integration- both in development workflow and overall performance- are diminished. When kdb+ itself is both proprietary and expensive it is understandably difficult to justify a total commitment to it for new projects. It&#x27;s a real shame, because the tech itself is a jewel.
评论 #41144313 未加载
评论 #41144425 未加载
gricardo999 个月前
<p><pre><code> Get a free version out there that can be used for many things… </code></pre> I think this has been the biggest impediment to kdb+ gaining recognition as a great technology&#x2F;product and growing amongst the developer community.<p>Having used kdb+ extensively in the finance world for years, I became a convert and a fan. There’s an elegance in its design and simplicity that seems very much rooted in the Unix philosophy. After I left finance, and no longer worked at a company that used kdb+, I often felt the urge to reach for kdb+ to use for little projects here and there. It was frustrating that I couldn’t use it anymore, or even just show colleagues this little known&#x2F;niche tool and geek out a little on how simple and efficient it was for doing certain tasks&#x2F;computations.
评论 #41148308 未加载
评论 #41144375 未加载
chrisaycock9 个月前
I agree with everything in this article. If you&#x27;re building from scratch, just store your data in Parquet and access it via Polars or DuckDB.<p>I built my own language for time-series analysis because of how much I hated q&#x2F;kdb+, but Python has been the winner for a bunch of years now.
anonu9 个月前
I built a (moderately successful) startup using kdb+. It was what I knew and it helped us build robust product, quickly. But as we scaled we had to rewrite in FOSS to ensure we could scale the team.<p>Agree with all the recommendations, except I think kx should open source the platform. This will attract the breed of developer that will want to contribute back to the ecosystem with improvements and tools.
评论 #41146103 未加载
7thaccount9 个月前
Kdb+ seems really cool and I&#x27;ve learned it a little bit for fun along with APL. It would actually be pretty cool for a lot of uses in my industry too, but the price is just crazy. We can&#x27;t pay like $100k&#x2F;cpu or whatever it is that the financial banks pay. So they&#x27;ve basically ignored a HUGE amount of potential customers.
评论 #41144296 未加载
zX41ZdbW9 个月前
A few corrections to the article.<p>1. ClickHouse is not a new technology — it has been open-source since 2016 and in development since 2009.<p>2. ClickHouse can do all three use cases: historical and real-time data, distributed and local processing (check clickhouse-local and chdb).<p>3. ClickHouse was the first SQL database with ASOF JOIN in the main product (in 2019) - after kdb+, which is not SQL.
评论 #41144657 未加载
评论 #41144188 未加载
haolez9 个月前
Is it still possible to learn from scratch and make big bucks developing for kdb+ (k&#x2F;q)? I remember seeing an open position a few years ago which paid like 1MM per year. Astounding.
puzpuzpuz-hn9 个月前
Nice article, thanks for sharing it. It&#x27;s a pity kdb+ has a DeWitt Clause, so that no one can benchmark it against other databases from the article. I wonder if they have any public benchmarks held by a 3rd-party.
timkpaine9 个月前
There are certainly enough rubes out there to sell the next KDB+ to: <a href="https:&#x2F;&#x2F;shakti.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;shakti.com&#x2F;</a>
parentheses9 个月前
I feel kdb is like the equivalent of a drag racer - useless generally. Great at a one (or few) things in very limited environments.
评论 #41169374 未加载
zitterbewegung9 个月前
Even if Python has “won” in the space the current inertia of technical debt or it isn’t not broken so why fix it will be an issue. I have 5+ years of Python experience and migration to a new platform is at least a year long project if not multi year.<p>Greenfield development though would use Python.
thestgman19 个月前
KDB is an absolute nightmare, a barbaric piece of tech that should have never existed.<p>Here is a link on how you do queries: <a href="https:&#x2F;&#x2F;code.kx.com&#x2F;q&#x2F;basics&#x2F;funsql&#x2F;" rel="nofollow">https:&#x2F;&#x2F;code.kx.com&#x2F;q&#x2F;basics&#x2F;funsql&#x2F;</a><p>TL;DR;<p>This is a select: q)t:([] c1:`a`b`a`c`a`b`c; c2:10<i>1+til 7; c3:1.1</i>1+til 7)<p>And this is another select: q)?[t; ((&gt;;`c2;35);(in;`c1;enlist[`b`c])); 0b; ()]<p>Mind that these are the basic queries :)))))<p>The future of kdb+ is in the toilet.
评论 #41243348 未加载
marsvenus9 个月前
Sadly the management at kx&#x2F;fd didn’t have the vision to push this product beyond being a boutique platform for a handful of rich finance firms and their moment has passed
menthe9 个月前
Not 100% sure why it’s often idolized on HN.<p>We’ve maintained a financial exchange w&#x2F; margining for 8 years with it, and I guarantee you that everyone was more than relieved - customers and employees alike, once we were able to lift and shift the whole thing to Java.<p>The readability and scalability is abysmal as soon as you move on from a quant desk scenario (which everyone agrees, it is more than amazing at.. panda and dask frames all feel like kindergarten toys compared), the disaster recovery options are basically bound to having distributed storage - which are by the way “too slow” for any real KDB application given the whole KDB concept marries storage and compute in a single thread.. and use-cases of data historical data, such as mentioned in the article, become very quickly awful: one kdb process handles one request at once, so you end up having to deploy &amp; maintain hundreds of RDB keeping the last hour in memory, HDBs with the actual historical data, pausing for hourly write downs of the data, mirroring trees replicating the data using IPC over TCP from the matching engine down to the RDBs&#x2F;HDBs, recon jobs to verify that the data across all the hosts.. Not to mention that such a TCP-IPC distribution tree with single threaded applications means that any single replica stuck down the line (e.g. big query, or too slow to restart) will typically lead to a complete lockup - all the way to the matching engine - so then you need to start writing logic for circuit breakers to trip both the distribution &amp; the querying (nothing out of the box). And then at some point you need to start implementing custom sharding mechanisms for both distribution &amp; querying (nothing out of the box once again..!) across the hundreds of processes and dozens of servers (which has implications with the circuit breakers) because replicating the whole KDB dataset across dozens of servers (to scale the requests&#x2F;sec you can factually serve in a reasonable timeframe) get absolutely batshit crazy expensive.<p>And this is the architecture as designed and recommended by the KX consultants that you end up having to hire to “scale” to service nothing but a few billions dollars in daily leveraged trades.<p>Everything we have is now in Java - all financial&#x2F;mathematical logic ported over 1:1 with no changes in data schema (neither in house neither for customers), uses disruptors, convenient chronicle&#x2F;aeron queues that we can replay anytime (recovery, certifying, troubleshooting, rollback, benchmarks, etc), and infinitely scalable and sharded s3&#x2F;trino&#x2F;scylladb for historical.. Performance is orders of magnitude up (despite the thousands of hours micro-optimizing the KDB stack + the millions in KX consultants - and without any Java optimizations really), incidents became essentially non-existent overnight, and the payroll + infra bills got also divided by a very meaningful factor :]
评论 #41144450 未加载
评论 #41148403 未加载
评论 #41144584 未加载
评论 #41201852 未加载
kanungle9 个月前
Full disclosure: I work for KX. In fact, my job is to connect with developers to learn about their experience with KX, so I can help to make it better. I am always open to feedback about what we can improve, and while no product is perfect, I think there’s a lot in this blog that’s worth addressing.<p>For benchmarks, I would check out STAC M3... kdb+ holds 17 world records there and that is something we’re proud of. The Clickbench benchmarks cited in the article, however, aren’t designed for time series databases and kdb+ isn’t included (probably for that reason). I don’t think it’s relevant here. We also think that speed – and performance in general – is still important to our customers, as they continue to affirm.<p>As far as accessibility is concerned, I’d like to address in multiple parts:<p>1) We are invested in creating cloud-native features that are more appealing for smaller firms<p>2) q is the best language out there (in our opinion) but we also offer a path for Python (including Polars) and SQL developers, which is essential to expanding the kdb+ userbase to the maximum extent. Our entire Fusion interfaces was built to enable more interoperability. We also don’t mandate language lock-in... there is nothing preventing other languages from being used with kdb+.<p>3) Pricing—this comes up a lot. We already offer a free edition of kdb+ for non-commercial use that is very popular. We recognize there’s more we can do in this area (an opinion expressed by KX leadership too) so new pricing models are actively being evaluated.<p>4) Our latest release of kdb+ 4.1 included a renewed focus on ease of installation and use, and a new documentation hub is being launched this year to further enhance the developer experience.<p>5) Our Community is growing rapidly – with now over 6000 members and 10 courses available in KX Academy. We have more and more developers networking to help others learn kdb+ every day with a month-over-month net new increase of members for the past 30 months. We’ve recently launched a Slack channel and developer advocacy program too.<p>There’s a lot of criticism about kdb+ (and KX) in this article, but a lot of the things devs love the most about kdb+ have been left out. This includes efficiency&#x2F;compactness, expressiveness of q, vertical integration, and speedy development workflow. Sure, if you want to combine 3-5 tools to do what kdb+ does you can go that route, but we feel we offer a vastly superior experience with performance at scale. A quality that extends to ALL our products, including Delta &amp; KDB.AI, since they are all built on kdb+.<p>Note: I reached out to the author to discuss, but he declined to talk to us. We posted a response on his blog too, but he never published the comment. It&#x27;s been a pretty closed off situation for us, so leaving this here.
评论 #41267089 未加载
nhourcard9 个月前
TLDR from the article;<p>Alternatives (which are open source) to KDB+ are split into two categories:<p>New Database Technologies (tick data store &amp; ASOF JOIN): Clickhouse &amp; QuestDB<p>Local Quant Analysis: Python – with DuckDB &amp; Polars<p>Some personal thoughts:<p>Q is very expressive, and impressive performance can be extracted from kdb+, but the drawbacks are proprietary formats, vendor lock-in, costs, proprietary language and reliance on external consultants to make the system run adequately, which can increase operational costs.<p>I&#x27;m personally excited to see the open-source alternative stack emerging. Open Source time-series databases and tools like duckdb&#x2F;polars for data science are a good combination. Storing everything in open formats like Parquet and leveraging high-performance frameworks like Arrow is probably where things are heading.<p>Seeing some disruption in this industry specifically is interesting; I think it will be beneficial, particularly for developers.<p>NB: disclosing that I&#x27;m from questdb to put thoughts in perspective
tarek_computer9 个月前
It is an old product that is no longer relevant, and there is no longer any demand for it. Time to move on.
评论 #41144309 未加载
评论 #41144314 未加载
评论 #41169416 未加载
thazework9 个月前
Saudi league I think