1
00:00:00,019 --> 00:00:04,189
Michael: Hello, and welcome to Postgres fm,
a weekly show about all things Postgres.

2
00:00:04,640 --> 00:00:08,990
I am Michael, founder of PG Mustard, and this
is co host Nikolay, founder of Postgres ai.

3
00:00:09,320 --> 00:00:10,879
Hey, Nikolay, what are we talking about today?

4
00:00:11,389 --> 00:00:12,349
Nikolay: Hi, Michael.

5
00:00:12,349 --> 00:00:15,289
Uh, why Postgres and why Postgres in the past?

6
00:00:15,334 --> 00:00:20,238
Why Postgres had success still  is having success, obviously.

7
00:00:20,288 --> 00:00:27,649
Let's also  a little bit, talk about what, we should expect
in the future in terms of Postgres popularity, usage.

8
00:00:27,679 --> 00:00:28,289
And so on.

9
00:00:28,424 --> 00:00:30,384
Michael: Yeah, I'm really looking forward to this one.

10
00:00:30,624 --> 00:00:32,694
We have a couple of inspirations.

11
00:00:32,694 --> 00:00:37,944
I wanted to give a shout out to Ryan Booz,
who is starting a community blogging event.

12
00:00:37,974 --> 00:00:40,104
And this "Why Postgres?"

13
00:00:40,134 --> 00:00:42,204
is gonna be, I think, the first topic there.

14
00:00:42,209 --> 00:00:47,361
So maybe we can consider this our entry, our audio entry to that, event.

15
00:00:47,861 --> 00:00:55,491
And, also I saw a tweet not long ago, somebody asking who or
what made Postgres cool, which, had a lot of interesting answers.

16
00:00:55,491 --> 00:00:59,301
And I think it'd be, I'm looking forward
to hearing your takes on this as well.

17
00:00:59,611 --> 00:01:07,886
But first, actually quickly, I did want to apologize because last
week, I said that, amcheck doesn't guarantee no false negatives.

18
00:01:07,886 --> 00:01:09,816
And I was, completely the wrong way around.

19
00:01:09,876 --> 00:01:11,346
It's no false positives,

20
00:01:11,396 --> 00:01:12,146
Nikolay: a huge mistake.

21
00:01:12,176 --> 00:01:12,686
Very huge.

22
00:01:12,836 --> 00:01:13,196
Yeah.

23
00:01:13,316 --> 00:01:13,646
Well, I

24
00:01:14,156 --> 00:01:14,846
Michael: don't, trust me.

25
00:01:14,851 --> 00:01:15,066
Basically

26
00:01:15,066 --> 00:01:15,266
Nikolay: joking.

27
00:01:15,956 --> 00:01:16,676
I'm joking.

28
00:01:16,676 --> 00:01:22,399
I also, I also need to confess, , I also made
mistake and I actually made it in reality.

29
00:01:22,612 --> 00:01:29,882
I, only recently understood, some,  case when, like amcheck
when we check a lot of indexes, we usually do it in one

30
00:01:29,882 --> 00:01:35,802
single thread and if it's some temporary server, not
production, of course it does make sense to parallelize it.

31
00:01:35,802 --> 00:01:36,792
And, uh, only in po.

32
00:01:36,792 --> 00:01:41,712
August 14, it was actually implemented in, in CLI tool, pg_amcheck.

33
00:01:41,732 --> 00:01:48,693
So dash J appeared so worth checking and
try to use even the, for older post version.

34
00:01:48,693 --> 00:01:54,036
I personally never tried, but I suspect it should
work as well for, for old versions of I checking post.

35
00:01:54,547 --> 00:01:56,107
, you can use a newer client.

36
00:01:56,107 --> 00:01:56,347
Right.

37
00:01:56,679 --> 00:01:57,189
Okay.

38
00:01:57,281 --> 00:01:58,031
Enough confession.

39
00:01:58,271 --> 00:02:01,541
I also want to thank you everyone again for feedback.

40
00:02:01,661 --> 00:02:07,751
This is super important and I also want to
send everyone, uh, like some words of support.

41
00:02:07,751 --> 00:02:12,311
So in hard times, I hope work distracts from bad news and so on.

42
00:02:12,731 --> 00:02:18,131
And I hope Postgres isnt well in, well
conditioned everywhere, well maintained and so on.

43
00:02:18,563 --> 00:02:19,373
Michael: absolutely.

44
00:02:19,986 --> 00:02:21,966
Well, so why Postgres?

45
00:02:21,996 --> 00:02:24,366
Should we start with a little bit of history?

46
00:02:24,496 --> 00:02:30,976
So maybe we could do a quick summary or do you want to start with where
things started to change or, , where would you like to start with this?

47
00:02:31,606 --> 00:02:34,730
Nikolay: Well, being a human, I always have some  right?

48
00:02:34,751 --> 00:02:40,692
When, uh, I, uh, stopped and needed to choose some free database system.

49
00:02:41,152 --> 00:02:43,822
, I, I moved away from Oracle and SQL Server.

50
00:02:44,288 --> 00:02:55,152
Um, MySQL was considered bad very quickly in my mind, and  I chose Postgres
because it, behave much better and closer to what I learned at university.

51
00:02:55,269 --> 00:03:00,249
So yes, unlike my sequel, this is, was my
reason why Postgres, but was very long ago.

52
00:03:00,249 --> 00:03:02,169
Almost 20 years actually.

53
00:03:02,570 --> 00:03:10,829
Michael: So are we talking, SQL Standard Compliance or are we
talking around, acid compliance or how would you summarize that?

54
00:03:11,053 --> 00:03:15,623
Nikolay: SQL Standard compliance is one thing and indeed a very good reason.

55
00:03:15,623 --> 00:03:25,260
And it was so, but also, like logical, predictable behavior, you expect
something, but, , with my sequel, for example, this terrible thing we had

56
00:03:25,320 --> 00:03:36,594
with my sequel that time, if you have, February 28 and add one day, you end up
having March 3 or something like this, or date 0 0 0, uh, behavior of nulls.

57
00:03:36,954 --> 00:03:39,284
Although, although Postgres behavior of nulls also interesting.

58
00:03:39,614 --> 00:03:48,149
So in MySQL, I started to encounter too many things and some, not
only a SQL standard, but for example, principles, A C I D principles.

59
00:03:48,366 --> 00:03:49,292
In MySQL.

60
00:03:49,420 --> 00:03:52,930
If you need the full check search, you needed to use my sum.

61
00:03:53,110 --> 00:04:01,333
So my sum required repair table all the time because it was not,
, didn't follow a C I D principles in terms of wall, records and so on.

62
00:04:01,727 --> 00:04:03,437
So pos behave much better.

63
00:04:03,723 --> 00:04:08,463
But it had limitations and lack of some functionality,
of course, like replication at that time and so on.

64
00:04:08,733 --> 00:04:11,533
So we needed to deal with slowly then long debt.

65
00:04:11,673 --> 00:04:14,596
It was not fun, but still, this, this is my path.

66
00:04:14,764 --> 00:04:22,075
But, at that time, I felt clearly that POGO is
considered as not number one choice for most people.

67
00:04:22,675 --> 00:04:32,134
And I felt it clearly, like until like 2014,
I was thinking like, PO this is for  spec.

68
00:04:32,164 --> 00:04:36,034
It's like free bsd, you know, most people
choose Linux, but you choose free bsd.

69
00:04:36,364 --> 00:04:38,854
Or even, even not, maybe it's not good comparison.

70
00:04:39,094 --> 00:04:43,174
It's like Linux compared to Windows for personal computers.

71
00:04:43,543 --> 00:04:47,263
You choose it, you know why, But most people still prefer Windows, right?

72
00:04:47,743 --> 00:04:49,993
This is, this was my feeling at that time.

73
00:04:50,503 --> 00:04:52,828
But of course, uh, I thought it's okay.

74
00:04:52,858 --> 00:04:54,405
Like, we have strong reasons.

75
00:04:54,448 --> 00:04:56,338
we won't switch to my sequel.

76
00:04:56,428 --> 00:04:56,931
Never.

77
00:04:57,052 --> 00:05:01,762
We know why, but it's okay that most people
around are preferring different database system.

78
00:05:01,852 --> 00:05:03,742
Well, poor of those people, right?

79
00:05:03,982 --> 00:05:06,581
This was our, way of thinking.

80
00:05:06,731 --> 00:05:10,183
I mean, our, in terms of like community, I remember this.

81
00:05:10,607 --> 00:05:16,216
And sometimes of course, we were even
blamed that we,  advertise pogs too much.

82
00:05:16,238 --> 00:05:18,397
It's like, sect, almost sec, you know?

83
00:05:18,685 --> 00:05:25,225
And it was until 2000 13, 14, 15, when suddenly things changed.

84
00:05:25,362 --> 00:05:35,305
They changed earlier, I think, but around 2013, maybe 12,  we had
some point, when Pogo suddenly became a winner compared to MySQL.

85
00:05:35,325 --> 00:05:36,380
But why, right.

86
00:05:36,867 --> 00:05:41,085
Michael: Yeah, I want to go back, quite
far to introduce when some things happened.

87
00:05:41,085 --> 00:05:43,576
I think we'd want to talk about, in a moment.

88
00:05:43,812 --> 00:05:46,932
But for people that don't know, I think some dates will be quite useful.

89
00:05:47,172 --> 00:05:50,266
I've done some research and just going right back.

90
00:05:50,791 --> 00:05:58,239
If we go back to when a lot of this all started, there were a lot of research
projects in the, in the seventies and eighties that, a lot of these projects

91
00:05:58,239 --> 00:06:03,329
came out of universities, Ingres  and Oracle came out in the seventies.

92
00:06:03,329 --> 00:06:04,750
Those, actually have similar roots.

93
00:06:05,000 --> 00:06:12,437
In the eighties, Postgres started as a post ingress
project, and even from the very beginning it had a lot of

94
00:06:12,437 --> 00:06:15,407
the foundations I think have proved very important today.

95
00:06:15,412 --> 00:06:18,467
So things like its extensibility and vcc.

96
00:06:18,756 --> 00:06:22,677
Then we've got a few other important dates
here that I think we might come back to.

97
00:06:22,677 --> 00:06:25,977
We've got Microsoft SQL Servers first version in 89.

98
00:06:26,177 --> 00:06:34,252
then we've got Postgres being released under an MIT style
license, which I believe is the Postgres license in, as 94.

99
00:06:34,642 --> 00:06:36,202
I think that's been really important.

100
00:06:36,682 --> 00:06:43,344
Then,  Postgres 95 added SQL support or sql
support feels like a really important date.

101
00:06:43,944 --> 00:06:45,531
And then, I've got a bit of a gap.

102
00:06:45,531 --> 00:06:49,671
In fact, actually another important thing
in 95 was my SQL version one came out.

103
00:06:49,905 --> 00:06:51,165
So I think that lays a lot.

104
00:06:51,165 --> 00:06:53,775
Nikolay: 95 was absolutely amazing year.

105
00:06:53,775 --> 00:06:57,615
Actually, internet started to work actually that year, I think.

106
00:06:58,005 --> 00:07:07,861
And not only you mentioned PSUs and my, but if we look at
languages, Java, Java Script, PHP and Ruby, all were born in 95.

107
00:07:08,491 --> 00:07:09,091
Can you imagine?

108
00:07:09,271 --> 00:07:09,811
Michael: Wow.

109
00:07:09,991 --> 00:07:10,171
Yeah.

110
00:07:10,171 --> 00:07:12,751
And Windows 95 was a massive release as well, wasn't it?

111
00:07:12,751 --> 00:07:12,871
Nikolay: Yeah.

112
00:07:12,871 --> 00:07:20,322
So it was like, I think 95 and maybe 2014,
some changing years, like in many areas.

113
00:07:20,676 --> 00:07:20,916
Michael: Yeah.

114
00:07:21,396 --> 00:07:25,075
So I was gonna say that, , it's  probably massively overgeneralizing.

115
00:07:25,075 --> 00:07:32,455
And I think your free BSD example is great because for any
small system there are always going to be some really passionate

116
00:07:32,455 --> 00:07:35,315
people that there have been people that have been using Postgres.

117
00:07:35,795 --> 00:07:41,245
Nikolay: I want to give this whole time, I want to take
my words back, not FreeBSD, but Linux versus  Windows.

118
00:07:41,305 --> 00:07:43,045
This is a better feeling actually.

119
00:07:43,135 --> 00:07:43,435
Michael: Okay.

120
00:07:43,668 --> 00:07:44,268
Yes.

121
00:07:44,374 --> 00:07:50,764
I guess the thing here though is we've got, with Postgres, we've got
a, a changing of the guard I feel a little bit, whereas I don't think

122
00:07:50,764 --> 00:07:54,614
that's happened with Linux and Windows for personal computers yet,

123
00:07:55,244 --> 00:07:56,384
Nikolay: maybe Okay.

124
00:07:56,637 --> 00:08:05,270
Slowly this technology is winning more and more hearts
because it's just better because it follows better principles.

125
00:08:05,270 --> 00:08:08,180
For example, very strong CLI everywhere.

126
00:08:08,240 --> 00:08:17,002
PSGs has excellent cli and Linux has excellent cli and  principles like
don't write too much if everything is fine, better keep silence, right?

127
00:08:17,032 --> 00:08:21,250
Like if success just keeps silence, exit
code, like return code, and that's it.

128
00:08:21,507 --> 00:08:26,137
While other tools can very chatty, right?

129
00:08:26,438 --> 00:08:34,148
This is small things and these principles, uh, very like
Linux is, is all about a lot of CLI tools, so many tools.

130
00:08:34,574 --> 00:08:40,506
And Postgres has very strong psql and a lot of
things surrounded there are many common things here.

131
00:08:40,686 --> 00:08:44,912
So FreeBSD maybe it's too different compared to Linux.

132
00:08:45,619 --> 00:08:46,891
Michael: Yeah, fair enough.

133
00:08:47,221 --> 00:08:58,454
So,  my understanding is that for a lot of  these early years, if you had a
serious workload,  chances are you're gonna be running on a paid for product.

134
00:08:58,514 --> 00:09:03,254
Probably something like either Oracle, maybe even ibm.

135
00:09:03,584 --> 00:09:12,156
, but then as time went on, SQL Server or Microsoft SQL Server became
the main competitor to Oracle for these big serious workloads.

136
00:09:12,726 --> 00:09:21,523
And then for smaller workloads,  or for hobby projects,
lamp Stack became popular with MySQL as the database.

137
00:09:21,823 --> 00:09:28,153
Uh, I think things like WordPress picking MySQL as
its backend seemed really important for its adoption.

138
00:09:28,483 --> 00:09:37,040
So I think we had like a, a phase where if you had money and you were a
serious company, you'd go for one of these paid for proprietary systems.

139
00:09:37,162 --> 00:09:44,446
And if you didn't or you were a startup, maybe if you,
if you wanted sequel database, you'd go with MySQL.

140
00:09:44,751 --> 00:09:48,141
Is that roughly your understanding, like how you saw it as well?

141
00:09:48,501 --> 00:09:58,028
Nikolay: Yeah, and also important availability and for, for those
who don't want to pay some websites and like apps and so on, startups

142
00:09:58,155 --> 00:10:06,645
for them it's important availability and how easy, like the cost
of maintenance when you start, like how easy to start and so on.

143
00:10:06,645 --> 00:10:12,071
And for Postgres I remember very well, it was for a
long time it was blamed for high barrier of entry.

144
00:10:12,345 --> 00:10:16,215
So it's very difficult for new users to start with it.

145
00:10:16,701 --> 00:10:19,491
For example, I installed it and I cannot connect to it.

146
00:10:19,551 --> 00:10:22,281
This was quite long problem for podcast.

147
00:10:22,472 --> 00:10:27,632
Something for maybe smart people, but barrier
so high, why should we spend time for it?

148
00:10:27,825 --> 00:10:35,400
MySQL is, it's easy to start and easy to maintain in
the beginning, but I remember actually in 2009 or 10,

149
00:10:35,460 --> 00:10:38,880
I attended MySQL, uh, user group in Moscow, Russia.

150
00:10:39,450 --> 00:10:48,869
And I remember that it was, about performance and they, at the time
already, they compared themselves with Postgres and they  admitted that

151
00:10:48,869 --> 00:10:52,639
Postgres is winning in performance for one node at that time very well.

152
00:10:52,639 --> 00:10:59,990
Like they said, you know, Postgres is better here, here, here,
here, because at that group, MySQL developers were, I mean, hackers.

153
00:11:00,080 --> 00:11:07,678
They also were there and they are discussing like we
compare my SQL with  and we are losing what to do about.

154
00:11:08,106 --> 00:11:13,376
. And it was interesting because also Postgres had
the image that, uh, it's also slower than MySQL.

155
00:11:13,656 --> 00:11:16,633
It still has in many minds actually, but it's not so.

156
00:11:17,111 --> 00:11:24,125
And it, it's interesting, I realized that,
Postgres is good even among MySQL users and fans.

157
00:11:24,368 --> 00:11:28,418
So it's controversial, but I think for popularity it's super important.

158
00:11:28,638 --> 00:11:34,488
how accessible it is, for example, does your operational system
already have it installed or it can be installed in one line?

159
00:11:34,801 --> 00:11:43,952
and, uh, also providers, if you create some website, uh, you have
some hosting, Is MySQL available there or Postgres available there?

160
00:11:44,002 --> 00:11:49,392
If only MySQL, and it was so in many cases, you will
prefer MySQL because it's available, you don't need to

161
00:11:49,392 --> 00:11:52,551
install it and provide gives it to you very quickly.

162
00:11:52,551 --> 00:11:53,421
It's important, right?

163
00:11:53,421 --> 00:11:55,191
For small, small projects.

164
00:11:55,386 --> 00:11:56,376
? 
Michael: Yeah, I think so.

165
00:11:56,376 --> 00:12:05,281
I think developer experience is important, but, but I also might argue
that Postgres hasn't changed that much from a database point of view, But

166
00:12:05,281 --> 00:12:14,046
I think a lot of frameworks and cloud providers and things have really
helped there in terms of making it easier to spin up or to connect to.

167
00:12:14,076 --> 00:12:15,576
So I, I'm not, Yeah, I don't know.

168
00:12:15,576 --> 00:12:20,110
Have you, did, have you noticed a change in the, tooling,
for example, like some of the issues you mentioned,

169
00:12:20,115 --> 00:12:22,783
like being able to connect to it becoming more easy?

170
00:12:22,783 --> 00:12:23,713
Nikolay: Well, I don't know.

171
00:12:23,713 --> 00:12:30,658
Like, it's hard to me to, like, I, I understand like,
like availability is super important, but I remember when

172
00:12:30,658 --> 00:12:33,088
I started Postgres, of course, I compiled from source.

173
00:12:33,198 --> 00:12:34,578
I could not install it from package.

174
00:12:35,004 --> 00:12:39,867
Maybe packages were not available, but
over time it became much more available.

175
00:12:39,927 --> 00:12:49,897
Like all Linux distributions started to have packaging, up to date
packaging with all contr models, all popular models of course, and so on.

176
00:12:50,197 --> 00:12:58,517
Of course, ye and up systems are most important here, and they
both have POEs available there, but you don't need to compile it.

177
00:12:58,560 --> 00:13:05,453
and this means that most admin on hosting,  they
start to just add it because why not?

178
00:13:05,453 --> 00:13:06,683
It's, it's there, right?

179
00:13:06,683 --> 00:13:11,383
So somehow it was, I think it was slow revolution and, how to connect.

180
00:13:11,505 --> 00:13:13,551
we have some small documentation.

181
00:13:13,641 --> 00:13:20,999
For example, I remember I always end up, when explaining people
how to install and connect Pogo on Linux, on, on Bo, on CentOS.

182
00:13:21,189 --> 00:13:21,959
I, I always.

183
00:13:22,185 --> 00:13:30,704
Found the digital ocean documentation like already, like maybe up to 10 years
ago, they had excellent to date documentation, how to upgrade a new version.

184
00:13:31,064 --> 00:13:40,603
And uh, so this howto documentation actually pause this documentation
official documentation is still lacking this halto, types of documents

185
00:13:40,993 --> 00:13:45,345
describing for particular linear distribution how to do particular tasks.

186
00:13:45,499 --> 00:13:48,229
But others like digital ocean, they fill this gap.

187
00:13:48,589 --> 00:13:52,601
And, this is important I think, and uh, it slow process.

188
00:13:52,788 --> 00:13:59,358
Michael: I think this takes us really nicely onto some reasons
why Postgres did then succeed in spite of those things and why

189
00:13:59,358 --> 00:14:02,778
it has becomes and is becoming more and more popular each year.

190
00:14:03,178 --> 00:14:07,768
I wanted to take, take us back time wise to a few other important dates.

191
00:14:08,218 --> 00:14:12,238
Um, I looked at the, I think PostGIS has been really important for Postgres.

192
00:14:12,268 --> 00:14:18,266
I think a lot of people describe it as even compared to the
different commercial offerings out there, the most advanced,

193
00:14:18,378 --> 00:14:22,753
GIS, uh, GIS system out there, and that's a Postgres extension.

194
00:14:22,933 --> 00:14:29,035
And I think if it wasn't for Postgres extensibility
at a deep level, That wouldn't be possible.

195
00:14:29,215 --> 00:14:30,865
So I think that's been huge.

196
00:14:30,895 --> 00:14:37,599
And it came out in 2005, which I couldn't believe, and I, I don't
know when it became, or when it started to become competitive with

197
00:14:37,599 --> 00:14:40,769
the commercial offerings, but that feels really important to me.

198
00:14:41,069 --> 00:14:48,604
And then the, the other dates that I thought were super interesting
were couldn't believe it was as early as 2007 that Heroku chose

199
00:14:48,694 --> 00:14:53,030
Postgres as its, default, or the database that they offered in 2007.

200
00:14:53,030 --> 00:14:53,630
Could you believe?

201
00:14:53,840 --> 00:14:57,170
But yeah, I would then point back at why could they do that?

202
00:14:57,470 --> 00:15:00,830
Probably because of its MIT style license.

203
00:15:01,010 --> 00:15:02,750
It could, it was extremely permissive.

204
00:15:02,750 --> 00:15:05,540
And they could do that without having to consult with anybody.

205
00:15:05,760 --> 00:15:12,335
They could choose it because of those decisions that Postgres made
early on, it was reliable and very usable and all those things.

206
00:15:12,695 --> 00:15:19,085
And they could take away some of those developer experience
problems of getting started with it cos they could implement

207
00:15:19,085 --> 00:15:21,665
and make them easy for their, the people on, on Heroku.

208
00:15:21,915 --> 00:15:22,305
Nikolay: Right.

209
00:15:22,305 --> 00:15:27,225
And, uh, this influenced a lot of rub, develop, rub engineers, right.

210
00:15:27,275 --> 00:15:32,705
Ruby's support was excellent with Heroku and
it, it's so natural for you to choose Postgres.

211
00:15:32,705 --> 00:15:37,655
If you, if you already chose Ruby and chose hiku, it was number one choice.

212
00:15:37,655 --> 00:15:38,105
Yeah, of course.

213
00:15:38,452 --> 00:15:41,602
so this like provider symptoms is very important.

214
00:15:42,002 --> 00:15:52,184
I agree with you with PostGIS and extensibility and features, like always
parts  but it's only parts of  like, only small parts of whole puzzle.

215
00:15:52,189 --> 00:15:52,424
Right.

216
00:15:52,784 --> 00:16:00,767
But, what happened with MySQL, I think also important because
MySQL , couldn't consider anymore as free software at some point.

217
00:16:00,767 --> 00:16:01,037
Right.

218
00:16:01,470 --> 00:16:02,530
As total free.

219
00:16:02,530 --> 00:16:03,090
Michael: Well, I think this might.

220
00:16:03,815 --> 00:16:11,082
This might be my,  if it's not the biggest, I think this might be the
biggest bit of luck that Postgres got in the whole, you know, I think

221
00:16:11,082 --> 00:16:15,285
everything else it's, from deliberate choices and being very, very good.

222
00:16:15,675 --> 00:16:23,023
But this I think was quite lucky that of all the companies that
could have bought, uh, well, so Oracle acquired Sun, didn't they?

223
00:16:23,426 --> 00:16:28,956
which included MySQL and that could have gone a few different ways.

224
00:16:29,166 --> 00:16:32,676
But, , people had a distrust of Oracle already, I think.

225
00:16:32,816 --> 00:16:42,700
And crucially, one of the creators of Myco, the main person
I believe behind it, split off to create my, uh, Maria db.

226
00:16:43,671 --> 00:16:47,481
My understanding is he couldn't choose as permissive license as my sql.

227
00:16:47,481 --> 00:16:54,355
We didn't want to, to avoid my SQL taking all of
the,  changes from his fork onto, onto theirs.

228
00:16:54,539 --> 00:17:03,842
So that split in the community, in the development and in the
trust of the community, I think really opened an opportunity

229
00:17:03,847 --> 00:17:07,412
for Postgres, like to become the, the default choice.

230
00:17:07,412 --> 00:17:12,892
If you, if you were a startup and you needed a free database,
or you wanted you, maybe you couldn't afford SQL server

231
00:17:12,892 --> 00:17:16,142
or Oracle, or maybe you, you really valued open source.

232
00:17:16,142 --> 00:17:19,082
I think suddenly people were questioning should we go with that?

233
00:17:19,532 --> 00:17:24,062
And then when people were looking for options,
Postgres was a really good alternative.

234
00:17:24,804 --> 00:17:27,186
So, we had a little internet outage, but we're back.

235
00:17:27,489 --> 00:17:28,989
where we left off was around

236
00:17:29,019 --> 00:17:35,889
Nikolay: let's, we, we haven't, we considered like growing
popularity as some well known fact, but let's discuss

237
00:17:35,894 --> 00:17:39,909
why we think, uh, it's obvious that Postgres is winning.

238
00:17:40,359 --> 00:17:43,404
I have two sources.

239
00:17:43,614 --> 00:17:48,450
One is db engines.com, and their methodology is quite, complex.

240
00:17:48,450 --> 00:17:54,665
Maybe not clear to me,  but still this is people
consider this as a reliable source of truth.

241
00:17:54,665 --> 00:18:01,498
And obviously Pogo is growing, growing pot is growing good,
but there is another source of, information, which, uh,

242
00:18:01,498 --> 00:18:05,758
is very simple and, uh, methodology, quiet step forward.

243
00:18:06,098 --> 00:18:09,091
It's, uh, Hacker News, job postings.

244
00:18:09,418 --> 00:18:14,904
they have every month they have who is hiring,
and usually it's more than 1000 replies.

245
00:18:15,789 --> 00:18:18,879
It includes everything, but mostly from startups.

246
00:18:19,089 --> 00:18:22,846
Sometimes it's grown startups, sometimes it's very like new startup.

247
00:18:23,110 --> 00:18:23,290
Yeah.

248
00:18:23,320 --> 00:18:26,742
But, uh, there is HN trends, hack news trends.com.

249
00:18:26,930 --> 00:18:32,382
Uh, we will provide link and they, from
time to time, they analyze all those, texts.

250
00:18:32,442 --> 00:18:33,492
It's just text, right?

251
00:18:33,821 --> 00:18:36,473
And extract technologies, Everything.

252
00:18:36,473 --> 00:18:41,693
Like from react to remote world, how many postings have remote?

253
00:18:42,053 --> 00:18:54,009
So can you imagine POGS has 15% in all job postings, including marketing
people, support people, non-technical people at all, And this is 15.

254
00:18:54,009 --> 00:18:55,299
It's very, very high.

255
00:18:55,299 --> 00:18:56,259
I think it's top 10.

256
00:18:56,439 --> 00:19:01,439
And it, like, it's on par with word remote
probably is the number one still after Covid.

257
00:19:01,599 --> 00:19:03,489
But reactors react also.

258
00:19:03,642 --> 00:19:04,572
quite a word, right?

259
00:19:05,111 --> 00:19:11,981
GitHub starts is also some reliable source of truth and
Supabase, which I consider are the champion in terms

260
00:19:11,981 --> 00:19:16,396
of productizing, pog itself and many extensions of it.

261
00:19:16,703 --> 00:19:21,906
And products like PostgREST, they productize it
very well and they have a lot of GitHub stars.

262
00:19:21,906 --> 00:19:28,866
I think it's how many dozens of thousands
And the growth is better than react growth.

263
00:19:29,379 --> 00:19:29,619
Yeah.

264
00:19:29,649 --> 00:19:30,009
Right.

265
00:19:30,189 --> 00:19:32,739
These, all these numbers are quite reliable.

266
00:19:32,889 --> 00:19:36,099
I mean, these, uh, drop postings and hub stops.

267
00:19:36,436 --> 00:19:36,736
Michael: Yeah.

268
00:19:36,856 --> 00:19:39,321
I think it's very hard to refute that.

269
00:19:39,321 --> 00:19:47,066
And I think there's also a growing feeling on places like Hack and
News, but I, I know it's a very biased source, but the sentiment

270
00:19:47,066 --> 00:19:50,366
around Postgres feels like it really changed in that timeframe as well.

271
00:19:50,366 --> 00:19:59,996
It wasn't just that these numbers went up, it also felt like there was almost
a, not quite a backlash against the NoSQL movement, but I think people real,

272
00:19:59,996 --> 00:20:08,186
like there was like a phase that people went through where they, where the
words big data got thrown around a lot and no sequel gained a lot of momentum.

273
00:20:08,336 --> 00:20:08,666
Mongo

274
00:20:08,666 --> 00:20:10,706
Nikolay: no sequel is interesting.

275
00:20:10,706 --> 00:20:11,726
Mongo is interesting.

276
00:20:11,786 --> 00:20:20,414
Uh, some people think that json is the main reason why
Paulus is winning hearts of developers, and I think it's a

277
00:20:20,414 --> 00:20:25,064
very important contributor, but, uh, maybe not the main one.

278
00:20:25,524 --> 00:20:36,056
we chatted a little bit before, before we started this episode, and it
looks like if, if you check, Jason appeared in  Jason B appeared in 9.4.

279
00:20:36,373 --> 00:20:48,198
But if you check when the spike, of popularity happened, according to db
engines.com, data, it happened when RDS released Postgres version, right?

280
00:20:48,612 --> 00:20:49,212
Michael: Yes.

281
00:20:49,542 --> 00:20:53,142
Now, I, I think this is a really interesting chicken and egg problem.

282
00:20:53,172 --> 00:20:57,732
Now did RDS have to add Postgres because it was gaining popularity?

283
00:20:58,092 --> 00:21:00,775
Did, Postgres popularity spike because Amazon.

284
00:21:00,775 --> 00:21:02,365
Nikolay: They chose it themselves.

285
00:21:02,575 --> 00:21:11,665
They chose it themselves for their, like, as a, they chose pogs
and, and actually Aurora version of it, which is quite different.

286
00:21:12,115 --> 00:21:19,970
But they chose poss, not, not a, my, they chose Aaro
PSGs, as the database for themselves, instead of Oracle.

287
00:21:19,970 --> 00:21:20,240
Right.

288
00:21:20,650 --> 00:21:22,960
Michael: Well, I think this is, yeah, this is a critical point.

289
00:21:22,960 --> 00:21:26,118
And yeah, you brought up Apple, in our previous chat as well.

290
00:21:26,123 --> 00:21:33,878
So big huge companies choosing to migrate to Postgres
around that time definitely had a big effect.

291
00:21:34,132 --> 00:21:35,332
Jason b I agree.

292
00:21:35,332 --> 00:21:39,767
I think the biggest, impact Jason B had was, it gave people an answer.

293
00:21:39,977 --> 00:21:46,037
They didn't have to, If they needed a document store,
they didn't have to have MongoDB in addition to progress.

294
00:21:46,277 --> 00:21:50,237
They could, they had a really good answer for
the team that wanted to do some document storage.

295
00:21:50,237 --> 00:21:52,037
They could say, Well, you can put it in Postgres.

296
00:21:52,277 --> 00:21:54,497
And we have, you know, indexing support for it.

297
00:21:54,497 --> 00:21:58,527
And there's, it became, , an easy answer to anybody, on that front.

298
00:21:58,527 --> 00:21:59,547
But yeah, I agree with you.

299
00:21:59,547 --> 00:22:02,168
It's been important, but  not the primary factor.

300
00:22:02,348 --> 00:22:04,785
Nikolay: Poss is good in reacting to challenges.

301
00:22:04,882 --> 00:22:13,552
you mentioned, uh, 1995 when sequel support was added Without sql,
it wouldn't survive, I guess, in terms of very popular system.

302
00:22:13,972 --> 00:22:18,929
Then, there was some hype, like object databases, object relational databases.

303
00:22:18,934 --> 00:22:24,490
Paul also adopted some things, and it's still considered
as object, object, relational databases and has some.

304
00:22:24,708 --> 00:22:27,528
features and behavior of objectional system.

305
00:22:27,831 --> 00:22:32,051
but then, semi-structured hype started and it started with XML actually.

306
00:22:32,501 --> 00:22:36,801
And, uh, some, Russian developers OV and, uh, Tega.

307
00:22:36,911 --> 00:22:39,791
They added support of age store in 2004.

308
00:22:39,881 --> 00:22:40,511
Can you imagine?

309
00:22:41,141 --> 00:22:51,439
Very long ago, I personally participated in bringing XML support to PSGs
but both XML right now may be not that relevant because json is here

310
00:22:51,439 --> 00:22:56,085
already and it's standard defacto for unstructured or semistructured data.

311
00:22:56,375 --> 00:22:58,775
So PSGs is good in reacting.

312
00:22:58,972 --> 00:23:02,332
PSGs is doing hard work in interacting to challenges.

313
00:23:02,855 --> 00:23:03,935
Michael: I completely agree.

314
00:23:03,935 --> 00:23:08,922
And I think that leads me to my, I've got two
more things I wanted to make sure we covered.

315
00:23:09,245 --> 00:23:16,165
One is that I think a lot of things we've discussed so
far explain how Postgres was taking over from MyQ for the

316
00:23:16,165 --> 00:23:19,135
projects that we're considering a free open source database.

317
00:23:19,365 --> 00:23:25,889
But it doesn't yet explain how, uh, larger companies are
choosing it instead of Oracle, instead of SQL Server.

318
00:23:26,129 --> 00:23:30,149
And that I would say it is another reacting.

319
00:23:30,479 --> 00:23:31,799
Yeah, but it's, it, it's a

320
00:23:31,799 --> 00:23:34,859
Nikolay: larger, companies don't care about why popularity.

321
00:23:34,859 --> 00:23:35,189
Right.

322
00:23:35,189 --> 00:23:39,119
They need, they, they care in terms of how many engineers they could hire.

323
00:23:39,359 --> 00:23:39,449
Yeah.

324
00:23:39,449 --> 00:23:44,879
But also sometimes how we see some companies
prefer languages like lan, for example.

325
00:23:44,909 --> 00:23:45,739
What's Alan?

326
00:23:45,749 --> 00:23:53,009
And they still, they still keep or scholar some big companies
who scale or lung, not very popular, but they choose it and

327
00:23:53,009 --> 00:23:58,489
they bring expertise inside so they care less about hype.

328
00:23:59,194 --> 00:23:59,644
Michael: Yes.

329
00:23:59,764 --> 00:24:08,147
But, things that did matter to them, I think Postgres
started to ship around that same, so 2016, 9.6 parallel

330
00:24:08,147 --> 00:24:13,127
queries came in, 2017 we had partitioning logical replication

331
00:24:13,247 --> 00:24:16,817
Nikolay: but by 20 16, 17, uh, the game already that was done.

332
00:24:17,657 --> 00:24:19,297
Michael: So the game versus my,

333
00:24:19,357 --> 00:24:22,397
Nikolay: the game was done in 2014 when RDS

334
00:24:23,267 --> 00:24:24,887
Michael: versus MySQL yes.

335
00:24:24,887 --> 00:24:29,717
But I think versus Oracle and SQL Server, No, I think actually these large

336
00:24:29,717 --> 00:24:30,467
Nikolay: different opinion.

337
00:24:30,857 --> 00:24:31,787
Michael: Okay, interesting.

338
00:24:31,787 --> 00:24:39,557
Nikolay: I observed in Russia when I, I, I returned to Russia for
like 10 months or so because of these issues and economy issues.

339
00:24:39,557 --> 00:24:46,754
After Crimea invasion, I return to Russia and I was
bought and,  decided to relaunch, uh, Russian user group.

340
00:24:47,177 --> 00:24:50,917
And, I asked, uh, which big company can host us?

341
00:24:51,007 --> 00:24:53,107
And my laar Andex both.

342
00:24:53,482 --> 00:25:00,832
Said yes, and by, I chose Yandex and, but GIX said, Can we also
squeeze a couple of like 10 minutes of small lightning talk?

343
00:25:01,249 --> 00:25:02,309
I, I said, Of course.

344
00:25:02,339 --> 00:25:03,659
What, what, what's the topic?

345
00:25:03,659 --> 00:25:07,610
And they said how we migrated Yandex mail from Oracle to pogo.

346
00:25:08,370 --> 00:25:11,640
And then on this very first event, they gave this talk.

347
00:25:11,640 --> 00:25:12,570
It was amazing.

348
00:25:12,720 --> 00:25:19,530
And I remember in the first row also a guy from ATO
was, and they said, ATO is running POGO as well.

349
00:25:19,787 --> 00:25:23,507
these companies are big and they don't care a lot about hype.

350
00:25:23,927 --> 00:25:26,287
And they also they are not like enterprise.

351
00:25:26,287 --> 00:25:27,187
They can count money.

352
00:25:27,187 --> 00:25:28,177
The startups, right?

353
00:25:28,177 --> 00:25:30,097
So they can count money and so on.

354
00:25:30,097 --> 00:25:39,427
And all day in 2014, they already, they also don't care about this replacement
for political reasons, replacement of Oracle and SQL Server in Russia.

355
00:25:39,757 --> 00:25:41,497
They didn't care about it at all at that time.

356
00:25:41,707 --> 00:25:42,637
It was before actually.

357
00:25:43,297 --> 00:25:47,227
They chose it already and they chose it due to many reasons.

358
00:25:47,227 --> 00:25:48,796
And they were already.

359
00:25:49,044 --> 00:25:51,650
and they, made decision in 2014.

360
00:25:51,967 --> 00:25:52,207
Right.

361
00:25:52,450 --> 00:25:54,670
And that I was completely surprised.

362
00:25:55,100 --> 00:25:55,280
Michael: Yeah.

363
00:25:55,630 --> 00:25:58,490
So I, It's kept growing since then though.

364
00:25:58,490 --> 00:25:58,790
Right.

365
00:25:58,795 --> 00:26:07,610
So I think there have been an increasing number of use cases that can
switch to Postgres from Oracle or SQL Server, or maybe companies that switch

366
00:26:07,610 --> 00:26:11,840
for new projects because the performance is on par for their workloads

367
00:26:11,840 --> 00:26:15,320
Nikolay: because they now have the same, the features, the performance.

368
00:26:15,320 --> 00:26:15,560
Right.

369
00:26:15,830 --> 00:26:15,950
Yeah.

370
00:26:15,950 --> 00:26:16,910
Let's agree with this.

371
00:26:16,910 --> 00:26:23,490
Like, uh, when GIX was ready to discuss, how they migrate
from Oracle to Postgres, by the way, later then gave a

372
00:26:23,490 --> 00:26:27,150
talk at Pcon in Ottawa, and those were, that's very good.

373
00:26:27,150 --> 00:26:27,390
Talk.

374
00:26:27,620 --> 00:26:32,480
Like next year, maybe 2015, but by that time they're already working on it.

375
00:26:32,480 --> 00:26:32,870
A couple of.

376
00:26:33,350 --> 00:26:35,180
So they started in 2012.

377
00:26:35,450 --> 00:26:45,710
This brings us us back maybe to this acquisition of my sequel by
Oracle, like indirect acquisition, like chain of acquisitions in 2010.

378
00:26:46,040 --> 00:26:56,077
And also, I consider Apple's decision to migrate internal things
from my sequel to poss in 2011 is also some turning point, right?

379
00:26:56,077 --> 00:26:56,767
Some signal.

380
00:26:56,797 --> 00:26:59,137
Very strong signal, like some enterprise decided.

381
00:26:59,617 --> 00:27:06,075
But we also have a case when some big company, big
startup, maybe one of the biggest ones, migrated from

382
00:27:06,151 --> 00:27:08,761
my SQL to Postgres and a couple of years back, right?

383
00:27:08,761 --> 00:27:15,211
You know what I'm, I'm talking about the
other direct Uber case from mys and then back.

384
00:27:15,811 --> 00:27:18,491
Michael: Back was the one that got a lot of publicity,

385
00:27:18,511 --> 00:27:22,711
Nikolay: A lot of attention, yes, but of good criticism as well by the way.

386
00:27:23,371 --> 00:27:23,641
Michael: Yeah.

387
00:27:24,061 --> 00:27:28,021
I had one more point that I think it kind of takes us into the future as well.

388
00:27:28,021 --> 00:27:34,681
And that's that I think Postgres has the last few years,
it's, it's released major improvements every year.

389
00:27:34,711 --> 00:27:37,441
Not, not, I'm not just talking about the fact they call them major releases.

390
00:27:37,741 --> 00:27:41,851
They have been big improvements every major version every year.

391
00:27:42,241 --> 00:27:45,355
I used to product manage, products for SQL seven, Oracle.

392
00:27:45,501 --> 00:27:48,181
And  they didn't come out with major versions every year.

393
00:27:48,301 --> 00:27:48,871
They didn't.

394
00:27:48,961 --> 00:27:49,231
Right.

395
00:27:49,261 --> 00:27:51,541
It was every two or three years at a push.

396
00:27:51,541 --> 00:27:55,238
And even then, they didn't always include game changing features.

397
00:27:55,478 --> 00:28:02,378
So I think it's, it's very interesting, the speed of the, it's,
uh, sometimes considered slow and I, I think that's unfair.

398
00:28:02,768 --> 00:28:09,218
But the speed of improvement with progress, I think is probably
the, the highest or the relational databases at the moment.

399
00:28:09,478 --> 00:28:11,488
Nikolay: And also quite well structured as well.

400
00:28:11,698 --> 00:28:19,088
Like, I mean, like it's impossible to see some feature, like, you
know, in my sequel They had check constraints, which did nothing.

401
00:28:19,208 --> 00:28:21,968
They didn't check anything until couple of years ago.

402
00:28:21,968 --> 00:28:23,576
They brought it in minor release.

403
00:28:24,006 --> 00:28:29,253
How come you, you, you add feature to minor
release, like it's impossible in positives, right?

404
00:28:29,593 --> 00:28:29,773
Michael: Yeah.

405
00:28:29,773 --> 00:28:32,773
Nikolay: It's very, very well structured and principles are followed.

406
00:28:33,079 --> 00:28:33,439
It's good.

407
00:28:33,469 --> 00:28:33,589
Yeah.

408
00:28:33,739 --> 00:28:35,239
But there are many downsides as well.

409
00:28:35,239 --> 00:28:43,669
Like maybe we should talk about it a different time about the process
of development and I will explain why I cannot participate in it.

410
00:28:44,033 --> 00:28:44,243
Michael: Yeah.

411
00:28:44,243 --> 00:28:46,643
That, that will be an fascinating discussion.

412
00:28:46,643 --> 00:28:47,003
Right.

413
00:28:47,003 --> 00:28:49,493
Is there anything else on the future that you wanted to talk about?

414
00:28:49,493 --> 00:28:50,663
Like why, Why would I

415
00:28:50,663 --> 00:28:53,783
Nikolay: Future, nearest future is bright, distant future.

416
00:28:53,939 --> 00:28:59,358
I have concerns and because like one of
those concerns is this development process.

417
00:28:59,848 --> 00:29:05,021
It's outdated through email only the strongest, the biggest will survive.

418
00:29:05,708 --> 00:29:09,794
And I think it, it, it's not attractive to many, many people who could help.

419
00:29:10,504 --> 00:29:13,564
Michael: I strongly disagree, and I'm
looking forward to discussing that with you.

420
00:29:13,864 --> 00:29:14,074
Nikolay: Yeah.

421
00:29:14,074 --> 00:29:18,724
Let's, let's, we don't have time to right now
to dive into it, but let's dive in another time.

422
00:29:18,724 --> 00:29:26,088
But I, I have my own doubt, so I'm still
like, I'm still big fan, like last 18 years.

423
00:29:26,148 --> 00:29:35,228
I, I choose pogs for every, I recommend choosing POGS for
everyone who deals with LTP for analytical there are questions.

424
00:29:35,318 --> 00:29:40,118
But for OLTP workloads Postgres number one, default choice.

425
00:29:40,508 --> 00:29:46,298
We have cases when company grows to multi billion dollar evaluation.

426
00:29:46,298 --> 00:29:47,408
We have many such cases.

427
00:29:47,828 --> 00:29:49,118
We've just single data.

428
00:29:49,748 --> 00:29:51,488
Michael: Yeah, it's scale up.

429
00:29:51,698 --> 00:29:52,988
Nikolay: So yeah, so easy.

430
00:29:53,291 --> 00:29:57,091
And, Pogo has so many features that others don't have, so just choose it.

431
00:29:57,360 --> 00:30:08,575
and as the bottom line, let's, like, in my opinion, as with any startup,
we, which became great company, as we listen to their founders, there is,

432
00:30:08,575 --> 00:30:13,405
by the way, good podcast called, uh, How I Built This by NPR, you know?

433
00:30:13,465 --> 00:30:13,675
Right, Yeah.

434
00:30:14,088 --> 00:30:24,015
like Starbucks story and many, many others like Instagram story, people
usually answer why success combination of hard work and a lot of luck.

435
00:30:24,301 --> 00:30:33,465
So I consider this my, uh, unfortunate, timeline as a big
luck of Postgres, but also we have a lot of hard work.

436
00:30:33,465 --> 00:30:34,995
We have like a hundred percent.

437
00:30:34,995 --> 00:30:35,531
So yeah.

438
00:30:35,855 --> 00:30:36,935
Michael: That's a really nice ending.

439
00:30:37,135 --> 00:30:39,185
Well, thank you everybody for joining us.

440
00:30:39,485 --> 00:30:42,545
Thank you again, Nikolay and, uh, see you next week.

441
00:30:43,078 --> 00:30:43,708
Nikolay: Thank you.

442
00:30:43,708 --> 00:30:49,618
Uh, don't, don't forget to follow, comment, like,
and provide feedback and Twitter or anywhere else.

443
00:30:49,828 --> 00:30:56,731
We'll listen to you we, we already made several episodes
based on feedback, so we are ready to continue this practice.

444
00:30:57,305 --> 00:30:57,545
Michael: Yep.

445
00:30:58,625 --> 00:30:59,375
Nikolay: Thank you so much.

446
00:30:59,435 --> 00:31:00,605
Thank you for our s Bye.

447
00:31:00,605 --> 00:31:00,785
Bye.