[HN Gopher] SQL:2023 has been released ___________________________________________________________________ SQL:2023 has been released Author : MarkusWinand Score : 180 points Date : 2023-06-01 17:05 UTC (5 hours ago) (HTM) web link (www.iso.org) (TXT) w3m dump (www.iso.org) | sdflhasjd wrote: | Ah, a sequel for SQL | Alifatisk wrote: | Good one | xucheng wrote: | A related question: what is the state in term of supporting the | SQL standard among the popular RDBMS? It seems that almost all | database engines use their own custom syntax. | MarkusWinand wrote: | This is one of the questions I try to answer at https://modern- | sql.com/ | bafe wrote: | Your website is great and I regularly check it to see what's | new in various implementations. Unfortunately it seems that | many databases don't support many modern SQL features yet. | Any ideas as to why? | jsmith45 wrote: | I can say that none of Oracle, Sybase, or Microsoft Sql Server | really aim at conforming to the standard. While they will often | try to use standard syntax for new features if such syntax | exists, there is tons of old non-conforming syntax that there | seems to be no real effort in addressing, even by adding new | options, etc. Some of these mean really common features deviate | significantly from what the standard requires. | | PostgreSQL does mostly aim at conforming to the standard. They | will invent new syntax when needed, But compared to the those | previously mentioned, Postgres seems to prefer to stick closer | to the standard whenever possible, including adding standard | syntax for existing features whenever possible. | | PostgreSQL does have some places where there is deliberate non- | conformance (beyond just incompletely implemented features). | They document many deliberate deviations (other than | unimplemented or partially implemented features) and if they | think they can be fixed in the future or not: | https://wiki.postgresql.org/wiki/PostgreSQL_vs_SQL_Standard . | Looking at the list I'd say only one especially likely to bite | a developer is the default escape character for LIKE clauses, | or the non-standard trailing space behavior for character(n) | datatypes (but who used fixed length character datatypes | instead of varchar or text?). And obviously not yet implemented | features could bite people, but many such features are optional | to implement anyway, so... | | I cannot speak about MySQL or MariaDB, due to insufficient | familiarity. | cpdean wrote: | I like SQL and all but I really don't care to follow ISO | releases. They're hundreds of dollars and nobody actually | implements the whole thing. I get way more excited about database | releases. | | Does anyone else find value in what's in an ISO standard? | lolinder wrote: | > They're hundreds of dollars | | This isn't SQL-specific, but this is 100% the problem for me. | There's such a big culture gap between the way that we do | things in most of the tech world and ISO, and one of the | biggest clashes is this weird $180 PDF thing. | | If I want to implement a new standards-compliant HTML parser, I | can hop right onto whatwg.org and view the complete standard | instantly [0]. It's massive and complicated, but it's freely | accessible to anyone interested. | | In contrast, if I want to implement an ISO 8601-compliant date | parser, ISO wants me to buy their PDF for CHF166 (~$180 USD). | This spec is for a standard that is orders of magnitude less | complex, and they're charging through the nose for it. | | I'm unclear what makes the difference between a standard that | can be maintained by a community for the benefit of everyone | and a standard that needs to be locked behind a paywall. | | [0] https://html.spec.whatwg.org/ | justinclift wrote: | Ugh, it's CHF 208.00 (about US$230.00). | | --- | | As @rgbgraph points out below, the price is actually several | times that. There are several parts to the standard, and that | US$230 is _per part_. | munk-a wrote: | I have always despised them for putting a paywall in front of | the SQL standard - it's been there since at least 2010 and | probably quite a bit earlier. The good news is that nobody | actually needs to read it since you need DB specific | information anyways... but it'd be nice to have access to it | (especially when I was working on RDBMS neutral dialect to | support multiple backends). Still, if you ever have a question | about documentation postgres[1] does an absolutely amazing job | detailing everything in its dialect and their dialect tends to | be the most "neutral" imo. | | 1. https://www.postgresql.org/docs/current/index.html | nologic01 wrote: | they say the Standard contributes to SDG 9... | | "Inclusive and sustainable industrialization, together with | innovation and infrastructure, can unleash dynamic and | competitive economic forces that generate employment and | income" | | Not clear how an arbitrary levy as this can contribute to an | SDG goal. It is the definition of exclusion. A bright new thing | can use the $230 to get several good database books. | | Surely ISO has enough corporate stakeholders that can defray | the cost of running the standardization process. | MarkusWinand wrote: | Luckily pretty much nobody needs the standard documents. It's | actually my aim at https://modern-sql.com/ to make the relevant | information more accessible -- in particular including support- | matrices ("Can I Use"). | sosodev wrote: | I've certainly needed them before :( | fhoffa wrote: | I love this, thanks! | | How we could we add Snowflake to the compatibility matrices? | | It's popular enough to deserve it, IMHO. | | https://db-engines.com/en/ranking | rekabis wrote: | As a web developer: your site is clean and crisp, with an | almost brutal simplicity which makes it very attractive. | Honestly, I like it a lot. It could use one or two very | subtle tweaks in the super-fine details, but for a technical | information-dissemination site, it's bloody awesome. | | My only issue is with the width. While whitespace between the | sides and the centre content is very useful, this isn't the | 1990s anymore with its 1024x768 monitors. You _can_ make the | centre column responsive to the overall width of the screen. | Doing so can also give you a lot more room to do things, and | make it easier to read. Your line-height is already great, | and is perfect for text blocks a good half again wider if not | twice as wide. Even on my vertical monitors, which are only | 1500px wide, that centre column is pretty much | claustrophobically narrow. | MarkusWinand wrote: | The rationale behind the width is more the ease of reading | than anything else: | https://en.wikipedia.org/wiki/Line_length | | But thanks for the feedback. There is a rework pending | anyway. | munk-a wrote: | One piece of good news is that you just need to drop #page- | wrapper's width (or adjust to preference) the rest of the | CSS all appears to be sensibly responsive. | patrec wrote: | Just in case anyone who isn't familiar with Markus's work | gets a slightly w3schools vibe when clicking the above link: | his book SQL Performance explained[1] is probably the single | most useful book a backend developer can read. | | [1] https://sql-performance-explained.com/ | LispSporks22 wrote: | Cool nice site man. I bought the book a while back and really | enjoy the articles. | chrismorgan wrote: | I've never had access to the SQL standard, but in things like | HTML and CSS I know I reach for the specs _extremely_ | regularly, and that when working with SQL (mostly PostgreSQL | or SQLite, including sometimes having to support both) I get | frustrated at the general poor state of SQL documentation | (and certainly a lot of this is because of engine diversity | and), and have often wished I had access to the SQL Standard | (even though I know engine diversity significantly lowers its | value for users of particular databases--my ideal would | probably be a version of the spec augmented with engine | support and links to each engine's documentation of the | matter). Certainly the table of contents for this spec sounds | delightful. | | Not all specs are particularly accessible (e.g. ECMAScript is | often hard to follow if you haven't spent a fair bit of time | around it--it's mostly natural-language code that works with | a ECMAScript virtual machine), but most of the time, I would | _much_ rather have the actual spec over someone's digested | summary that covers what _they_ thought was important, but | regularly lacks details important for my situation. Some | specs are absolutely magnificent. The HTML Standard is my | very favourite as both a piece of spec work and as reference | material. | | Seriously, specs are _really_ good stuff and it makes me sad | how people often ignore them because they assume they'll be | inscrutable. (Similar remarks apply to legislative texts. | They're normally pretty easy to understand, and you find all | kinds of sometimes fun and sometimes useful gems that potted | summaries exclude.) | paulddraper wrote: | The good news (not really) is that the SQL standard isn't | really followed. | | So unless you are writing a database yourself, the DMBS | documentation is going to be more relevant. | MarkusWinand wrote: | I'm studying the SQL standard for years now and compared to | other standards that I know (XSLT, a little CSS, decades | ago POSIX, C and C++) the SQL standard is really hard to | make sense of. You might overestimate the value of having | access to it. | | Having that said: free would be better. | nurettin wrote: | I have not read any of 9075, but 14882 is surprisingly | comprehensive, and wg21 regularly publishes prerelease | versions for free. | momirlan wrote: | agreeing here Markus, for all practical purposes all one | needs to know are the features supported by a particular | product, not the possible features. big fan of your site | ! | rgbgraph wrote: | For one part. IIRC, there's 11 "new" parts this year. | | Which is even more hilarious, considering the ISO is already | being funded by the tax dollars of member countries. | | A bit like having to pay a journal to get access to research | papers: ridiculous. | justinclift wrote: | Oh, wow. Yeah, that's even worse. | | Trying to throw together a list of them all, I'm only finding | 5 though: | | * https://www.iso.org/standard/76583.html | | * https://www.iso.org/standard/76584.html | | * https://www.iso.org/standard/76585.html | | * https://www.iso.org/standard/76586.html | | * https://www.iso.org/standard/76587.html | | Any idea about the others? | rgbgraph wrote: | * Part 1: https://www.iso.org/standard/76583.html | | * Part 2: https://www.iso.org/standard/76584.html | | * Part 3: https://www.iso.org/standard/84803.html | | * Part 4: https://www.iso.org/standard/76585.html | | * Part 9: https://www.iso.org/standard/84804.html | | * Part 10: https://www.iso.org/standard/84805.html | | * Part 11: https://www.iso.org/standard/76586.html | | * Part 13: https://www.iso.org/standard/84806.html | | * Part 14: https://www.iso.org/standard/76587.html | | * Part 15: https://www.iso.org/standard/84807.html | | * Part 16: https://www.iso.org/standard/79473.html | justinclift wrote: | Thanks. The pricing for this stuff seems to be truly | crazy. | | Wonder if Elsevier is involved somewhere? It's how they | do things too. | gigatexal wrote: | It really is utter bullshit that we have to buy these standards. | What are the business models of these standards bodies anyway? | jacobsenscott wrote: | Selling the standards documents. | awestroke wrote: | If only they could start allowing queries to begin with "FROM | tbl". It would allow for for much more helpful autocomplete. | Also, DELETE or SELECT should really be on the very last line of | the query. Seems like these changes could be done without losing | backwards compat | jchw wrote: | One thing that has always agitated me about SQL is that although | it's standardized, and the standard seems to encompass a shit- | ton, in practice a lot of SQL engines don't really seem to have | any meaningful interoperability for practical uses among the | world's most popular database engines. | | For example, OK, I realize auto-incrementing IDs are not the most | important thing in the world, and arguably not even a good | approach in many cases. But sometimes you want them, and | helpfully almost every database engine I know of has some kind of | support for this, even if the semantics may differ. It's a super | basic thing to want a unique ID that roughly counts upward on a | table. You might have specific needs about re-using numbers and | whatnot, but the general idea is very simple. | | However: in practice, there is not an excellent way to do it that | I can see. The closest thing I could find is `GENERATED BY | DEFAULT AS IDENTITY` which, well, works. However, none of | SQLite3, MSSQL, nor MariaDB support this to my knowledge. | | This is relentlessly annoying. | | Is it the standards fault, or the implementations? I honestly | can't say. However, I definitely find this annoying, since I was | really hoping that by this time, we'd at least have a nice clean | subset of standard SQL you could count on anywhere, for popular | database engines. Unfortunately, it's not quite there yet, | necessitating ugly hacks to this day. | | I assume this new standard doesn't really change anything on this | regard, since it's a desync with implementations that is a | problem, and it does not seem the standards committee really | cares too much about this kind of thing. (I could be wrong, | though, as I am saying this based on feel and not evidence.) | dmux wrote: | SQLite does support auto-incrementing: | https://www.sqlite.org/autoinc.html. Is your gripe with the | lack of "GENERATED BY DEFAULT AS IDENTITY" syntax specifically? | jchw wrote: | Yes, sorry. My gripe is that we don't have a single general | way to say "I don't really care about the specifics, I just | want a number that goes roughly upward" for all database | engines. SQLite is interesting in that it supports at least | two distinct sets of semantics for auto-incrementing rows, | but neither of them are the standard syntax... | richardwhiuk wrote: | The gripe is that there's not a standard say of defining this | in SQL. | | SQLite SQL != MySQL SQL != ISO SQL | mdaniel wrote: | > Is it the standards fault, or the implementations? | | My mental model is that it's a mixture, but my life experience | has been that a "standard" without a test harness or (at bare | minimum) a reference implementation is just a bunch of navel | gazing. For SQL specifically, that problem is even worse given | the number of existing engines that move faster than the | specification, so in the absence of leadership they just make | stuff up | | Natural language is also a _catastrophically horrible_ | specification mechanism, since your black /blue is my | white/gold | setr wrote: | The way I see it is the fundamental problem is that SQL is not | a proper composable language, and the standard never defines | such a thing. So every feature added to an RDBMS is done so as | an _extension to the language_ , rather than an update to a | standard library like any sane modern programming language. SQL | as a language still operates with the mentality of COBOL -- if | anything reusable is going to be provided, it will be provided | by the RDBMS manufacturer. The user is only expected to produce | highly business-specific logic for their own needs. (RDBMS's do | often offer standard PL language support, but these typically | hook into database internals, are intended for highly specific | scenarios, cannot be transferred to any other RDBMS, and are | generally meant for writing stored procs -- non-reusable | functions) | | As a result, for databases to compete on features, they must | arbitrarily extend the SQL language standard; these | modifications to the language then get backfilled into the | standard, and runs headfirst into backwards compatibility, and | suddenly no one agrees on really what the feature should | precisely be so they it becomes an optional part of the | standard, which really just means that it isn't standardized. | | In any sane language, you wouldn't need different databases to | add specific support for GENERATED BY DEFAULT AS IDENTITY, and | especially not for 15 different syntax's used in 15 different | databases to specify kinda sorta not really the same thing -- | it would simply be a function, one you could write yourself, or | provided by the standard library. It wouldn't be up to the | RDBMS to offer support beyond _actual_ language features -- it | 'd just be up to you to update your libraries. | la_fayette wrote: | PGQs match syntax seems interesting and reminds me to writing | sparql. I wonder if any RDBMS will support this? | bafe wrote: | All great features, but unfortunately most SQL DBs still miss the | implementation of features from SQL:2016 like MATCH_RECOGNIZE. I | wonder what's the purpose of an ever growing standard when most | implementations only support a small subset of it, and often with | nonstandard syntax and semantics | aerzen wrote: | Where would one find a pirated mirror of this standard? Or the | 2019 one? | | Asking for a friend, of course. | MarkusWinand wrote: | The major news are: | | - SQL/PGQ - A Graph Query Language | | - JSON improvements (a JSON type, simplified notations) | | Peter Eisentraut gives a nice overview here: | https://peter.eisentraut.org/blog/2023/04/04/sql-2023-is-fin... | dang wrote: | Discussed here: | | _SQL:2023 is finished: Here is what 's new_ - | https://news.ycombinator.com/item?id=35562430 - April 2023 (153 | comments) | sverhagen wrote: | I'm a pretty average SQL user, but I've heard expert | consultants say before that they could do many more things with | SQL databases that developers like me would have maybe grabbed | a different tool for, like a graph database. So this then makes | me wonder, once there's even broader adoption through PGQ, is | that going to be a killer for niche databases like Neo4j, in | favor of, say, Postgres? | derefr wrote: | Graph databases are about as different from RDBMSes _storage- | wise_ , as column-stores are from row-stores. It comes down | to how you plan to shard data and distribute queries when | data doesn't fit on a single node. | | Using a graph DB with many underlying KV-store nodes, you can | have a single graph spread over many machines representing | e.g. Facebook's social graph, and run a query which "chases | around" edges between vertices that live on different nodes, | to solve that query, while ensuring that _as little of that_ | has to happen as possible -- both by rebalancing vertices so | that data is sharded at low-connection-degree points in the | graph; and by consolidating the steps of queries that occur | on the same node into single batch queries, such that the | whole thing becomes (close to) a single map /reduce step. | | There's nothing in Postgres that knows how to do that; if you | had e.g. a graph stored in a Citus hypertable, and did a | recursive CTE over it to do graph search, then you'd get | pretty dang bad perf. | zozbot234 wrote: | > There's nothing in Postgres that knows how to do that | | Postgres uses foreign data wrappers and table partitions to | achieve sharding of relational databases over many nodes. | It's certainly possible to make the FDW layer smarter wrt. | being able to distribute certain queries to the shards, | including some recursive queries that happen to be of | practical interest. | WorldMaker wrote: | The PGQ part of SQL is designed in such a way that an RDBMS | can certainly optimize its storage of graph tables | (eventually). ("Graph tables" used by PGQ have DDL setup, | per the Eisentraut overview: CREATE PROPERTY GRAPH | graphname...) If Postgres embraces PGQ it would be easy to | imagine they would also adopt some graph database style | storage to back its indexing and query planners. | dathinab wrote: | if you are Facebook scale, yes. But then you anyway will | use a dedicated graph database. | | But a lot of graph databases have sizes where they are | fully replicated on each node and some small internal | optimizations for the graph are good enough. Given the | design of the graph query language (and what you can query, | hint: not everything arbitrarily) there is no reason | postgres can't gain some additional optimizations to do | that effectively as long as it's not facebook scale. | | SQL now having syntax for querying graph means Graph | databases can support SQL, at least a subset of it, in a | standardized way. | MarkusWinand wrote: | > It comes down to how you plan to shard data and | distribute queries when data doesn't fit on a single node. | | A problem everbody would love to have but pretty much | nobody actually has. | jupp0r wrote: | > A problem everbody would love to have | | Except the people who do have it and need to keep their | business running off of one postgres instance. | throwaway894345 wrote: | You can have data that fits on one machine and still run | multiple instances of postgres in a failover | configuration, which will probably cover just about | everyone (depending on your filesystem, disk for a single | instance is essentially infinite, so I'm not actually | sure what bottleneck would motivate you need to scale | beyond this configuration). | threeseed wrote: | There is a reason the world moved on from failover | architectures. | | a) At some point you will have more data or more users | than one instance can handle. And instead of simply | adding another node you need to throttle usage in order | to do a rolling upgrade. Which is far easier said than | done and involves impact to the business. | | b) With distributed databases you are constantly testing | that everything works in Dev, Test etc environments. With | failover you really only test it every now and again | usually before you deploy to Production. And in most | companies which are hopeless the testing will be | guaranteed to be inadequate. | | c) Vendors lie. They promise that failover will just work | but in my experience it very often doesn't. Which is | another reason why b) is such important to validate their | claims. | throwaway894345 wrote: | I mean, I don't _like_ that Postgres is not infinitely | scalable, but the whole point is that (a) is not | generally true--most companies could probably get by with | a single machine 's worth of data, or rather if they have | more than one machine's worth of data, those systems | probably aren't talking to each other such that they need | to be on the same box. Regarding (b) and (c), do you not | need to test failure conditions for distributed databases | (this isn't rhetorical, I've only ever used cloud | providers offerings)? | threeseed wrote: | I consult for a lot of companies and I never heard of or | seen a database that wasn't horizontally scaled. | | It's not for scalability reasons it's for high- | availability. | | Which as cloud adoption has increased and server uptime | has decreased is even more important. | jahewson wrote: | Why shard when you can just replicate? | lmm wrote: | Because replica failover is rarely seamless (and often | doesn't actually work at all, IME). | mikepurvis wrote: | Instinctively that's surprising... replica failover | should be far simpler technically, shouldn't it? | Spooky23 wrote: | Some of these arguments and "common knowledge" things are | getting old. Everybody scaled up twenty year ago - hell | Amazon used to brag that they used an HP Superdome or | whatever. | | Anyone with dogmatic opinions about this stuff need to be | taken with a grain of salt. If you scale out PeopleSoft, | your accounting system will exceed the value of your | company. If you're worried about webscaling your random | app, that's more wasting time navel gazing than | accomplishing anything! :) | czx4f4bd wrote: | I wonder if there's been any observable correlation between | JSON support in the major SQL databases and the decreased (or | increased?) adoption of NoSQL document databases like | MongoDB. It would be interesting to do some bulk analysis on | GitHub commits to compare their use over time. | hn_throwaway_99 wrote: | Just one bit of personal experience, but for me it was a | significant reason. In most cases you want objects to have | highly structured data (e.g. for joins and queries) and in | other cases you just want "a bunch of semi-structured | stuff". Sure, DBs always had blobs and text, but JSON is | really what you want a lot of the time. | | There's also a good article by Martin Fowler about how | "NoSQL" was really "NoDBA" for a lot of folks, and I | _definitely_ saw that dynamic. JSON fields can also be a | good middle ground here, where a DBA can insure good | "structural integrity" of your schema, but you don't need | to go through the hassle of adding a new column and schema | update if you're just adding some "trivial" bit of data. | tracker1 wrote: | The canonical example for me, is when you want to | store/use additional payment processor details for a | transaction... If it's direct CC, PayPal, Amazon Payments | etc. Relationally you only really care that the amount of | the transaction was sent/received/accepted. But you may | want to store the additional details, without a series of | specific tables per payment processor. If you need to see | the extra details that can still be done at runtime. | | Another good example is for generalized classified ads, | different categories may have additional details, but you | don't necessarily want to create the plethora of tables | to store said additional details. | throwaway894345 wrote: | Honestly, I pretty much always want structure. The | reasons I've opted for NoSQL are almost always that cloud | providers offer it for practically free while managed SQL | databases are wayyyy more expensive. The nice thing about | JSON is that it's a lot more ergonomic, but not because | of the lack of typing--I would absolutely use a database | that let my write reasonable type constraints for JSON | columns. (I realize that you're talking about why _most | people_ use NoSQL and I 'm remarking about why _I_ use | NoSQL). | | Some other controversial thoughts: SQL itself is a really | not-ergonomical query language, and also the lack of any | decent Rust-like enum typing is really unfortunate. I | know lots of people think that databases aren't for | typing, but (1) clearly SQL aspires toward that but gives | up half way and (2) that's a shame because they have a | lot of potential in that capacity. Also while you can | sort of hack together something like sum types / Rust | enums, it's a lot of work to do it reasonably well and | even then there are gaps. | munk-a wrote: | Every ecosystem I've ever worked in has had good tooling | for managing DB migrations (and in some cases I've been | the one to add it). It's trivial to write a migration to | ALTER TABLE bar ADD COLUMN foo and I think keeping | structure explicit is generally quite beneficial for data | safety even if you're not doing fancy things. DBAs are | great but most companies simply don't need one - you can | just get by with some pretty rudimentary SQL and skill up | as needed. | | Assuming you've got good integration test coverage of the | database schema alterations end up taking a minuscule | amount of time and if you lack test coverage than please | reconsider and add more tests. | tracker1 wrote: | I think when you really need/want a DBA is when you're at | a point where either you need redundancy/scale or have to | remain up. Most developers aren't going to become that | familiar with the details of maintenance and scale for | any number of different database platforms. I think MS- | SQL does better than most at enabling the developer+dba | role, but even then there's a lot of relatively | specialized knowledge. More so with the likes of Oracle | or DB2. | hn_throwaway_99 wrote: | Completely disagree. The issue is not about really about | how hard or easy it is to run migrations (every project | I've worked on has also used migration files), it's that, | depending on the data, it can just be a total waste of | time. | | Sibling comment, "is when you want to store/use | additional payment processor details for a transaction", | is a great example IMO. I've dealt with card processing | systems where the card transaction data can be reams of | JSON. Now, to be clear, there _are_ a lot of subfields | here that are important that I do pull out as columns, | but a lot of them are just extra custom metadata specific | to the card network. When I 'm syncing data from another | API, it's awesome that I can just dump the whole JSON | blob in a single field, and then pull out the columns | that I need. Even more importantly, by sticking the API | object blob in a single field, unchanged, it guarantees | that I have the full set of data from the API. If I only | had individual columns, I'd be losing that audit trail of | the API results, and if, for example, the processor added | some fields later, I wouldn't be able to store them | without updating my DB, too. | | Before JSON columns were really standard, saw lots of | cases where people would pull down external APIs into | something like mongo, then sync that to a relational DB. | Tons of overhead for a _worse_ solution where instead I | can just keep the source JSON blob right next to my | structured data in postgres. | sverhagen wrote: | You would have to tell the decreased adoption of NoSQL due | to JSON support in major SQL databases apart then from the | decreased adoption of NoSQL due to the hype being over... | threeseed wrote: | MongoDB remains the 5th most popular database: https://db- | engines.com/en/ranking | | And there are four major reasons still to choose MongoDB | over something like PostgreSQL. | | a) PostgreSQL has terrible support for horizontal | scalability. Nothing is built-in, proven or supported. | | b) MongoDB has superior ability to manipulate and query the | JSON. | | c) MongoDB is significantly faster for document-attribute | updates. | | d) MongoDB has better tooling for those of us that prefer | to manage our schema in the application layer. | paulddraper wrote: | By the time you need to shard PostgreSQL (billions of | records?), you have lots and lots of resources to | overcome that difficulty, a la Notion. | threeseed wrote: | You horizontally scale for high availability as well as | scalability. | | And primary-secondary failover in my experience is rarely | without issues. | | There is a reason almost every new database aims to be | distributed from the beginning. | lmm wrote: | If you want to be high-availability then you need | sharding or something like it from day 1. There's still | no first-class way of running PostgreSQL that doesn't | give you at least a noticeable write outage from a | single-machine failure. | pphysch wrote: | "Kill" is a strong word, as Postgres's solid JSON support | technically obsoleted MongoDB for most use cases, but Mongo | is still around for various reasons. | | I suspect if Postgres had a solid implementation of SQL/PCQ | it would be a similar story for Neo4j. | quantified wrote: | A big problem (IMHO) with graph databases is building "the" | graph model, and the fact that it's easy to be faced with | problems that don't suit a graph database. Something as | simple as returning the distinct set of values for an | attribute and count of vertices containing each value require | going outside the graph model, so aren't composable very well | in a property graph system. (There are other graphs besides | property graphs, they will have their time someday.) | | What you really want is to apply graph processing to data as | it is. The SQL 2023 additions are a step in the right | direction. I need to find a good detailed description of the | constraints and semantics to assess how good it is. | bionhoward wrote: | Which SQL DBs support these features now? Who is almost there? | I'm definitely excited to try it! | wslh wrote: | Basic question: is it correct to assume that having PGQ | involves a big change in the database engine? | zozbot234 wrote: | It's just a different language and a simple "property" layer | over the existing data. No changes to the internals are | necessary. | WorldMaker wrote: | No changes are _required_ by PGQ but some engines _may_ | wind up using PGQ as a signal to bring in new types of | indexes or disk storage formats to back it. | | It may be interesting to see if real world usage of PGQ | pushes the database engines to do interesting things. | pphysch wrote: | AFAICT the idea is that you are not directly querying the | tables as a graph, but you construct a graph "view" from the | tables, and then query that graph using PCQ. | zubiaur wrote: | Correct. The one RD I know that has implemented this "graph | view" concept is Oracle's. They did it first with PGQL | extensions on top of say 19c. Interesting, but the | execution seemed a bit unpolished. | | Now with 23c, they are adopting PGQ and one should be able | to interface through the regular JDBC connectors. Will see | how it shapes up. | pphysch wrote: | See also [1] for how this (might) relate to PostgreSQL | | In particular it is nice to see that a core dev views JSON dot | accessing and PCQ as "sensible" future additions to Postgres. | | [1] - https://peter.eisentraut.org/blog/2023/04/18/postgresql- | and-... | justinclift wrote: | As a thought, it might be better to use the https:// link to | Peter's overview. :) | MarkusWinand wrote: | Fixed. I wonder why Google sent me to http... | bokchoi wrote: | Thanks! Lots of little neat improvements in there like | accessing JSON values using dots and array syntax: | SELECT t.j.foo.bar[2], ... FROM tbl t ... | ksec wrote: | I wonder when or even if MySQL will adopt any of these. | thanatos519 wrote: | PGQ looks neat - create a "property graph" from a relational | model, then query it via Cypher-like expressions. The best or | the worst of both worlds, depending on implementation quality. | Zpalmtree wrote: | I like the DISTINCT / NOT DISTINCT unique NULL option, I was | wanting this feature just a few weeks ago | MarkusWinand wrote: | That particular one is already available in PostgreSQL 15. | | https://modern-sql.com/caniuse/unique-nulls-not-distinct | gatvol wrote: | Not a standard if access requires payment. | tofflos wrote: | Seems you can play with SQL/PGQ at | https://blogs.oracle.com/database/post/get-started-with-prop.... | nologic01 wrote: | Is Oracle's PGQL (e.g. 2.0) more or less the same as SQL/PGQ? | | It might be interesting to have a comparison of where major | databases stand (or plan to be) with respect to SQL/PGQ ___________________________________________________________________ (page generated 2023-06-01 23:00 UTC)