1
00:00:00,060 --> 00:00:02,440
Michael: Hello and welcome to Postgres.FM,
a weekly show about
2
00:00:02,440 --> 00:00:03,300
all things PostgreSQL.
3
00:00:03,560 --> 00:00:05,240
I am Michael, founder of pgMustard.
4
00:00:05,280 --> 00:00:06,800
This is Nikolay, founder of Postgres.AI.
5
00:00:07,200 --> 00:00:09,440
Hey Nikolay, what are we talking
about this week?
6
00:00:09,960 --> 00:00:14,940
Nikolay: Hi Michael, I thought
sometimes it's a good idea to
7
00:00:15,060 --> 00:00:17,280
reconsider decisions, you know.
8
00:00:18,620 --> 00:00:23,860
And if you chose some tool or some
project to work with, sometimes
9
00:00:23,860 --> 00:00:30,920
it's good to look back at recent
experience and further back
10
00:00:31,340 --> 00:00:35,820
in the past, why you made this
decision and think is it still
11
00:00:35,860 --> 00:00:36,720
the right decision?
12
00:00:37,640 --> 00:00:43,220
And should you keep using this
product or system or project or
13
00:00:43,220 --> 00:00:47,060
anything or tool or it's time to
change it?
14
00:00:47,980 --> 00:00:50,140
Michael: Yeah, I hope you're not
having second thoughts.
15
00:00:51,660 --> 00:00:52,940
Nikolay: You can doubt anything.
16
00:00:53,940 --> 00:00:54,660
Why not?
17
00:00:55,960 --> 00:00:59,220
Michael: Just I had on my list
of people I expected to doubt
18
00:00:59,220 --> 00:01:04,760
things Nikolay Samokhvalov doubting
Postgres was very, very low
19
00:01:04,760 --> 00:01:05,700
down my list.
20
00:01:06,820 --> 00:01:10,120
Nikolay: Okay, so, by the way,
good pronunciation of my last
21
00:01:10,120 --> 00:01:10,620
name.
22
00:01:11,760 --> 00:01:12,260
Yes.
23
00:01:12,340 --> 00:01:13,580
Yeah, thank you.
24
00:01:14,540 --> 00:01:19,940
And yeah, so, honestly, it's not
a joke.
25
00:01:20,800 --> 00:01:23,800
I'm thinking, should I still use
Postgres?
26
00:01:25,640 --> 00:01:29,120
And for me, of course, it's a much
more fundamental question,
27
00:01:30,780 --> 00:01:32,280
rather than for like...
28
00:01:33,080 --> 00:01:37,480
Compared to people even if you
even if you CTO and all your data
29
00:01:37,480 --> 00:01:40,180
in Postgres it's a big question
for you to...
30
00:01:41,240 --> 00:01:44,480
But for me it's even a bigger question
because a company called
31
00:01:44,480 --> 00:01:52,700
Postgres.AI and last 19 years I
put all data to Postgres, last...
32
00:01:53,300 --> 00:01:55,300
Okay, how many years?
33
00:01:56,000 --> 00:01:59,400
Postgres consultants, like, a source
of income depends on it.
34
00:01:59,800 --> 00:02:03,040
Not only data in Postgres, but
also all my activities are in
35
00:02:03,040 --> 00:02:03,480
Postgres.
36
00:02:03,480 --> 00:02:10,640
And since 2007, I'm also a community
activities, having some
37
00:02:10,640 --> 00:02:16,940
community activities, all my thoughts
related to professional
38
00:02:17,860 --> 00:02:24,240
stuff very close to Postgres, around
Postgres, but I must admit
39
00:02:24,240 --> 00:02:25,080
I have doubts.
40
00:02:26,400 --> 00:02:31,100
So what I would like to for us
today discussing our topic which
41
00:02:31,100 --> 00:02:32,100
is why Postgres.
42
00:02:34,140 --> 00:02:39,480
What I would like to have like
doing this discussion is to I
43
00:02:39,480 --> 00:02:43,220
would like to look inside myself,
raise all the doubts I have,
44
00:02:43,740 --> 00:02:49,860
and honestly, If the doubts grow
and we don't resolve them, I'm
45
00:02:49,860 --> 00:02:56,320
ready to switch to a different
database system and a different
46
00:02:56,320 --> 00:02:57,040
type of business.
47
00:02:57,040 --> 00:02:57,940
I'm not joking.
48
00:02:59,760 --> 00:03:01,200
Michael: I'm looking forward to
this.
49
00:03:01,800 --> 00:03:04,100
Nikolay: I see huge potential recently.
50
00:03:04,160 --> 00:03:07,800
We started growing in all aspects
and it's super interesting.
51
00:03:07,800 --> 00:03:10,780
and so many things not yet accomplished.
52
00:03:12,180 --> 00:03:17,360
I have big ideas, I think I have
big ideas too, which I must
53
00:03:17,360 --> 00:03:18,740
implement and so on.
54
00:03:18,740 --> 00:03:20,180
But I also have doubts.
55
00:03:20,240 --> 00:03:29,880
Let's talk about them and if they
start to overweigh these ideas
56
00:03:30,220 --> 00:03:36,640
and desire to build and so on,
then I'm honestly open to switch.
57
00:03:37,660 --> 00:03:38,160
Really.
58
00:03:38,240 --> 00:03:42,520
It's also probably I won't be present
on this podcast anymore.
59
00:03:42,520 --> 00:03:43,420
I'm not joking.
60
00:03:44,840 --> 00:03:45,340
Really.
61
00:03:45,420 --> 00:03:47,780
So, why Postgres?
62
00:03:47,780 --> 00:03:48,480
Michael: Let's go back.
63
00:03:48,480 --> 00:03:49,320
Let's go back.
64
00:03:49,340 --> 00:03:50,700
Should we start at the beginning?
65
00:03:52,080 --> 00:03:56,380
Why did we each choose Postgres
initially, both as users, but
66
00:03:56,380 --> 00:04:01,400
also to build tools around, build
companies around, build careers
67
00:04:01,420 --> 00:04:01,920
around?
68
00:04:02,140 --> 00:04:04,540
It'd be interesting to hear why
you chose it, even if it's...
69
00:04:04,540 --> 00:04:07,120
I know we've covered it briefly
before, but...
70
00:04:07,120 --> 00:04:09,100
Nikolay: You want to start from
me or from yourself?
71
00:04:10,080 --> 00:04:11,740
Michael: Why not start from you,
I think?
72
00:04:12,340 --> 00:04:13,160
Nikolay: Sounds good.
73
00:04:13,440 --> 00:04:15,900
I went to a great university in
1998.
74
00:04:17,180 --> 00:04:19,500
I think elite, like very good.
75
00:04:20,340 --> 00:04:22,460
I'm an MIT, it's in Russia.
76
00:04:23,040 --> 00:04:27,240
It's like hard to get into 1 of
the best technical universities.
77
00:04:29,440 --> 00:04:34,640
And applied maths and computer
science was focus, but smaller
78
00:04:34,640 --> 00:04:37,700
focus starting third grade you
need to choose specialty.
79
00:04:38,680 --> 00:04:44,240
I wanted to do hardcore stuff so
I went to kernel and operational
80
00:04:44,260 --> 00:04:48,520
systems and so on, but I remember
it was a couple of Armenian guys
81
00:04:48,520 --> 00:04:54,440
who were professors that were responsible
for this direction.
82
00:04:54,860 --> 00:04:59,080
I went to them, they said, write
us a letter, we will respond.
83
00:04:59,080 --> 00:05:00,560
And it's great.
84
00:05:00,860 --> 00:05:04,000
So I wrote a letter, no response,
wrote a letter once again,
85
00:05:04,000 --> 00:05:04,600
no response.
86
00:05:04,600 --> 00:05:09,940
So in my head I was thinking, damn,
I tried to be hardcore.
87
00:05:10,080 --> 00:05:16,660
Now I'm like, I approached guys
who are older than me, have experience
88
00:05:16,880 --> 00:05:20,040
in the same institute, in the same
subdivision.
89
00:05:21,760 --> 00:05:26,260
Many directions, by the way, AI
was already one of the directions,
90
00:05:26,760 --> 00:05:30,040
very different than today, of course,
but still, like neural
91
00:05:30,040 --> 00:05:31,580
networks and so on.
92
00:05:31,800 --> 00:05:34,020
Somehow it wasn't interested in
that direction.
93
00:05:34,060 --> 00:05:36,500
I personally was asked like what's
the easiest?
94
00:05:37,300 --> 00:05:42,540
And they said, oh, professor for
like which is doing databases
95
00:05:44,020 --> 00:05:49,080
is the easiest And he's like so
kind, you know, like, and definitely
96
00:05:49,200 --> 00:05:50,140
it's the easiest.
97
00:05:50,460 --> 00:05:51,660
Like, good.
98
00:05:52,060 --> 00:05:52,920
I go there.
99
00:05:52,920 --> 00:05:54,360
This is how I chose databases.
100
00:05:55,580 --> 00:05:56,080
Honestly.
101
00:05:57,180 --> 00:06:00,100
Then I started saying, you know,
databases are in the heart of
102
00:06:00,100 --> 00:06:02,420
any information system.
103
00:06:02,440 --> 00:06:03,840
It's where data is stored.
104
00:06:03,840 --> 00:06:05,740
It should be in good shape.
105
00:06:05,740 --> 00:06:13,220
If it's in bad shape, then everything
can be bad, slow, and so
106
00:06:13,220 --> 00:06:13,720
on.
107
00:06:14,280 --> 00:06:19,640
Not efficient or not bad quality,
like not secure or something.
108
00:06:19,640 --> 00:06:21,780
So many things, it's really in
the center, right?
109
00:06:21,780 --> 00:06:22,940
I believe in this.
110
00:06:23,080 --> 00:06:26,300
But at that time I chose just like
by accident.
111
00:06:27,440 --> 00:06:33,900
So, and then I worked with Oracle
slightly more than 1 year,
112
00:06:33,960 --> 00:06:38,440
with SQL Server maybe up to a couple
of years, and then somehow
113
00:06:38,440 --> 00:06:44,120
by accident they got into startups
in 2004-5, and they said of
114
00:06:44,120 --> 00:06:48,060
course we cannot buy, we have like
budget to build something.
115
00:06:48,900 --> 00:06:54,180
I joined and became CTO, like started
growing team and I was
116
00:06:54,180 --> 00:06:58,240
responsible for almost all decisions
technically and they said
117
00:06:58,240 --> 00:07:00,720
we cannot afford Oracle license
of course.
118
00:07:00,760 --> 00:07:04,900
I was a big fan of SQL Server and
I told them, okay, then we
119
00:07:04,900 --> 00:07:08,600
use the most popular open source
database system, which is MySQL.
120
00:07:09,520 --> 00:07:13,200
And you know, I probably mentioned,
right, 1 week later I was
121
00:07:13,200 --> 00:07:19,880
already almost quitting because
it's ridiculous, repair table,
122
00:07:20,360 --> 00:07:22,040
0000, date.
123
00:07:22,200 --> 00:07:23,780
I cannot work with it.
124
00:07:23,780 --> 00:07:29,440
I have good foundation, because
professor was kind and easy going,
125
00:07:29,440 --> 00:07:34,600
but it also was great professor,
and the best I think in Russia
126
00:07:34,600 --> 00:07:38,240
at that time in terms of academia
and very well known books and
127
00:07:38,240 --> 00:07:38,620
so on.
128
00:07:38,620 --> 00:07:43,500
I was very lucky to be his student
and then PhD student and his
129
00:07:43,500 --> 00:07:44,880
name is Sergei Kuznetsov.
130
00:07:45,900 --> 00:07:48,640
His name was unfortunately he died
recently.
131
00:07:50,360 --> 00:07:52,580
So yeah, he was a very great guy.
132
00:07:53,320 --> 00:07:58,320
And I learned a lot from him and
of course I learned, I studied
133
00:07:58,360 --> 00:08:04,960
books like Chris Date's, like kind
of simple thing, but also
134
00:08:04,960 --> 00:08:07,440
Garcia-Molina, Ullman, right?
135
00:08:08,300 --> 00:08:13,440
Which is… Later I learned these
guys are from Stanford.
136
00:08:13,980 --> 00:08:15,560
It was unexpected.
137
00:08:15,600 --> 00:08:18,760
I thought maybe it should be from
Berkeley or so, but then I
138
00:08:18,760 --> 00:08:25,100
also found they are already not
active but from Stanford.
139
00:08:25,580 --> 00:08:32,720
So many good stuff like relational
theory, calculus, These things.
140
00:08:33,480 --> 00:08:37,200
Sometimes I learned many things
in Russian, so sometimes I'm
141
00:08:37,200 --> 00:08:40,500
having difficulties finding proper
English names.
142
00:08:41,040 --> 00:08:43,400
But in general, I had a good foundation.
143
00:08:43,840 --> 00:08:47,960
SQL at that time already learned
like, it's actually from him
144
00:08:47,960 --> 00:08:50,940
I learned that nulls is a big problem
in SQL model.
145
00:08:51,060 --> 00:08:54,400
There is a relational model and
there is a SQL model and they
146
00:08:54,400 --> 00:08:56,140
are not completely the same.
147
00:08:56,380 --> 00:08:59,740
At that time I studied also SQL
standard.
148
00:09:00,240 --> 00:09:05,360
I remember SQL 92, then 1999, then
they started doing this 2.0.0.m
149
00:09:06,180 --> 00:09:12,280
or x, like kind of not whole big
release, but releasing parts,
150
00:09:12,280 --> 00:09:12,780
right?
151
00:09:13,060 --> 00:09:16,540
So a lot of stuff learned there.
152
00:09:18,060 --> 00:09:20,660
Standard is hard to deal with for
sure.
153
00:09:20,660 --> 00:09:24,440
So I like big respect to guys who
deal with it.
154
00:09:25,360 --> 00:09:27,460
Peter Eisentrout and Vic Fearing,
right?
155
00:09:28,480 --> 00:09:28,660
CB.
156
00:09:28,660 --> 00:09:29,670
From the Postgres side.
157
00:09:29,670 --> 00:09:29,760
LB.
158
00:09:29,760 --> 00:09:32,420
The closest to standard, these
2 guys, right?
159
00:09:32,780 --> 00:09:33,540
Big respect.
160
00:09:33,940 --> 00:09:35,300
For sure, it's hard.
161
00:09:35,740 --> 00:09:41,760
So I was very young, like 20, 21,
22, I was already reading the
162
00:09:41,760 --> 00:09:42,100
standard.
163
00:09:42,100 --> 00:09:46,460
Then I work with MySQL and what
a piece of something it is, actually,
164
00:09:46,460 --> 00:09:46,960
honestly.
165
00:09:47,580 --> 00:09:51,300
We learned some principles, but
you touch something and it doesn't
166
00:09:51,300 --> 00:09:55,120
work or work in opposite direction
than you compared to what
167
00:09:55,120 --> 00:09:56,240
you learned in Oracle.
168
00:09:57,180 --> 00:10:02,280
In SQL Server, of course, there
are some specifics, but in general,
169
00:10:02,720 --> 00:10:07,700
both systems were mature and worked
quite well and definitely
170
00:10:07,860 --> 00:10:09,140
like grown-up systems.
171
00:10:09,140 --> 00:10:11,020
MySQL wasn't a grown-up system.
172
00:10:11,160 --> 00:10:13,580
You need to choose at that time,
right?
173
00:10:13,580 --> 00:10:17,920
You need to choose if it's MyISAM,
repair table, but it lacks
174
00:10:17,920 --> 00:10:23,260
full-text search and all you need
to do was the second engine.
175
00:10:23,260 --> 00:10:24,740
So… CB.
176
00:10:24,960 --> 00:10:25,460
Michael: NDB?
177
00:10:25,760 --> 00:10:26,260
LB.
178
00:10:26,280 --> 00:10:28,440
Nikolay: NDB, right, but it's
super slow.
179
00:10:29,760 --> 00:10:30,660
Super slow.
180
00:10:31,160 --> 00:10:37,180
So 1 or 2 weeks I was on this,
but we just hired a guy from astronomical
181
00:10:37,440 --> 00:10:42,100
university from the same place
where Oleg Bartunov was, I think
182
00:10:42,100 --> 00:10:46,400
is still doing some academia activities.
183
00:10:46,880 --> 00:10:48,340
Maybe already know, I don't know.
184
00:10:48,340 --> 00:10:49,220
But at that time...
185
00:10:49,900 --> 00:10:54,260
So that guy said, I know this guy,
Oleg Bartunov, and try Postgres.
186
00:10:55,240 --> 00:10:58,880
And everything went in the right
place immediately.
187
00:10:59,140 --> 00:11:01,240
I converted super fast everything.
188
00:11:01,620 --> 00:11:02,420
Super fast.
189
00:11:02,920 --> 00:11:07,540
I needed to write an additional layer
of caching because I had my
190
00:11:07,540 --> 00:11:09,220
own ORM at that time.
191
00:11:09,220 --> 00:11:13,240
It was before I think current popular
ORMs became popular.
192
00:11:13,380 --> 00:11:14,840
It was before Django.
193
00:11:15,180 --> 00:11:19,540
I think Django and Ruby on Rails
already existed, but were not
194
00:11:19,540 --> 00:11:22,160
super popular, and we were using
PHP.
195
00:11:24,760 --> 00:11:29,920
I wrote my own and it had a lot
of work with metadata.
196
00:11:31,120 --> 00:11:34,040
I quickly switched to Postgres
and worked with metadata in Postgres,
197
00:11:34,040 --> 00:11:35,560
but it became very slow.
198
00:11:35,580 --> 00:11:38,540
Everything is good, but working
with metadata is much slower
199
00:11:38,800 --> 00:11:44,600
than in MySQL, so I needed to add
caching for queries to pg_class
200
00:11:44,720 --> 00:11:45,600
and so on.
201
00:11:46,080 --> 00:11:47,800
But this is the only concern.
202
00:11:48,180 --> 00:11:51,580
Everything else went like it was
like all the pieces of the puzzle
203
00:11:51,580 --> 00:11:54,020
in the same, like where they should
be, right?
204
00:11:55,440 --> 00:12:00,040
Because Postgres probably has issues
like replication, like we
205
00:12:00,040 --> 00:12:04,100
learned later and needed to use
Slony and Londiste later.
206
00:12:04,540 --> 00:12:10,520
But it works as expected if you
studied databases from books,
207
00:12:10,520 --> 00:12:11,020
right?
208
00:12:12,040 --> 00:12:18,240
From theory, Switching from theory
to Postgres is natural, which
209
00:12:18,240 --> 00:12:21,800
was not so if you switch from theory
to MySQL.
210
00:12:22,120 --> 00:12:28,100
This is how I end up actually loving
Postgres because it saved
211
00:12:28,100 --> 00:12:28,600
me.
212
00:12:29,200 --> 00:12:32,980
It's free because we couldn't afford
license being a small startup.
213
00:12:33,680 --> 00:12:34,440
It's open.
214
00:12:35,740 --> 00:12:39,660
Open maybe I didn't really care
that much at that time about
215
00:12:39,660 --> 00:12:42,140
openness, but I liked it.
216
00:12:43,380 --> 00:12:46,160
Extensibility, openness, I liked
it immediately.
217
00:12:46,720 --> 00:12:51,300
And most importantly for me, things
work as expected in terms
218
00:12:51,300 --> 00:12:57,540
of relational theory, like there
are triggers, there are views,
219
00:12:58,620 --> 00:13:04,120
right, and like null behavior and
so on, like these things as
220
00:13:04,140 --> 00:13:05,640
you expect them to be.
221
00:13:06,180 --> 00:13:07,420
Really reliable, right?
222
00:13:07,420 --> 00:13:13,280
The ACID principles, strict system
was already very strict to
223
00:13:13,280 --> 00:13:14,360
ACID principles.
224
00:13:14,440 --> 00:13:19,540
It probably was not super performant
at that time compared to
225
00:13:19,540 --> 00:13:20,580
MySQL MyISAM.
226
00:13:21,340 --> 00:13:23,600
But you didn't lose data.
227
00:13:25,580 --> 00:13:26,940
Except it's a bug, right?
228
00:13:26,940 --> 00:13:28,240
Bugs happen, of course.
229
00:13:30,640 --> 00:13:31,140
Michael: Yeah.
230
00:13:31,560 --> 00:13:34,300
So that was originally why you
chose Postgres.
231
00:13:34,340 --> 00:13:38,080
And I guess we've gone a little
bit into why you continue to
232
00:13:38,080 --> 00:13:40,780
choose it in terms of you fell
in love with it.
233
00:13:40,920 --> 00:13:45,080
But why, yeah, why do you continue
to build products and services
234
00:13:45,100 --> 00:13:45,860
for it?
235
00:13:46,220 --> 00:13:47,720
Nikolay: Well, this is my personal.
236
00:13:48,160 --> 00:13:49,800
I built 3 social networks.
237
00:13:50,460 --> 00:13:52,560
Well, I was in Russia then.
238
00:13:53,480 --> 00:14:00,720
12 years ago, migrated to the US
and lost my interest in social
239
00:14:00,720 --> 00:14:01,600
networks already.
240
00:14:02,280 --> 00:14:06,000
But interest to databases was constant
all the time.
241
00:14:06,580 --> 00:14:10,580
Yes, and Postgres popularity grew,
demand started to grow, I
242
00:14:10,580 --> 00:14:15,060
think, in 2014-15, and this is
exactly when I needed additional
243
00:14:15,060 --> 00:14:18,840
source of income, so I started
helping other companies which
244
00:14:19,860 --> 00:14:23,580
started having bigger databases
in Postgres, like Postgres databases,
245
00:14:23,580 --> 00:14:25,280
and started having troubles.
246
00:14:25,660 --> 00:14:31,320
It was natural for me to use my
knowledge and desire to work
247
00:14:31,320 --> 00:14:36,840
with Postgres and that interest
into databases to start a consulting
248
00:14:36,980 --> 00:14:42,500
practice and then this podcast
was born out of these seeds, meetups
249
00:14:42,500 --> 00:14:48,340
in the past and desire to go online
with meetup activity because
250
00:14:48,340 --> 00:14:52,440
I know people are everywhere, like,
and meetups are only in 1
251
00:14:52,440 --> 00:14:52,900
place.
252
00:14:52,900 --> 00:14:55,020
It's good to meet in person, but
yeah.
253
00:14:55,080 --> 00:14:58,680
So it was quite natural, everything
was natural.
254
00:14:59,440 --> 00:15:01,160
So why Postgres?
255
00:15:01,260 --> 00:15:05,080
Because it's just, I have an interest,
I have the opportunity, things
256
00:15:05,080 --> 00:15:08,040
like match, and we continue working
with it, right?
257
00:15:09,780 --> 00:15:10,720
Michael: Yeah, perfect.
258
00:15:11,100 --> 00:15:12,320
I'm only hearing positives.
259
00:15:16,360 --> 00:15:20,200
Should I go through mine quickly,
the reasons for choosing it
260
00:15:20,200 --> 00:15:20,700
initially?
261
00:15:25,680 --> 00:15:28,840
I think some of them are quite
different from yours, but it's also
262
00:15:28,840 --> 00:15:29,340
later.
263
00:15:29,640 --> 00:15:30,860
My journey is later.
264
00:15:30,860 --> 00:15:34,960
So I first came across Postgres
through work rather than through
265
00:15:34,960 --> 00:15:36,360
academia or anything.
266
00:15:36,660 --> 00:15:37,900
My degree was unrelated.
267
00:15:38,920 --> 00:15:43,740
So I ended up coming across it
first while I was working at a
268
00:15:43,740 --> 00:15:44,980
database tools company.
269
00:15:45,120 --> 00:15:50,780
So I first fell in love with software
and it was almost entirely
270
00:15:50,860 --> 00:15:54,500
graphical user interfaces to things
like databases.
271
00:15:55,520 --> 00:16:00,400
So our biggest divisions at the
company were for SQL Server tools.
272
00:16:00,720 --> 00:16:02,360
So that was my first experience.
273
00:16:02,360 --> 00:16:06,360
And I came across Postgres first
as something people started
274
00:16:06,360 --> 00:16:06,860
requesting.
275
00:16:07,100 --> 00:16:09,640
Support, yeah, can you do the
same tools?
276
00:16:09,720 --> 00:16:12,600
We'd love to buy the same tools
from you for Postgres.
277
00:16:12,640 --> 00:16:17,300
You know, companies that used and
loved our tools for SQL Server
278
00:16:17,440 --> 00:16:22,080
were starting to do some projects
on Postgres, you know, moving
279
00:16:22,260 --> 00:16:26,040
not that many migrations at the
time, but like greenfield projects,
280
00:16:26,040 --> 00:16:27,380
they would often choose Postgres.
281
00:16:27,380 --> 00:16:31,220
So this was about that same time
that that 2013, 2014,
282
00:16:31,400 --> 00:16:31,900
2015.
283
00:16:32,380 --> 00:16:36,140
So it's those years that I started
to hear it more and more.
284
00:16:36,280 --> 00:16:42,240
And then in late 2014, I actually
moved to a startup in London,
285
00:16:43,220 --> 00:16:46,660
who were a payments company, our
payments company GoCardless,
286
00:16:46,960 --> 00:16:51,760
and their team, it was exceptional
engineering team, still is.
287
00:16:53,940 --> 00:16:55,160
And they love Postgres.
288
00:16:55,520 --> 00:16:59,180
And that really, like, hearing
that bigger companies were starting
289
00:16:59,180 --> 00:17:04,600
to use it, and then also knowing
that the cool YC startup scene
290
00:17:04,600 --> 00:17:08,360
were also using Postgres, that
really triggered something in
291
00:17:08,360 --> 00:17:08,480
me.
292
00:17:08,480 --> 00:17:10,600
It's like, ah, this isn't just
something.
293
00:17:10,600 --> 00:17:13,220
Like, I already knew that it was
up and coming.
294
00:17:13,260 --> 00:17:16,080
I know it's really old at the same
time, but I already knew it
295
00:17:16,080 --> 00:17:17,300
was becoming more popular.
296
00:17:17,720 --> 00:17:22,580
And that these engineers that were
much younger and VC-backed
297
00:17:22,800 --> 00:17:27,520
startup in the UK chose it and
loved it really inspired me to
298
00:17:27,520 --> 00:17:32,000
like, think this could be a platform
I'd want to build for this.
299
00:17:32,000 --> 00:17:33,320
This could be going places.
300
00:17:33,320 --> 00:17:34,060
And also.
301
00:17:34,940 --> 00:17:39,360
It's clearly a technology that
is already like sound and fundamentally
302
00:17:39,560 --> 00:17:42,660
sound if the, all of these companies
are choosing it.
303
00:17:42,780 --> 00:17:47,080
And I'd also really kind of reacted
negatively to some of the
304
00:17:47,080 --> 00:17:49,280
other things that had been hyped
up at a similar time.
305
00:17:49,280 --> 00:17:54,800
Like I really couldn't get behind
the whole MongoDB, like the
306
00:17:54,800 --> 00:17:56,760
NoSQL movement at the time.
307
00:17:56,760 --> 00:17:58,440
And also, do you remember big data?
308
00:17:58,440 --> 00:18:00,300
Do you remember that as like a
phase?
309
00:18:01,320 --> 00:18:06,140
Just really reacted strongly, like
strongly and negatively towards
310
00:18:06,140 --> 00:18:08,320
a lot of the people that were hyping
those up because it just
311
00:18:08,320 --> 00:18:12,420
didn't seem based on solid foundation,
like on good principles.
312
00:18:12,920 --> 00:18:15,800
And it didn't make sense to me
that these things were needed
313
00:18:15,800 --> 00:18:17,980
or like fundamentally better.
314
00:18:19,540 --> 00:18:23,480
And so when I saw Postgres was
coming, was up and coming, and
315
00:18:23,480 --> 00:18:26,640
it was based on good fundamentals,
and they prioritised, like
316
00:18:26,640 --> 00:18:29,080
I saw a lot of value alignment,
like you,
317
00:18:29,240 --> 00:18:29,440
Nikolay: I
318
00:18:29,440 --> 00:18:33,800
Michael: would, And I think like
most people, correctness and
319
00:18:33,800 --> 00:18:36,500
reliability are more important
than performance.
320
00:18:36,840 --> 00:18:40,120
Of course, performance matters
after that, but there's no point
321
00:18:40,120 --> 00:18:41,760
in it being fast and wrong.
322
00:18:42,340 --> 00:18:46,560
It's just that priority order seems
so much better in the Postgres
323
00:18:46,560 --> 00:18:47,060
ecosystem.
324
00:18:47,240 --> 00:18:49,900
But then beyond that, there were
loads of other benefits.
325
00:18:49,900 --> 00:18:54,940
Like as you say, free as in price,
that's obviously extremely
326
00:18:54,960 --> 00:18:55,460
attractive.
327
00:18:55,520 --> 00:19:00,040
And I think probably still underappreciated,
like actually free,
328
00:19:00,040 --> 00:19:01,420
like totally free.
329
00:19:02,260 --> 00:19:05,220
And then also the fact that it's
open from a source code perspective.
330
00:19:06,220 --> 00:19:10,060
Having built tools for SQL Server
and Oracle, having been involved
331
00:19:10,080 --> 00:19:14,060
in teams, having to research new
versions or look back to why
332
00:19:14,060 --> 00:19:16,400
things have broken, all sorts of
things.
333
00:19:16,400 --> 00:19:20,280
If you don't have access to the
source code, I mean, you don't
334
00:19:20,280 --> 00:19:20,960
have access.
335
00:19:21,100 --> 00:19:22,960
Nikolay: Many companies don't understand
that.
336
00:19:22,960 --> 00:19:26,060
I first felt this.
337
00:19:26,840 --> 00:19:31,020
I was experiencing this insight,
what you're just sharing, that
338
00:19:31,020 --> 00:19:34,580
source code is like… it's like
kind of deeper documentation.
339
00:19:36,100 --> 00:19:41,760
When I first had it in 2018, helping
some company which we are
340
00:19:41,760 --> 00:19:45,320
migrating to RDS, they were huge
already.
341
00:19:45,560 --> 00:19:50,540
They needed logical replication
to first to Vertica, then to
342
00:19:50,540 --> 00:19:51,800
Snowflake, doesn't matter.
343
00:19:52,200 --> 00:19:55,760
But they considered some tools
and 1 of the tools was maybe 1
344
00:19:55,760 --> 00:19:59,020
of the popular at that time was
Click, Xatunity.
345
00:20:00,660 --> 00:20:03,740
And the documentation didn't cover
so many questions I had.
346
00:20:04,860 --> 00:20:09,520
And I just, like, I realized I
was talking to my client, I just
347
00:20:09,520 --> 00:20:13,680
said, you know what, if they had
a source available, not open
348
00:20:13,680 --> 00:20:16,700
source, a source available, I would
just answer myself, because
349
00:20:16,700 --> 00:20:20,640
I can read code, it doesn't matter
language, I could find this
350
00:20:20,640 --> 00:20:23,740
place, how exactly they create
logical slot.
351
00:20:24,140 --> 00:20:27,900
Spent a lot of time and efforts,
I realized they create logical
352
00:20:27,900 --> 00:20:31,080
slot using SQL function, not replication
connection.
353
00:20:31,500 --> 00:20:32,940
That was their problem.
354
00:20:33,700 --> 00:20:39,520
But for me, lack of source code
means lack of ultimate documentation,
355
00:20:39,680 --> 00:20:40,180
basically.
356
00:20:41,260 --> 00:20:43,580
Michael: Ultimate and accurate
and up-to-date.
357
00:20:46,160 --> 00:20:47,760
Nikolay: It's also about transparency.
358
00:20:48,100 --> 00:20:51,960
If you don't provide source code,
you always can say, oh, we
359
00:20:51,960 --> 00:20:54,360
fixed this problem, but not in
all cases.
360
00:20:54,680 --> 00:20:59,060
But you cannot bullshit if you
have source available with all
361
00:20:59,060 --> 00:21:02,860
versions and tags and releases,
like anyone can see.
362
00:21:02,860 --> 00:21:03,980
It's about transparency.
363
00:21:04,700 --> 00:21:09,060
And transparency is why I have
doubts in Postgres.
364
00:21:09,840 --> 00:21:10,700
Michael: Oh, interesting.
365
00:21:11,180 --> 00:21:13,440
Nikolay: Yes, but it's not technical.
366
00:21:13,440 --> 00:21:15,660
Let's talk about technical first
before we...
367
00:21:15,660 --> 00:21:18,420
Michael: Well, I think we can intertwine
them.
368
00:21:18,420 --> 00:21:21,800
But a couple of other reasons I
chose it that are on the non-technical
369
00:21:22,160 --> 00:21:22,640
side.
370
00:21:22,640 --> 00:21:25,520
I think when you're building for.
371
00:21:25,520 --> 00:21:29,240
So I I'd worked at places that
chose Postgres, but I wasn't the
372
00:21:29,240 --> 00:21:30,000
decision maker.
373
00:21:30,000 --> 00:21:30,280
At those.
374
00:21:30,280 --> 00:21:33,580
You know, It was an already made
decision when I worked there.
375
00:21:33,680 --> 00:21:36,980
I never chose explicitly until
I started my own business.
376
00:21:37,300 --> 00:21:42,800
So it was only then that I mean,
we chose it not just as users,
377
00:21:42,800 --> 00:21:46,620
of course, but as as a platform
to build on.
378
00:21:47,080 --> 00:21:51,100
And because I was trying to build
something like long term, it's
379
00:21:51,100 --> 00:21:55,620
very much, you know, a small, slow,
steady, not VC backed, hopefully
380
00:21:55,640 --> 00:21:57,480
for decades, that kind of business.
381
00:21:58,180 --> 00:22:02,440
I didn't want to build for a platform
that there was, that was
382
00:22:02,440 --> 00:22:06,020
like, that could shift and change
drastically from underneath
383
00:22:06,020 --> 00:22:11,760
me and also that was really at
risk of a company changing their
384
00:22:11,760 --> 00:22:13,520
mind or changing something drastically.
385
00:22:13,580 --> 00:22:17,040
So it's often described as platform
risk and it felt really low
386
00:22:17,040 --> 00:22:20,060
with Postgres, not just because
it was built on really solid
387
00:22:20,060 --> 00:22:25,120
foundations but also because there's
no 1 company that can, if
388
00:22:25,120 --> 00:22:28,520
they, you know, there's no company
behind it, there's no commercial
389
00:22:28,680 --> 00:22:32,100
entity that is dependent on its
success.
390
00:22:32,100 --> 00:22:35,340
Nikolay: Like MySQL AB, right?
391
00:22:36,300 --> 00:22:37,280
Michael: Yeah, well, but...
392
00:22:37,280 --> 00:22:38,600
Nikolay: Or MongoDB, like the company.
393
00:22:38,600 --> 00:22:40,020
Michael: Yeah, like all of...
394
00:22:40,020 --> 00:22:42,240
If you consider all of the companies
that have changed their
395
00:22:42,240 --> 00:22:46,220
licenses in the last few years,
for example, That's just one example
396
00:22:46,220 --> 00:22:48,660
of how things can shift from underneath
you.
397
00:22:48,900 --> 00:22:52,700
But also, they could go completely
closed source, or in MySQL's
398
00:22:52,820 --> 00:22:57,940
case, stop publishing test cases,
which is one step towards, again,
399
00:22:58,080 --> 00:23:01,400
I don't think we've had any awful
examples where businesses really
400
00:23:01,400 --> 00:23:04,920
would have suffered, but they can
if there's a single company
401
00:23:04,920 --> 00:23:05,800
behind it.
402
00:23:05,800 --> 00:23:09,220
And the fact that Postgres was
not just, not just had seemingly
403
00:23:09,380 --> 00:23:13,260
had policies in place to prevent
that happening, but also seem
404
00:23:13,260 --> 00:23:14,560
to live those values.
405
00:23:15,060 --> 00:23:20,040
There's a real, there's lots of
companies that employ contributors
406
00:23:20,500 --> 00:23:24,400
and there's real collaboration
between those on new features
407
00:23:24,400 --> 00:23:25,640
and on bug fixes.
408
00:23:25,680 --> 00:23:30,800
And it seemed truly collaborative,
truly a community project,
409
00:23:30,860 --> 00:23:34,160
even though lots of those community
members were, almost all
410
00:23:34,160 --> 00:23:38,600
were being paid to work on it,
it was still a community, a group
411
00:23:38,600 --> 00:23:42,720
effort between collaborative organizations
that could all benefit
412
00:23:42,720 --> 00:23:43,800
from it getting better.
413
00:23:44,060 --> 00:23:48,260
And it just didn't seem like it
was as likely to have a fundamental
414
00:23:48,420 --> 00:23:50,900
shift as some of the other platforms
out there.
415
00:23:51,100 --> 00:23:52,620
Nikolay: It's interesting, actually.
416
00:23:53,300 --> 00:23:58,940
It resonates with my idea that
sometimes VC-backed company… Recently,
417
00:23:58,980 --> 00:24:03,180
we discussed companies which are
closing, post-VC-backed companies,
418
00:24:03,180 --> 00:24:04,300
startups, right?
419
00:24:05,140 --> 00:24:09,960
It resonates with the idea that
if you… VC-backed, you have pressure,
420
00:24:09,960 --> 00:24:10,340
right?
421
00:24:10,340 --> 00:24:13,880
And you can have… because of that
pressure, you can make some
422
00:24:14,380 --> 00:24:18,180
unpredicted moves, unpredictable
for your users and customers,
423
00:24:18,260 --> 00:24:18,760
right?
424
00:24:19,020 --> 00:24:23,360
For example, if you're a great
successful Postgres startup, but
425
00:24:23,360 --> 00:24:28,240
not successful enough for VCs,
you suddenly can decide to switch
426
00:24:28,240 --> 00:24:32,800
license and make more money if
you lose some users, right?
427
00:24:33,180 --> 00:24:33,680
Yeah.
428
00:24:34,240 --> 00:24:37,740
This is about Postgres, but you
apply the same logic for...
429
00:24:38,300 --> 00:24:41,940
This is about Postgres startup,
Postgres-related startup, right?
430
00:24:41,940 --> 00:24:45,460
But you apply the same logic to
Postgres core.
431
00:24:46,220 --> 00:24:48,500
Michael: Yeah, as a platform to
build on.
432
00:24:49,400 --> 00:24:50,520
Nikolay: Yeah, this is interesting.
433
00:24:51,220 --> 00:24:56,580
And if, for example, distributed
nature of development basically,
434
00:24:56,580 --> 00:24:57,080
right?
435
00:24:57,180 --> 00:24:58,760
Distributed nature of development.
436
00:24:58,820 --> 00:25:04,760
But of course there are some key
people and if they have gone,
437
00:25:04,760 --> 00:25:09,560
for example, disappeared or decided
to quit or something, Postgres
438
00:25:09,920 --> 00:25:12,280
has more chances to survive, right?
439
00:25:12,880 --> 00:25:17,300
This is what Bruce Momjian describes
in his talk Will Postgres
440
00:25:17,300 --> 00:25:19,480
Live Forever, right?
441
00:25:19,480 --> 00:25:22,580
Because like Postgres was dead several
times already.
442
00:25:23,300 --> 00:25:24,740
And someone picked it.
443
00:25:25,160 --> 00:25:29,180
Well, it was dead after it was
basically closed in Berkeley.
444
00:25:30,020 --> 00:25:35,560
And then it resurrected in the
middle of 90s as open source,
445
00:25:36,140 --> 00:25:36,640
right?
446
00:25:37,620 --> 00:25:39,180
So, yeah.
447
00:25:41,000 --> 00:25:41,940
Michael: Yeah, you're right.
448
00:25:41,940 --> 00:25:46,880
There are a few individuals who
contribute a huge, huge, huge
449
00:25:46,880 --> 00:25:47,380
amount.
450
00:25:48,700 --> 00:25:53,740
But it also feels like there are
others who contribute hugely
451
00:25:53,760 --> 00:25:54,160
too.
452
00:25:54,160 --> 00:25:59,580
And obviously, if a few of them
or several of them stopped, like
453
00:25:59,580 --> 00:26:06,420
when MySQL joined Oracle via Sun,
and you had the split with
454
00:26:06,420 --> 00:26:09,680
MariaDB if there was a fork like
that in the Postgres world for
455
00:26:09,680 --> 00:26:13,140
some reason and several of the
contributors all left at once
456
00:26:13,140 --> 00:26:17,960
or 1 or 2 really really big important
ones did I can imagine
457
00:26:17,960 --> 00:26:25,240
it being detrimental to the speed
of Postgres enhancements, but
458
00:26:25,240 --> 00:26:28,440
I do think there's still so much
momentum.
459
00:26:28,680 --> 00:26:30,480
And actually, I don't think...
460
00:26:30,480 --> 00:26:34,200
I mean, we can talk about it, but
I think feature growth is really
461
00:26:34,200 --> 00:26:38,180
helping with Postgres, but I actually
don't think it's as, now
462
00:26:38,180 --> 00:26:41,600
that it's competitive with Oracle
and SQL Server on a bunch of
463
00:26:41,600 --> 00:26:46,640
like enterprise and like performance
features, it's not as important
464
00:26:46,640 --> 00:26:49,620
that we keep innovating as quickly
on the feature level.
465
00:26:49,700 --> 00:26:54,220
Perhaps things like pgvector and
making sure we're available
466
00:26:54,220 --> 00:26:58,640
for new use cases via extensions
or via core could be important.
467
00:26:59,280 --> 00:27:01,160
But yeah, I'd be keen to go back
to you.
468
00:27:01,160 --> 00:27:02,200
You already raised...
469
00:27:02,960 --> 00:27:06,220
Do you want to cover technical
reasons why others are choosing
470
00:27:06,220 --> 00:27:09,560
it, maybe us or others, or do you
want to move to doubts and
471
00:27:09,560 --> 00:27:09,840
things
472
00:27:09,840 --> 00:27:10,240
Nikolay: like that?
473
00:27:10,240 --> 00:27:11,960
Let's quickly cover technical reasons.
474
00:27:11,960 --> 00:27:18,460
So first of all, it has a strong
foundation, follows principles,
475
00:27:18,640 --> 00:27:23,400
follows standard, not fully, but
quite well, much better than
476
00:27:23,400 --> 00:27:24,180
many others.
477
00:27:24,920 --> 00:27:30,700
And this is like, it has principles
like extensibility and so
478
00:27:30,700 --> 00:27:30,900
on.
479
00:27:30,900 --> 00:27:36,300
Like these technical things, like
Extensibility is constantly
480
00:27:36,300 --> 00:27:38,240
bringing new features.
481
00:27:39,960 --> 00:27:47,240
pgvector relies on extensions framework,
and it has its own lifecycle,
482
00:27:47,440 --> 00:27:50,180
but maybe it will go to the core
at some point.
483
00:27:50,840 --> 00:27:51,720
Maybe, right?
484
00:27:51,980 --> 00:27:56,080
As the full-text search or XML
did in the past, they were separate
485
00:27:56,840 --> 00:28:00,080
extensions, but then went to core.
486
00:28:00,580 --> 00:28:03,740
And this means also features are
coming, coming, coming.
487
00:28:03,740 --> 00:28:04,500
That's great.
488
00:28:05,820 --> 00:28:09,720
Michael: Or it could, there's another
success case where it could
489
00:28:09,720 --> 00:28:12,980
be more like PostGIS, which has
been incredibly successful and
490
00:28:12,980 --> 00:28:16,360
helpful for the growth of Postgres
in my opinion, and has stayed
491
00:28:16,360 --> 00:28:17,060
an extension.
492
00:28:17,300 --> 00:28:21,540
And I think a lot of people are
choosing PostGIS, and Postgres
493
00:28:21,600 --> 00:28:24,480
comes along for the ride, rather
than the other way around.
494
00:28:24,480 --> 00:28:25,400
And that's really cool.
495
00:28:25,400 --> 00:28:27,180
And it could be the same in pgvector.
496
00:28:27,400 --> 00:28:30,480
Like, people could be choosing
pgvector, and Postgres comes along
497
00:28:30,480 --> 00:28:31,900
for the ride in those cases.
498
00:28:32,120 --> 00:28:36,100
So yeah, either case could be a
huge success still.
499
00:28:37,060 --> 00:28:39,020
Nikolay: PostGIS is an interesting
example.
500
00:28:39,860 --> 00:28:43,980
Yeah, and it's kind of a whole
different world, right?
501
00:28:44,640 --> 00:28:49,280
But imagine it was part of, like
Postgres documentation doesn't
502
00:28:49,280 --> 00:28:50,040
have PostGIS.
503
00:28:51,460 --> 00:28:58,700
Would Postgres be even more successful
if PostGIS was in core
504
00:28:58,700 --> 00:29:00,300
and documentation had it?
505
00:29:00,300 --> 00:29:07,540
Or, for example, if Timescale,
the company, decided to go all
506
00:29:07,540 --> 00:29:14,440
in with TimescaleDB and make it
super open, eventually contributing
507
00:29:14,540 --> 00:29:15,420
it to Core.
508
00:29:16,240 --> 00:29:19,540
Just imagine, with all compression
and all the stuff and Postgres
509
00:29:19,540 --> 00:29:20,880
documentation had it.
510
00:29:21,740 --> 00:29:25,520
I know it's not good for their
business maybe, but imagine this
511
00:29:25,520 --> 00:29:26,980
world we live in.
512
00:29:27,160 --> 00:29:33,220
Postgres has PostGIS, it has TimescaleDB,
pgvector, it has everything,
513
00:29:33,240 --> 00:29:33,740
right?
514
00:29:33,960 --> 00:29:38,460
The level of quality is unified,
right?
515
00:29:38,460 --> 00:29:43,240
It's like it's being tested all
the time in the same manner as
516
00:29:43,440 --> 00:29:44,440
Postgres itself.
517
00:29:44,660 --> 00:29:49,780
And people don't spend time trying
to understand how to bring
518
00:29:49,780 --> 00:29:50,920
these pieces together.
519
00:29:51,400 --> 00:29:55,080
And if it's managed Postgres like
RDS or something, all the pieces
520
00:29:55,080 --> 00:29:56,100
are there already.
521
00:29:56,940 --> 00:29:58,780
Michael: Yeah, I can see arguments
both ways.
522
00:29:58,780 --> 00:30:02,040
I've seen people I respect a lot
arguing completely the opposite
523
00:30:02,040 --> 00:30:02,540
direction.
524
00:30:02,640 --> 00:30:04,780
Nikolay: So maybe we should define
what Postgres is.
525
00:30:04,780 --> 00:30:09,780
There is Postgres when you just
install it with a few extensions,
526
00:30:09,780 --> 00:30:13,320
not a few, dozens of them, so-called
KDRIP modules, right?
527
00:30:13,320 --> 00:30:18,025
And also CLI, tool psql, and that's
it, right?
528
00:30:18,025 --> 00:30:18,580
That's it.
529
00:30:19,900 --> 00:30:25,180
It also can create a user in your
Ubuntu or Debian or CentOS
530
00:30:25,180 --> 00:30:28,940
and set things up and be installed
as a service.
531
00:30:30,100 --> 00:30:30,740
Of course.
532
00:30:30,920 --> 00:30:31,920
But that's it.
533
00:30:32,580 --> 00:30:37,540
There are also super popular extensions
which make Postgres very
534
00:30:37,540 --> 00:30:42,840
different, like PostGIS or TimescaleDB
or pgvector.
535
00:30:43,860 --> 00:30:44,360
Great.
536
00:30:44,540 --> 00:30:46,020
It's also Postgres or no?
537
00:30:46,020 --> 00:30:47,280
It's also Postgres, right?
538
00:30:47,280 --> 00:30:48,220
Bigger Postgres.
539
00:30:50,280 --> 00:30:55,260
It's like there is Los Angeles,
but if you live in Long Beach,
540
00:30:55,260 --> 00:30:56,980
you still live in Los Angeles,
right?
541
00:30:56,980 --> 00:31:02,120
It's like there are bigger Postgres.
542
00:31:02,520 --> 00:31:05,340
Michael: Al-Khalili That's a great
example because it depends
543
00:31:05,340 --> 00:31:08,520
in what context you're speaking
and who you're speaking to and
544
00:31:08,520 --> 00:31:11,180
you know how familiar they are
with the area if they say where
545
00:31:11,180 --> 00:31:15,140
are you from but it's if you if
you're a local coffee shop in
546
00:31:15,660 --> 00:31:18,620
near LA and someone asks where
you're from, you'll probably be
547
00:31:18,620 --> 00:31:19,300
more specific.
548
00:31:20,940 --> 00:31:24,140
But if you're in Thailand and somebody
asks where you're from,
549
00:31:24,140 --> 00:31:25,580
you'll probably just say LA.
550
00:31:25,680 --> 00:31:26,440
Nikolay: Same here.
551
00:31:26,760 --> 00:31:28,040
Michael: Same, exactly the same.
552
00:31:28,040 --> 00:31:31,300
Nikolay: We use Postgres, but if
you say we use Timescale Cloud,
553
00:31:31,300 --> 00:31:34,320
we're already like, okay, also
Postgres, but definitely with
554
00:31:34,320 --> 00:31:38,240
TimescaleDB and probably without
some things they don't provide.
555
00:31:40,080 --> 00:31:40,520
Interesting.
556
00:31:40,520 --> 00:31:41,900
So there's bigger Postgres.
557
00:31:42,180 --> 00:31:45,800
There are also many tools around,
like you're building 1 and
558
00:31:45,800 --> 00:31:46,860
we're building something.
559
00:31:47,160 --> 00:31:52,080
So these tools, yeah, but a lot
of options and it's like quite
560
00:31:52,080 --> 00:31:53,060
a rich ecosystem.
561
00:31:53,460 --> 00:31:54,360
Great right?
562
00:31:54,720 --> 00:31:57,380
So this is also a reason why Postgres,
because the ecosystem is
563
00:31:57,380 --> 00:31:59,640
super rich and growing and it's
great.
564
00:32:00,400 --> 00:32:03,160
Michael: Although possibly, like
I think that could be an argument
565
00:32:03,160 --> 00:32:04,000
against it.
566
00:32:04,000 --> 00:32:07,040
Definitely when I first was looking
at Postgres, I'd actually
567
00:32:07,040 --> 00:32:10,740
say that other ecosystems were
a little bit more advanced.
568
00:32:10,880 --> 00:32:15,560
There were more people building
external tools for some of the
569
00:32:15,560 --> 00:32:17,060
other systems.
570
00:32:17,320 --> 00:32:22,120
So I do think there's like an,
that's not as obvious a 1 for
571
00:32:22,120 --> 00:32:25,260
choosing Postgres in my opinion,
but it's great that the more
572
00:32:25,260 --> 00:32:30,360
and more are popping up the last like
technical ones I had were obviously
573
00:32:30,360 --> 00:32:33,840
the extensibility, not just in
terms of pre-made extensions,
574
00:32:33,840 --> 00:32:37,520
but the fact you could like as
a user, you can extend Postgres
575
00:32:37,660 --> 00:32:38,400
in various ways.
576
00:32:38,400 --> 00:32:41,520
I think a lot of people do choose
it for those reasons.
577
00:32:41,720 --> 00:32:42,260
Nikolay: Of course.
578
00:32:42,260 --> 00:32:42,760
Yeah.
579
00:32:42,800 --> 00:32:48,160
Starting from the creation of your
own data type to your own type
580
00:32:48,160 --> 00:32:54,220
of index and extensions and now
like even more things up to storage
581
00:32:54,220 --> 00:32:55,420
engines and so on.
582
00:32:55,760 --> 00:32:57,080
Michael: Yeah, exactly.
583
00:32:57,340 --> 00:33:00,140
I think people can dip their toe
in with a new data type and
584
00:33:00,140 --> 00:33:02,640
then like gradually get more and
more excited by what they could
585
00:33:02,640 --> 00:33:02,880
build.
586
00:33:02,880 --> 00:33:05,860
And then the last technical 1 I
had on my list was, and this
587
00:33:05,860 --> 00:33:08,860
might be more why people stay rather
than why people join in
588
00:33:08,860 --> 00:33:12,440
the first place, but backwards
compatibility is so helpful.
589
00:33:13,320 --> 00:33:17,480
Because of the good fundamentals
and because Postgres has five-year
590
00:33:18,080 --> 00:33:23,680
support of major versions, people
aren't forced to upgrade like
591
00:33:23,680 --> 00:33:26,520
that often and things don't tend
to break when they do.
592
00:33:26,520 --> 00:33:29,060
You know, obviously we've done
episodes on this and there's a
593
00:33:29,060 --> 00:33:31,680
lot of complexity around major
version upgrades and you do have
594
00:33:31,680 --> 00:33:33,220
to re-release those things.
595
00:33:34,000 --> 00:33:39,620
But compared to other systems,
compared to other platforms that
596
00:33:39,620 --> 00:33:42,840
people are building and building
for, things like there are major
597
00:33:43,100 --> 00:33:48,060
breaking changes in a lot of database
major version upgrades.
598
00:33:48,580 --> 00:33:51,180
And having seen people have to
deal with those and have to get
599
00:33:51,180 --> 00:33:55,520
stuck on really old versions, it's
just so much better in the
600
00:33:55,520 --> 00:33:56,540
Postgres world.
601
00:33:56,580 --> 00:34:00,280
So I think that might be a reason
people stay or like maybe some
602
00:34:00,280 --> 00:34:02,320
very smart people, the reason they
choose it.
603
00:34:02,320 --> 00:34:05,060
But I definitely wasn't aware of
that when I was first coming
604
00:34:05,060 --> 00:34:05,820
across it.
605
00:34:07,840 --> 00:34:08,340
Nikolay: Right.
606
00:34:08,420 --> 00:34:08,920
Yeah.
607
00:34:09,800 --> 00:34:10,080
Michael: Yeah.
608
00:34:10,080 --> 00:34:14,680
So on the doubt side of things,
you mentioned transparency.
609
00:34:15,140 --> 00:34:15,640
Transparency.
610
00:34:16,020 --> 00:34:16,360
Nikolay: Yeah.
611
00:34:16,360 --> 00:34:24,620
For me, transparency is a key factor
I dislike in Postgres because
612
00:34:25,580 --> 00:34:28,040
the source code is open.
613
00:34:28,500 --> 00:34:30,500
In mailing list, they are open
as well.
614
00:34:30,500 --> 00:34:31,420
Tanner Iskra Sure.
615
00:34:31,420 --> 00:34:36,760
Leon Mandeley But if you look closer,
and I know like people
616
00:34:36,760 --> 00:34:39,300
who just use Postgres, they don't
see problems.
617
00:34:40,160 --> 00:34:44,240
But I know for sure, not like only
based on my experience, but
618
00:34:44,240 --> 00:34:48,580
based on many companies, not just
1, not just 2, many companies,
619
00:34:49,300 --> 00:34:53,160
people who are in the head of those
companies, Postgres-related
620
00:34:53,500 --> 00:34:59,240
companies, big ones, big names,
they feel this lack of transparency
621
00:34:59,680 --> 00:35:00,520
in processes.
622
00:35:03,480 --> 00:35:08,440
Like Postgres project doesn't apply
this principle to itself.
623
00:35:10,080 --> 00:35:11,600
Processes are not transparent.
624
00:35:12,870 --> 00:35:18,380
Michael: Question, just to ask
where you're going with this,
625
00:35:19,900 --> 00:35:23,600
do you consider any other alternative
projects more transparent
626
00:35:23,720 --> 00:35:26,540
and more open, like, along this
axis?
627
00:35:27,980 --> 00:35:31,060
Nikolay: I'm honestly not a big
expert here.
628
00:35:31,060 --> 00:35:38,140
I just see if, like, well, usually
organizations which are built
629
00:35:38,400 --> 00:35:43,020
recently, which are quite strong
and so on, have kind of democracy,
630
00:35:43,200 --> 00:35:43,700
right?
631
00:35:44,060 --> 00:35:47,520
They have elections, some rotation
of power.
632
00:35:47,900 --> 00:35:50,740
Michael: When I'm looking at alternatives,
if I'm thinking like
633
00:35:50,740 --> 00:35:57,100
MySQL, Redis, SQLite, none of those
have as far as...
634
00:35:57,180 --> 00:36:00,000
Nikolay: But it doesn't mean there's
no problem.
635
00:36:00,820 --> 00:36:01,920
Michael: No, no, no.
636
00:36:02,100 --> 00:36:07,320
I'm just like the question why
Postgres partly asks if not Postgres,
637
00:36:07,440 --> 00:36:08,160
what else?
638
00:36:08,180 --> 00:36:09,640
Like, they're almost in the database.
639
00:36:11,140 --> 00:36:12,120
Or do you know what I mean?
640
00:36:12,120 --> 00:36:16,320
Like if you're gonna, if you doubt
it and then say, maybe this
641
00:36:16,320 --> 00:36:18,340
isn't it, what would it be?
642
00:36:18,340 --> 00:36:19,740
Like what's the alternative?
643
00:36:21,040 --> 00:36:22,160
Nikolay: Yeah, good question.
644
00:36:22,540 --> 00:36:26,380
It can be forked postgres with
different principles.
645
00:36:26,540 --> 00:36:27,040
Interesting.
646
00:36:27,620 --> 00:36:28,300
Yeah, yeah.
647
00:36:28,620 --> 00:36:33,420
Honestly, I like, I, When I raised
in the beginning of this discussion,
648
00:36:33,580 --> 00:36:37,460
I raised this, I have doubts, I
have them for long.
649
00:36:38,800 --> 00:36:42,160
I just wanted to look inside myself
and validate.
650
00:36:42,440 --> 00:36:45,860
But while we are discussing all
these things are good, I'm still
651
00:36:45,860 --> 00:36:46,740
staying honestly.
652
00:36:46,740 --> 00:36:50,700
Like I already feel like I'm still
staying with Postgres, but
653
00:36:50,720 --> 00:36:54,020
people must know I'm not fully
satisfied with things.
654
00:36:54,840 --> 00:36:59,120
And at some point, I might say
it's enough for me.
655
00:37:00,040 --> 00:37:01,280
I don't feel it right now.
656
00:37:01,280 --> 00:37:02,580
I'm very far from it.
657
00:37:03,040 --> 00:37:05,380
But lack of transparency.
658
00:37:06,160 --> 00:37:10,380
Michael: Yeah, so we've got lots
of reasons why we chose Postgres
659
00:37:10,380 --> 00:37:14,340
in the first place, lots of positives,
like still that we would
660
00:37:14,340 --> 00:37:17,200
choose it again today and that
we do continue to choose it every
661
00:37:17,200 --> 00:37:17,700
day.
662
00:37:17,800 --> 00:37:19,780
Some areas for improvement for
sure.
663
00:37:19,780 --> 00:37:21,920
I don't see a great alternative.
664
00:37:22,040 --> 00:37:25,920
I think it's still exceptional
and love building for it, and
665
00:37:25,920 --> 00:37:28,100
I'm hoping to for decades to come.
666
00:37:29,600 --> 00:37:33,520
It'd be cool to hear from anybody
that works in or with like
667
00:37:33,520 --> 00:37:37,660
similar organizations with different
governance structures and
668
00:37:37,660 --> 00:37:38,800
how those work.
669
00:37:38,960 --> 00:37:42,040
All I can think of is like benevolent
dictator types you know
670
00:37:42,040 --> 00:37:45,620
Linux and and SQLite and things
but I'm sure there are other
671
00:37:45,620 --> 00:37:49,040
good communities like I think the
Kubernetes 1 keeps coming up
672
00:37:49,040 --> 00:37:49,900
as a...
673
00:37:49,900 --> 00:37:51,240
Nikolay: Cloud native, maybe.
674
00:37:51,820 --> 00:37:53,920
Michael: Yeah, so there are some
interesting ones out there that
675
00:37:53,920 --> 00:37:56,040
are run slightly differently, so
it'd be great to hear from people
676
00:37:56,040 --> 00:37:57,600
that are heavily involved in those.
677
00:37:58,780 --> 00:37:59,280
Nikolay: Mm-hmm.
678
00:38:00,140 --> 00:38:00,560
Right.
679
00:38:00,560 --> 00:38:06,780
So, yeah, in my opinion, Postgres
is definitely one of the greatest
680
00:38:06,780 --> 00:38:08,840
examples of open source.
681
00:38:11,580 --> 00:38:18,980
I see it as a big bazaar with one
big cathedral in the center,
682
00:38:19,940 --> 00:38:25,140
which now I recognize and smaller
cathedrals on this bazaar maybe.
683
00:38:25,320 --> 00:38:29,240
Well, the cathedral is one, it's
one, but it's still a bazaar and
684
00:38:29,240 --> 00:38:33,100
no matter what, I think it has
good chances to be a good bazaar,
685
00:38:33,420 --> 00:38:38,220
like with many voices, even if
people inside the cathedral in the
686
00:38:38,220 --> 00:38:40,740
center don't agree with those voices,
right?
687
00:38:41,320 --> 00:38:47,180
These voices cannot be due to probably
due to original nature,
688
00:38:47,800 --> 00:38:52,260
license chosen in the '90s, and the
original nature of the project
689
00:38:52,260 --> 00:38:57,840
itself, even if there are conflicts,
this bazaar will still be
690
00:38:57,840 --> 00:38:58,340
huge.
691
00:38:58,660 --> 00:39:03,500
And I think it has good chances
to be huge, with different opinions,
692
00:39:03,760 --> 00:39:05,040
sometimes very contradicting.
693
00:39:06,140 --> 00:39:11,400
So yeah, I'm glad it's a bazaar
because I think it's a good thing,
694
00:39:11,400 --> 00:39:12,560
like an open source.
695
00:39:12,560 --> 00:39:15,740
You know, I'm referring to cathedral
and the bazaar by recreation.
696
00:39:16,560 --> 00:39:19,080
Michael: Yeah, yeah, I love the
analogy and you've used it multiple
697
00:39:19,080 --> 00:39:22,440
times in the past but it's always
been cathedral or bazaar.
698
00:39:22,720 --> 00:39:23,160
Nikolay: LM.
699
00:39:23,160 --> 00:39:26,990
Yeah, but now I see bazaar with
a big cathedral in the center.
700
00:39:26,990 --> 00:39:27,040
AD.
701
00:39:27,040 --> 00:39:28,420
Michael: There is a cathedral in
the middle.
702
00:39:28,420 --> 00:39:30,080
Maybe it's not that big though.
703
00:39:30,140 --> 00:39:34,020
It is a cathedral but maybe the
bazaar is bigger and the cathedral
704
00:39:34,020 --> 00:39:34,448
is very large.
705
00:39:34,448 --> 00:39:34,572
LM.
706
00:39:34,572 --> 00:39:34,696
I
707
00:39:34,696 --> 00:39:37,260
Nikolay: feel sometimes this cathedral
in the center tries to
708
00:39:37,260 --> 00:39:39,060
pretend there is no bazaar almost.
709
00:39:40,960 --> 00:39:43,320
Or this cathedral can define all
the rules.
710
00:39:43,320 --> 00:39:44,020
It cannot.
711
00:39:44,240 --> 00:39:46,060
It cannot define all the rules.
712
00:39:46,560 --> 00:39:47,640
Michael: Have you seen Monty Python?
713
00:39:47,640 --> 00:39:50,820
There's Monty Python, I think it's,
which 1 is it, maybe Search
714
00:39:50,820 --> 00:39:51,860
for the Holy Grail?
715
00:39:52,360 --> 00:39:53,560
Have you seen the Monty Python
716
00:39:53,560 --> 00:39:53,940
films?
717
00:39:53,940 --> 00:39:54,020
Nikolay: No.
718
00:39:54,020 --> 00:39:56,020
Michael: No, I think you would like them.
719
00:39:56,720 --> 00:39:58,060
Nikolay: My son loves it.
720
00:39:58,380 --> 00:39:58,780
He tries
721
00:39:58,780 --> 00:40:01,080
to convince me for years
to watch everything.
722
00:40:01,080 --> 00:40:01,400
Michael: You have
723
00:40:01,400 --> 00:40:03,220
to watch it, I think you'll
enjoy it.
724
00:40:03,340 --> 00:40:07,820
But there's 1 moment where the
king is going up to the peasants
725
00:40:07,820 --> 00:40:11,960
working the land and tells them
what to do because he's their
726
00:40:11,960 --> 00:40:12,260
king.
727
00:40:12,260 --> 00:40:14,520
And they're like, I don't believe
in a king.
728
00:40:15,060 --> 00:40:16,220
So it's quite funny.
729
00:40:16,500 --> 00:40:17,560
I'll link that up.
730
00:40:17,560 --> 00:40:19,340
Nikolay: Yeah, I should see.
731
00:40:19,840 --> 00:40:25,480
So yeah, for sure it will remain
to be a cathedral and it's good.
732
00:40:26,060 --> 00:40:34,120
So yeah, I thank you for help validating
that I still want to
733
00:40:34,120 --> 00:40:35,580
use Postgres, you know.
734
00:40:35,660 --> 00:40:38,980
For me, I have enough reasons to
use Postgres no matter what.
735
00:40:39,060 --> 00:40:40,220
No matter what happened.
736
00:40:40,440 --> 00:40:41,020
I mean...
737
00:40:41,040 --> 00:40:41,540
Michael: Nice.
738
00:40:41,540 --> 00:40:44,060
Maybe we'll discuss again in a
couple of years and see where
739
00:40:44,060 --> 00:40:44,880
you are there.
740
00:40:45,020 --> 00:40:46,020
Nikolay: Yeah, well, yeah.
741
00:40:46,020 --> 00:40:50,820
I'm quite positive I will keep
using it and help other people
742
00:40:51,000 --> 00:40:52,740
to use it in a better way.
743
00:40:53,860 --> 00:40:54,640
Michael: Me too.
744
00:40:55,440 --> 00:40:56,960
Wonderful, thanks so much, Nikolay.
745
00:40:56,980 --> 00:40:57,940
Catch you next week.
00:00:00,060 --> 00:00:02,440
Michael: Hello and welcome to Postgres.FM,
a weekly show about
2
00:00:02,440 --> 00:00:03,300
all things PostgreSQL.
3
00:00:03,560 --> 00:00:05,240
I am Michael, founder of pgMustard.
4
00:00:05,280 --> 00:00:06,800
This is Nikolay, founder of Postgres.AI.
5
00:00:07,200 --> 00:00:09,440
Hey Nikolay, what are we talking
about this week?
6
00:00:09,960 --> 00:00:14,940
Nikolay: Hi Michael, I thought
sometimes it's a good idea to
7
00:00:15,060 --> 00:00:17,280
reconsider decisions, you know.
8
00:00:18,620 --> 00:00:23,860
And if you chose some tool or some
project to work with, sometimes
9
00:00:23,860 --> 00:00:30,920
it's good to look back at recent
experience and further back
10
00:00:31,340 --> 00:00:35,820
in the past, why you made this
decision and think is it still
11
00:00:35,860 --> 00:00:36,720
the right decision?
12
00:00:37,640 --> 00:00:43,220
And should you keep using this
product or system or project or
13
00:00:43,220 --> 00:00:47,060
anything or tool or it's time to
change it?
14
00:00:47,980 --> 00:00:50,140
Michael: Yeah, I hope you're not
having second thoughts.
15
00:00:51,660 --> 00:00:52,940
Nikolay: You can doubt anything.
16
00:00:53,940 --> 00:00:54,660
Why not?
17
00:00:55,960 --> 00:00:59,220
Michael: Just I had on my list
of people I expected to doubt
18
00:00:59,220 --> 00:01:04,760
things Nikolay Samokhvalov doubting
Postgres was very, very low
19
00:01:04,760 --> 00:01:05,700
down my list.
20
00:01:06,820 --> 00:01:10,120
Nikolay: Okay, so, by the way,
good pronunciation of my last
21
00:01:10,120 --> 00:01:10,620
name.
22
00:01:11,760 --> 00:01:12,260
Yes.
23
00:01:12,340 --> 00:01:13,580
Yeah, thank you.
24
00:01:14,540 --> 00:01:19,940
And yeah, so, honestly, it's not
a joke.
25
00:01:20,800 --> 00:01:23,800
I'm thinking, should I still use
Postgres?
26
00:01:25,640 --> 00:01:29,120
And for me, of course, it's a much
more fundamental question,
27
00:01:30,780 --> 00:01:32,280
rather than for like...
28
00:01:33,080 --> 00:01:37,480
Compared to people even if you
even if you CTO and all your data
29
00:01:37,480 --> 00:01:40,180
in Postgres it's a big question
for you to...
30
00:01:41,240 --> 00:01:44,480
But for me it's even a bigger question
because a company called
31
00:01:44,480 --> 00:01:52,700
Postgres.AI and last 19 years I
put all data to Postgres, last...
32
00:01:53,300 --> 00:01:55,300
Okay, how many years?
33
00:01:56,000 --> 00:01:59,400
Postgres consultants, like, a source
of income depends on it.
34
00:01:59,800 --> 00:02:03,040
Not only data in Postgres, but
also all my activities are in
35
00:02:03,040 --> 00:02:03,480
Postgres.
36
00:02:03,480 --> 00:02:10,640
And since 2007, I'm also a community
activities, having some
37
00:02:10,640 --> 00:02:16,940
community activities, all my thoughts
related to professional
38
00:02:17,860 --> 00:02:24,240
stuff very close to Postgres, around
Postgres, but I must admit
39
00:02:24,240 --> 00:02:25,080
I have doubts.
40
00:02:26,400 --> 00:02:31,100
So what I would like to for us
today discussing our topic which
41
00:02:31,100 --> 00:02:32,100
is why Postgres.
42
00:02:34,140 --> 00:02:39,480
What I would like to have like
doing this discussion is to I
43
00:02:39,480 --> 00:02:43,220
would like to look inside myself,
raise all the doubts I have,
44
00:02:43,740 --> 00:02:49,860
and honestly, If the doubts grow
and we don't resolve them, I'm
45
00:02:49,860 --> 00:02:56,320
ready to switch to a different
database system and a different
46
00:02:56,320 --> 00:02:57,040
type of business.
47
00:02:57,040 --> 00:02:57,940
I'm not joking.
48
00:02:59,760 --> 00:03:01,200
Michael: I'm looking forward to
this.
49
00:03:01,800 --> 00:03:04,100
Nikolay: I see huge potential recently.
50
00:03:04,160 --> 00:03:07,800
We started growing in all aspects
and it's super interesting.
51
00:03:07,800 --> 00:03:10,780
and so many things not yet accomplished.
52
00:03:12,180 --> 00:03:17,360
I have big ideas, I think I have
big ideas too, which I must
53
00:03:17,360 --> 00:03:18,740
implement and so on.
54
00:03:18,740 --> 00:03:20,180
But I also have doubts.
55
00:03:20,240 --> 00:03:29,880
Let's talk about them and if they
start to overweigh these ideas
56
00:03:30,220 --> 00:03:36,640
and desire to build and so on,
then I'm honestly open to switch.
57
00:03:37,660 --> 00:03:38,160
Really.
58
00:03:38,240 --> 00:03:42,520
It's also probably I won't be present
on this podcast anymore.
59
00:03:42,520 --> 00:03:43,420
I'm not joking.
60
00:03:44,840 --> 00:03:45,340
Really.
61
00:03:45,420 --> 00:03:47,780
So, why Postgres?
62
00:03:47,780 --> 00:03:48,480
Michael: Let's go back.
63
00:03:48,480 --> 00:03:49,320
Let's go back.
64
00:03:49,340 --> 00:03:50,700
Should we start at the beginning?
65
00:03:52,080 --> 00:03:56,380
Why did we each choose Postgres
initially, both as users, but
66
00:03:56,380 --> 00:04:01,400
also to build tools around, build
companies around, build careers
67
00:04:01,420 --> 00:04:01,920
around?
68
00:04:02,140 --> 00:04:04,540
It'd be interesting to hear why
you chose it, even if it's...
69
00:04:04,540 --> 00:04:07,120
I know we've covered it briefly
before, but...
70
00:04:07,120 --> 00:04:09,100
Nikolay: You want to start from
me or from yourself?
71
00:04:10,080 --> 00:04:11,740
Michael: Why not start from you,
I think?
72
00:04:12,340 --> 00:04:13,160
Nikolay: Sounds good.
73
00:04:13,440 --> 00:04:15,900
I went to a great university in
1998.
74
00:04:17,180 --> 00:04:19,500
I think elite, like very good.
75
00:04:20,340 --> 00:04:22,460
I'm an MIT, it's in Russia.
76
00:04:23,040 --> 00:04:27,240
It's like hard to get into 1 of
the best technical universities.
77
00:04:29,440 --> 00:04:34,640
And applied maths and computer
science was focus, but smaller
78
00:04:34,640 --> 00:04:37,700
focus starting third grade you
need to choose specialty.
79
00:04:38,680 --> 00:04:44,240
I wanted to do hardcore stuff so
I went to kernel and operational
80
00:04:44,260 --> 00:04:48,520
systems and so on, but I remember
it was a couple of Armenian guys
81
00:04:48,520 --> 00:04:54,440
who were professors that were responsible
for this direction.
82
00:04:54,860 --> 00:04:59,080
I went to them, they said, write
us a letter, we will respond.
83
00:04:59,080 --> 00:05:00,560
And it's great.
84
00:05:00,860 --> 00:05:04,000
So I wrote a letter, no response,
wrote a letter once again,
85
00:05:04,000 --> 00:05:04,600
no response.
86
00:05:04,600 --> 00:05:09,940
So in my head I was thinking, damn,
I tried to be hardcore.
87
00:05:10,080 --> 00:05:16,660
Now I'm like, I approached guys
who are older than me, have experience
88
00:05:16,880 --> 00:05:20,040
in the same institute, in the same
subdivision.
89
00:05:21,760 --> 00:05:26,260
Many directions, by the way, AI
was already one of the directions,
90
00:05:26,760 --> 00:05:30,040
very different than today, of course,
but still, like neural
91
00:05:30,040 --> 00:05:31,580
networks and so on.
92
00:05:31,800 --> 00:05:34,020
Somehow it wasn't interested in
that direction.
93
00:05:34,060 --> 00:05:36,500
I personally was asked like what's
the easiest?
94
00:05:37,300 --> 00:05:42,540
And they said, oh, professor for
like which is doing databases
95
00:05:44,020 --> 00:05:49,080
is the easiest And he's like so
kind, you know, like, and definitely
96
00:05:49,200 --> 00:05:50,140
it's the easiest.
97
00:05:50,460 --> 00:05:51,660
Like, good.
98
00:05:52,060 --> 00:05:52,920
I go there.
99
00:05:52,920 --> 00:05:54,360
This is how I chose databases.
100
00:05:55,580 --> 00:05:56,080
Honestly.
101
00:05:57,180 --> 00:06:00,100
Then I started saying, you know,
databases are in the heart of
102
00:06:00,100 --> 00:06:02,420
any information system.
103
00:06:02,440 --> 00:06:03,840
It's where data is stored.
104
00:06:03,840 --> 00:06:05,740
It should be in good shape.
105
00:06:05,740 --> 00:06:13,220
If it's in bad shape, then everything
can be bad, slow, and so
106
00:06:13,220 --> 00:06:13,720
on.
107
00:06:14,280 --> 00:06:19,640
Not efficient or not bad quality,
like not secure or something.
108
00:06:19,640 --> 00:06:21,780
So many things, it's really in
the center, right?
109
00:06:21,780 --> 00:06:22,940
I believe in this.
110
00:06:23,080 --> 00:06:26,300
But at that time I chose just like
by accident.
111
00:06:27,440 --> 00:06:33,900
So, and then I worked with Oracle
slightly more than 1 year,
112
00:06:33,960 --> 00:06:38,440
with SQL Server maybe up to a couple
of years, and then somehow
113
00:06:38,440 --> 00:06:44,120
by accident they got into startups
in 2004-5, and they said of
114
00:06:44,120 --> 00:06:48,060
course we cannot buy, we have like
budget to build something.
115
00:06:48,900 --> 00:06:54,180
I joined and became CTO, like started
growing team and I was
116
00:06:54,180 --> 00:06:58,240
responsible for almost all decisions
technically and they said
117
00:06:58,240 --> 00:07:00,720
we cannot afford Oracle license
of course.
118
00:07:00,760 --> 00:07:04,900
I was a big fan of SQL Server and
I told them, okay, then we
119
00:07:04,900 --> 00:07:08,600
use the most popular open source
database system, which is MySQL.
120
00:07:09,520 --> 00:07:13,200
And you know, I probably mentioned,
right, 1 week later I was
121
00:07:13,200 --> 00:07:19,880
already almost quitting because
it's ridiculous, repair table,
122
00:07:20,360 --> 00:07:22,040
0000, date.
123
00:07:22,200 --> 00:07:23,780
I cannot work with it.
124
00:07:23,780 --> 00:07:29,440
I have good foundation, because
professor was kind and easy going,
125
00:07:29,440 --> 00:07:34,600
but it also was great professor,
and the best I think in Russia
126
00:07:34,600 --> 00:07:38,240
at that time in terms of academia
and very well known books and
127
00:07:38,240 --> 00:07:38,620
so on.
128
00:07:38,620 --> 00:07:43,500
I was very lucky to be his student
and then PhD student and his
129
00:07:43,500 --> 00:07:44,880
name is Sergei Kuznetsov.
130
00:07:45,900 --> 00:07:48,640
His name was unfortunately he died
recently.
131
00:07:50,360 --> 00:07:52,580
So yeah, he was a very great guy.
132
00:07:53,320 --> 00:07:58,320
And I learned a lot from him and
of course I learned, I studied
133
00:07:58,360 --> 00:08:04,960
books like Chris Date's, like kind
of simple thing, but also
134
00:08:04,960 --> 00:08:07,440
Garcia-Molina, Ullman, right?
135
00:08:08,300 --> 00:08:13,440
Which is… Later I learned these
guys are from Stanford.
136
00:08:13,980 --> 00:08:15,560
It was unexpected.
137
00:08:15,600 --> 00:08:18,760
I thought maybe it should be from
Berkeley or so, but then I
138
00:08:18,760 --> 00:08:25,100
also found they are already not
active but from Stanford.
139
00:08:25,580 --> 00:08:32,720
So many good stuff like relational
theory, calculus, These things.
140
00:08:33,480 --> 00:08:37,200
Sometimes I learned many things
in Russian, so sometimes I'm
141
00:08:37,200 --> 00:08:40,500
having difficulties finding proper
English names.
142
00:08:41,040 --> 00:08:43,400
But in general, I had a good foundation.
143
00:08:43,840 --> 00:08:47,960
SQL at that time already learned
like, it's actually from him
144
00:08:47,960 --> 00:08:50,940
I learned that nulls is a big problem
in SQL model.
145
00:08:51,060 --> 00:08:54,400
There is a relational model and
there is a SQL model and they
146
00:08:54,400 --> 00:08:56,140
are not completely the same.
147
00:08:56,380 --> 00:08:59,740
At that time I studied also SQL
standard.
148
00:09:00,240 --> 00:09:05,360
I remember SQL 92, then 1999, then
they started doing this 2.0.0.m
149
00:09:06,180 --> 00:09:12,280
or x, like kind of not whole big
release, but releasing parts,
150
00:09:12,280 --> 00:09:12,780
right?
151
00:09:13,060 --> 00:09:16,540
So a lot of stuff learned there.
152
00:09:18,060 --> 00:09:20,660
Standard is hard to deal with for
sure.
153
00:09:20,660 --> 00:09:24,440
So I like big respect to guys who
deal with it.
154
00:09:25,360 --> 00:09:27,460
Peter Eisentrout and Vic Fearing,
right?
155
00:09:28,480 --> 00:09:28,660
CB.
156
00:09:28,660 --> 00:09:29,670
From the Postgres side.
157
00:09:29,670 --> 00:09:29,760
LB.
158
00:09:29,760 --> 00:09:32,420
The closest to standard, these
2 guys, right?
159
00:09:32,780 --> 00:09:33,540
Big respect.
160
00:09:33,940 --> 00:09:35,300
For sure, it's hard.
161
00:09:35,740 --> 00:09:41,760
So I was very young, like 20, 21,
22, I was already reading the
162
00:09:41,760 --> 00:09:42,100
standard.
163
00:09:42,100 --> 00:09:46,460
Then I work with MySQL and what
a piece of something it is, actually,
164
00:09:46,460 --> 00:09:46,960
honestly.
165
00:09:47,580 --> 00:09:51,300
We learned some principles, but
you touch something and it doesn't
166
00:09:51,300 --> 00:09:55,120
work or work in opposite direction
than you compared to what
167
00:09:55,120 --> 00:09:56,240
you learned in Oracle.
168
00:09:57,180 --> 00:10:02,280
In SQL Server, of course, there
are some specifics, but in general,
169
00:10:02,720 --> 00:10:07,700
both systems were mature and worked
quite well and definitely
170
00:10:07,860 --> 00:10:09,140
like grown-up systems.
171
00:10:09,140 --> 00:10:11,020
MySQL wasn't a grown-up system.
172
00:10:11,160 --> 00:10:13,580
You need to choose at that time,
right?
173
00:10:13,580 --> 00:10:17,920
You need to choose if it's MyISAM,
repair table, but it lacks
174
00:10:17,920 --> 00:10:23,260
full-text search and all you need
to do was the second engine.
175
00:10:23,260 --> 00:10:24,740
So… CB.
176
00:10:24,960 --> 00:10:25,460
Michael: NDB?
177
00:10:25,760 --> 00:10:26,260
LB.
178
00:10:26,280 --> 00:10:28,440
Nikolay: NDB, right, but it's
super slow.
179
00:10:29,760 --> 00:10:30,660
Super slow.
180
00:10:31,160 --> 00:10:37,180
So 1 or 2 weeks I was on this,
but we just hired a guy from astronomical
181
00:10:37,440 --> 00:10:42,100
university from the same place
where Oleg Bartunov was, I think
182
00:10:42,100 --> 00:10:46,400
is still doing some academia activities.
183
00:10:46,880 --> 00:10:48,340
Maybe already know, I don't know.
184
00:10:48,340 --> 00:10:49,220
But at that time...
185
00:10:49,900 --> 00:10:54,260
So that guy said, I know this guy,
Oleg Bartunov, and try Postgres.
186
00:10:55,240 --> 00:10:58,880
And everything went in the right
place immediately.
187
00:10:59,140 --> 00:11:01,240
I converted super fast everything.
188
00:11:01,620 --> 00:11:02,420
Super fast.
189
00:11:02,920 --> 00:11:07,540
I needed to write an additional layer
of caching because I had my
190
00:11:07,540 --> 00:11:09,220
own ORM at that time.
191
00:11:09,220 --> 00:11:13,240
It was before I think current popular
ORMs became popular.
192
00:11:13,380 --> 00:11:14,840
It was before Django.
193
00:11:15,180 --> 00:11:19,540
I think Django and Ruby on Rails
already existed, but were not
194
00:11:19,540 --> 00:11:22,160
super popular, and we were using
PHP.
195
00:11:24,760 --> 00:11:29,920
I wrote my own and it had a lot
of work with metadata.
196
00:11:31,120 --> 00:11:34,040
I quickly switched to Postgres
and worked with metadata in Postgres,
197
00:11:34,040 --> 00:11:35,560
but it became very slow.
198
00:11:35,580 --> 00:11:38,540
Everything is good, but working
with metadata is much slower
199
00:11:38,800 --> 00:11:44,600
than in MySQL, so I needed to add
caching for queries to pg_class
200
00:11:44,720 --> 00:11:45,600
and so on.
201
00:11:46,080 --> 00:11:47,800
But this is the only concern.
202
00:11:48,180 --> 00:11:51,580
Everything else went like it was
like all the pieces of the puzzle
203
00:11:51,580 --> 00:11:54,020
in the same, like where they should
be, right?
204
00:11:55,440 --> 00:12:00,040
Because Postgres probably has issues
like replication, like we
205
00:12:00,040 --> 00:12:04,100
learned later and needed to use
Slony and Londiste later.
206
00:12:04,540 --> 00:12:10,520
But it works as expected if you
studied databases from books,
207
00:12:10,520 --> 00:12:11,020
right?
208
00:12:12,040 --> 00:12:18,240
From theory, Switching from theory
to Postgres is natural, which
209
00:12:18,240 --> 00:12:21,800
was not so if you switch from theory
to MySQL.
210
00:12:22,120 --> 00:12:28,100
This is how I end up actually loving
Postgres because it saved
211
00:12:28,100 --> 00:12:28,600
me.
212
00:12:29,200 --> 00:12:32,980
It's free because we couldn't afford
license being a small startup.
213
00:12:33,680 --> 00:12:34,440
It's open.
214
00:12:35,740 --> 00:12:39,660
Open maybe I didn't really care
that much at that time about
215
00:12:39,660 --> 00:12:42,140
openness, but I liked it.
216
00:12:43,380 --> 00:12:46,160
Extensibility, openness, I liked
it immediately.
217
00:12:46,720 --> 00:12:51,300
And most importantly for me, things
work as expected in terms
218
00:12:51,300 --> 00:12:57,540
of relational theory, like there
are triggers, there are views,
219
00:12:58,620 --> 00:13:04,120
right, and like null behavior and
so on, like these things as
220
00:13:04,140 --> 00:13:05,640
you expect them to be.
221
00:13:06,180 --> 00:13:07,420
Really reliable, right?
222
00:13:07,420 --> 00:13:13,280
The ACID principles, strict system
was already very strict to
223
00:13:13,280 --> 00:13:14,360
ACID principles.
224
00:13:14,440 --> 00:13:19,540
It probably was not super performant
at that time compared to
225
00:13:19,540 --> 00:13:20,580
MySQL MyISAM.
226
00:13:21,340 --> 00:13:23,600
But you didn't lose data.
227
00:13:25,580 --> 00:13:26,940
Except it's a bug, right?
228
00:13:26,940 --> 00:13:28,240
Bugs happen, of course.
229
00:13:30,640 --> 00:13:31,140
Michael: Yeah.
230
00:13:31,560 --> 00:13:34,300
So that was originally why you
chose Postgres.
231
00:13:34,340 --> 00:13:38,080
And I guess we've gone a little
bit into why you continue to
232
00:13:38,080 --> 00:13:40,780
choose it in terms of you fell
in love with it.
233
00:13:40,920 --> 00:13:45,080
But why, yeah, why do you continue
to build products and services
234
00:13:45,100 --> 00:13:45,860
for it?
235
00:13:46,220 --> 00:13:47,720
Nikolay: Well, this is my personal.
236
00:13:48,160 --> 00:13:49,800
I built 3 social networks.
237
00:13:50,460 --> 00:13:52,560
Well, I was in Russia then.
238
00:13:53,480 --> 00:14:00,720
12 years ago, migrated to the US
and lost my interest in social
239
00:14:00,720 --> 00:14:01,600
networks already.
240
00:14:02,280 --> 00:14:06,000
But interest to databases was constant
all the time.
241
00:14:06,580 --> 00:14:10,580
Yes, and Postgres popularity grew,
demand started to grow, I
242
00:14:10,580 --> 00:14:15,060
think, in 2014-15, and this is
exactly when I needed additional
243
00:14:15,060 --> 00:14:18,840
source of income, so I started
helping other companies which
244
00:14:19,860 --> 00:14:23,580
started having bigger databases
in Postgres, like Postgres databases,
245
00:14:23,580 --> 00:14:25,280
and started having troubles.
246
00:14:25,660 --> 00:14:31,320
It was natural for me to use my
knowledge and desire to work
247
00:14:31,320 --> 00:14:36,840
with Postgres and that interest
into databases to start a consulting
248
00:14:36,980 --> 00:14:42,500
practice and then this podcast
was born out of these seeds, meetups
249
00:14:42,500 --> 00:14:48,340
in the past and desire to go online
with meetup activity because
250
00:14:48,340 --> 00:14:52,440
I know people are everywhere, like,
and meetups are only in 1
251
00:14:52,440 --> 00:14:52,900
place.
252
00:14:52,900 --> 00:14:55,020
It's good to meet in person, but
yeah.
253
00:14:55,080 --> 00:14:58,680
So it was quite natural, everything
was natural.
254
00:14:59,440 --> 00:15:01,160
So why Postgres?
255
00:15:01,260 --> 00:15:05,080
Because it's just, I have an interest,
I have the opportunity, things
256
00:15:05,080 --> 00:15:08,040
like match, and we continue working
with it, right?
257
00:15:09,780 --> 00:15:10,720
Michael: Yeah, perfect.
258
00:15:11,100 --> 00:15:12,320
I'm only hearing positives.
259
00:15:16,360 --> 00:15:20,200
Should I go through mine quickly,
the reasons for choosing it
260
00:15:20,200 --> 00:15:20,700
initially?
261
00:15:25,680 --> 00:15:28,840
I think some of them are quite
different from yours, but it's also
262
00:15:28,840 --> 00:15:29,340
later.
263
00:15:29,640 --> 00:15:30,860
My journey is later.
264
00:15:30,860 --> 00:15:34,960
So I first came across Postgres
through work rather than through
265
00:15:34,960 --> 00:15:36,360
academia or anything.
266
00:15:36,660 --> 00:15:37,900
My degree was unrelated.
267
00:15:38,920 --> 00:15:43,740
So I ended up coming across it
first while I was working at a
268
00:15:43,740 --> 00:15:44,980
database tools company.
269
00:15:45,120 --> 00:15:50,780
So I first fell in love with software
and it was almost entirely
270
00:15:50,860 --> 00:15:54,500
graphical user interfaces to things
like databases.
271
00:15:55,520 --> 00:16:00,400
So our biggest divisions at the
company were for SQL Server tools.
272
00:16:00,720 --> 00:16:02,360
So that was my first experience.
273
00:16:02,360 --> 00:16:06,360
And I came across Postgres first
as something people started
274
00:16:06,360 --> 00:16:06,860
requesting.
275
00:16:07,100 --> 00:16:09,640
Support, yeah, can you do the
same tools?
276
00:16:09,720 --> 00:16:12,600
We'd love to buy the same tools
from you for Postgres.
277
00:16:12,640 --> 00:16:17,300
You know, companies that used and
loved our tools for SQL Server
278
00:16:17,440 --> 00:16:22,080
were starting to do some projects
on Postgres, you know, moving
279
00:16:22,260 --> 00:16:26,040
not that many migrations at the
time, but like greenfield projects,
280
00:16:26,040 --> 00:16:27,380
they would often choose Postgres.
281
00:16:27,380 --> 00:16:31,220
So this was about that same time
that that 2013, 2014,
282
00:16:31,400 --> 00:16:31,900
2015.
283
00:16:32,380 --> 00:16:36,140
So it's those years that I started
to hear it more and more.
284
00:16:36,280 --> 00:16:42,240
And then in late 2014, I actually
moved to a startup in London,
285
00:16:43,220 --> 00:16:46,660
who were a payments company, our
payments company GoCardless,
286
00:16:46,960 --> 00:16:51,760
and their team, it was exceptional
engineering team, still is.
287
00:16:53,940 --> 00:16:55,160
And they love Postgres.
288
00:16:55,520 --> 00:16:59,180
And that really, like, hearing
that bigger companies were starting
289
00:16:59,180 --> 00:17:04,600
to use it, and then also knowing
that the cool YC startup scene
290
00:17:04,600 --> 00:17:08,360
were also using Postgres, that
really triggered something in
291
00:17:08,360 --> 00:17:08,480
me.
292
00:17:08,480 --> 00:17:10,600
It's like, ah, this isn't just
something.
293
00:17:10,600 --> 00:17:13,220
Like, I already knew that it was
up and coming.
294
00:17:13,260 --> 00:17:16,080
I know it's really old at the same
time, but I already knew it
295
00:17:16,080 --> 00:17:17,300
was becoming more popular.
296
00:17:17,720 --> 00:17:22,580
And that these engineers that were
much younger and VC-backed
297
00:17:22,800 --> 00:17:27,520
startup in the UK chose it and
loved it really inspired me to
298
00:17:27,520 --> 00:17:32,000
like, think this could be a platform
I'd want to build for this.
299
00:17:32,000 --> 00:17:33,320
This could be going places.
300
00:17:33,320 --> 00:17:34,060
And also.
301
00:17:34,940 --> 00:17:39,360
It's clearly a technology that
is already like sound and fundamentally
302
00:17:39,560 --> 00:17:42,660
sound if the, all of these companies
are choosing it.
303
00:17:42,780 --> 00:17:47,080
And I'd also really kind of reacted
negatively to some of the
304
00:17:47,080 --> 00:17:49,280
other things that had been hyped
up at a similar time.
305
00:17:49,280 --> 00:17:54,800
Like I really couldn't get behind
the whole MongoDB, like the
306
00:17:54,800 --> 00:17:56,760
NoSQL movement at the time.
307
00:17:56,760 --> 00:17:58,440
And also, do you remember big data?
308
00:17:58,440 --> 00:18:00,300
Do you remember that as like a
phase?
309
00:18:01,320 --> 00:18:06,140
Just really reacted strongly, like
strongly and negatively towards
310
00:18:06,140 --> 00:18:08,320
a lot of the people that were hyping
those up because it just
311
00:18:08,320 --> 00:18:12,420
didn't seem based on solid foundation,
like on good principles.
312
00:18:12,920 --> 00:18:15,800
And it didn't make sense to me
that these things were needed
313
00:18:15,800 --> 00:18:17,980
or like fundamentally better.
314
00:18:19,540 --> 00:18:23,480
And so when I saw Postgres was
coming, was up and coming, and
315
00:18:23,480 --> 00:18:26,640
it was based on good fundamentals,
and they prioritised, like
316
00:18:26,640 --> 00:18:29,080
I saw a lot of value alignment,
like you,
317
00:18:29,240 --> 00:18:29,440
Nikolay: I
318
00:18:29,440 --> 00:18:33,800
Michael: would, And I think like
most people, correctness and
319
00:18:33,800 --> 00:18:36,500
reliability are more important
than performance.
320
00:18:36,840 --> 00:18:40,120
Of course, performance matters
after that, but there's no point
321
00:18:40,120 --> 00:18:41,760
in it being fast and wrong.
322
00:18:42,340 --> 00:18:46,560
It's just that priority order seems
so much better in the Postgres
323
00:18:46,560 --> 00:18:47,060
ecosystem.
324
00:18:47,240 --> 00:18:49,900
But then beyond that, there were
loads of other benefits.
325
00:18:49,900 --> 00:18:54,940
Like as you say, free as in price,
that's obviously extremely
326
00:18:54,960 --> 00:18:55,460
attractive.
327
00:18:55,520 --> 00:19:00,040
And I think probably still underappreciated,
like actually free,
328
00:19:00,040 --> 00:19:01,420
like totally free.
329
00:19:02,260 --> 00:19:05,220
And then also the fact that it's
open from a source code perspective.
330
00:19:06,220 --> 00:19:10,060
Having built tools for SQL Server
and Oracle, having been involved
331
00:19:10,080 --> 00:19:14,060
in teams, having to research new
versions or look back to why
332
00:19:14,060 --> 00:19:16,400
things have broken, all sorts of
things.
333
00:19:16,400 --> 00:19:20,280
If you don't have access to the
source code, I mean, you don't
334
00:19:20,280 --> 00:19:20,960
have access.
335
00:19:21,100 --> 00:19:22,960
Nikolay: Many companies don't understand
that.
336
00:19:22,960 --> 00:19:26,060
I first felt this.
337
00:19:26,840 --> 00:19:31,020
I was experiencing this insight,
what you're just sharing, that
338
00:19:31,020 --> 00:19:34,580
source code is like… it's like
kind of deeper documentation.
339
00:19:36,100 --> 00:19:41,760
When I first had it in 2018, helping
some company which we are
340
00:19:41,760 --> 00:19:45,320
migrating to RDS, they were huge
already.
341
00:19:45,560 --> 00:19:50,540
They needed logical replication
to first to Vertica, then to
342
00:19:50,540 --> 00:19:51,800
Snowflake, doesn't matter.
343
00:19:52,200 --> 00:19:55,760
But they considered some tools
and 1 of the tools was maybe 1
344
00:19:55,760 --> 00:19:59,020
of the popular at that time was
Click, Xatunity.
345
00:20:00,660 --> 00:20:03,740
And the documentation didn't cover
so many questions I had.
346
00:20:04,860 --> 00:20:09,520
And I just, like, I realized I
was talking to my client, I just
347
00:20:09,520 --> 00:20:13,680
said, you know what, if they had
a source available, not open
348
00:20:13,680 --> 00:20:16,700
source, a source available, I would
just answer myself, because
349
00:20:16,700 --> 00:20:20,640
I can read code, it doesn't matter
language, I could find this
350
00:20:20,640 --> 00:20:23,740
place, how exactly they create
logical slot.
351
00:20:24,140 --> 00:20:27,900
Spent a lot of time and efforts,
I realized they create logical
352
00:20:27,900 --> 00:20:31,080
slot using SQL function, not replication
connection.
353
00:20:31,500 --> 00:20:32,940
That was their problem.
354
00:20:33,700 --> 00:20:39,520
But for me, lack of source code
means lack of ultimate documentation,
355
00:20:39,680 --> 00:20:40,180
basically.
356
00:20:41,260 --> 00:20:43,580
Michael: Ultimate and accurate
and up-to-date.
357
00:20:46,160 --> 00:20:47,760
Nikolay: It's also about transparency.
358
00:20:48,100 --> 00:20:51,960
If you don't provide source code,
you always can say, oh, we
359
00:20:51,960 --> 00:20:54,360
fixed this problem, but not in
all cases.
360
00:20:54,680 --> 00:20:59,060
But you cannot bullshit if you
have source available with all
361
00:20:59,060 --> 00:21:02,860
versions and tags and releases,
like anyone can see.
362
00:21:02,860 --> 00:21:03,980
It's about transparency.
363
00:21:04,700 --> 00:21:09,060
And transparency is why I have
doubts in Postgres.
364
00:21:09,840 --> 00:21:10,700
Michael: Oh, interesting.
365
00:21:11,180 --> 00:21:13,440
Nikolay: Yes, but it's not technical.
366
00:21:13,440 --> 00:21:15,660
Let's talk about technical first
before we...
367
00:21:15,660 --> 00:21:18,420
Michael: Well, I think we can intertwine
them.
368
00:21:18,420 --> 00:21:21,800
But a couple of other reasons I
chose it that are on the non-technical
369
00:21:22,160 --> 00:21:22,640
side.
370
00:21:22,640 --> 00:21:25,520
I think when you're building for.
371
00:21:25,520 --> 00:21:29,240
So I I'd worked at places that
chose Postgres, but I wasn't the
372
00:21:29,240 --> 00:21:30,000
decision maker.
373
00:21:30,000 --> 00:21:30,280
At those.
374
00:21:30,280 --> 00:21:33,580
You know, It was an already made
decision when I worked there.
375
00:21:33,680 --> 00:21:36,980
I never chose explicitly until
I started my own business.
376
00:21:37,300 --> 00:21:42,800
So it was only then that I mean,
we chose it not just as users,
377
00:21:42,800 --> 00:21:46,620
of course, but as as a platform
to build on.
378
00:21:47,080 --> 00:21:51,100
And because I was trying to build
something like long term, it's
379
00:21:51,100 --> 00:21:55,620
very much, you know, a small, slow,
steady, not VC backed, hopefully
380
00:21:55,640 --> 00:21:57,480
for decades, that kind of business.
381
00:21:58,180 --> 00:22:02,440
I didn't want to build for a platform
that there was, that was
382
00:22:02,440 --> 00:22:06,020
like, that could shift and change
drastically from underneath
383
00:22:06,020 --> 00:22:11,760
me and also that was really at
risk of a company changing their
384
00:22:11,760 --> 00:22:13,520
mind or changing something drastically.
385
00:22:13,580 --> 00:22:17,040
So it's often described as platform
risk and it felt really low
386
00:22:17,040 --> 00:22:20,060
with Postgres, not just because
it was built on really solid
387
00:22:20,060 --> 00:22:25,120
foundations but also because there's
no 1 company that can, if
388
00:22:25,120 --> 00:22:28,520
they, you know, there's no company
behind it, there's no commercial
389
00:22:28,680 --> 00:22:32,100
entity that is dependent on its
success.
390
00:22:32,100 --> 00:22:35,340
Nikolay: Like MySQL AB, right?
391
00:22:36,300 --> 00:22:37,280
Michael: Yeah, well, but...
392
00:22:37,280 --> 00:22:38,600
Nikolay: Or MongoDB, like the company.
393
00:22:38,600 --> 00:22:40,020
Michael: Yeah, like all of...
394
00:22:40,020 --> 00:22:42,240
If you consider all of the companies
that have changed their
395
00:22:42,240 --> 00:22:46,220
licenses in the last few years,
for example, That's just one example
396
00:22:46,220 --> 00:22:48,660
of how things can shift from underneath
you.
397
00:22:48,900 --> 00:22:52,700
But also, they could go completely
closed source, or in MySQL's
398
00:22:52,820 --> 00:22:57,940
case, stop publishing test cases,
which is one step towards, again,
399
00:22:58,080 --> 00:23:01,400
I don't think we've had any awful
examples where businesses really
400
00:23:01,400 --> 00:23:04,920
would have suffered, but they can
if there's a single company
401
00:23:04,920 --> 00:23:05,800
behind it.
402
00:23:05,800 --> 00:23:09,220
And the fact that Postgres was
not just, not just had seemingly
403
00:23:09,380 --> 00:23:13,260
had policies in place to prevent
that happening, but also seem
404
00:23:13,260 --> 00:23:14,560
to live those values.
405
00:23:15,060 --> 00:23:20,040
There's a real, there's lots of
companies that employ contributors
406
00:23:20,500 --> 00:23:24,400
and there's real collaboration
between those on new features
407
00:23:24,400 --> 00:23:25,640
and on bug fixes.
408
00:23:25,680 --> 00:23:30,800
And it seemed truly collaborative,
truly a community project,
409
00:23:30,860 --> 00:23:34,160
even though lots of those community
members were, almost all
410
00:23:34,160 --> 00:23:38,600
were being paid to work on it,
it was still a community, a group
411
00:23:38,600 --> 00:23:42,720
effort between collaborative organizations
that could all benefit
412
00:23:42,720 --> 00:23:43,800
from it getting better.
413
00:23:44,060 --> 00:23:48,260
And it just didn't seem like it
was as likely to have a fundamental
414
00:23:48,420 --> 00:23:50,900
shift as some of the other platforms
out there.
415
00:23:51,100 --> 00:23:52,620
Nikolay: It's interesting, actually.
416
00:23:53,300 --> 00:23:58,940
It resonates with my idea that
sometimes VC-backed company… Recently,
417
00:23:58,980 --> 00:24:03,180
we discussed companies which are
closing, post-VC-backed companies,
418
00:24:03,180 --> 00:24:04,300
startups, right?
419
00:24:05,140 --> 00:24:09,960
It resonates with the idea that
if you… VC-backed, you have pressure,
420
00:24:09,960 --> 00:24:10,340
right?
421
00:24:10,340 --> 00:24:13,880
And you can have… because of that
pressure, you can make some
422
00:24:14,380 --> 00:24:18,180
unpredicted moves, unpredictable
for your users and customers,
423
00:24:18,260 --> 00:24:18,760
right?
424
00:24:19,020 --> 00:24:23,360
For example, if you're a great
successful Postgres startup, but
425
00:24:23,360 --> 00:24:28,240
not successful enough for VCs,
you suddenly can decide to switch
426
00:24:28,240 --> 00:24:32,800
license and make more money if
you lose some users, right?
427
00:24:33,180 --> 00:24:33,680
Yeah.
428
00:24:34,240 --> 00:24:37,740
This is about Postgres, but you
apply the same logic for...
429
00:24:38,300 --> 00:24:41,940
This is about Postgres startup,
Postgres-related startup, right?
430
00:24:41,940 --> 00:24:45,460
But you apply the same logic to
Postgres core.
431
00:24:46,220 --> 00:24:48,500
Michael: Yeah, as a platform to
build on.
432
00:24:49,400 --> 00:24:50,520
Nikolay: Yeah, this is interesting.
433
00:24:51,220 --> 00:24:56,580
And if, for example, distributed
nature of development basically,
434
00:24:56,580 --> 00:24:57,080
right?
435
00:24:57,180 --> 00:24:58,760
Distributed nature of development.
436
00:24:58,820 --> 00:25:04,760
But of course there are some key
people and if they have gone,
437
00:25:04,760 --> 00:25:09,560
for example, disappeared or decided
to quit or something, Postgres
438
00:25:09,920 --> 00:25:12,280
has more chances to survive, right?
439
00:25:12,880 --> 00:25:17,300
This is what Bruce Momjian describes
in his talk Will Postgres
440
00:25:17,300 --> 00:25:19,480
Live Forever, right?
441
00:25:19,480 --> 00:25:22,580
Because like Postgres was dead several
times already.
442
00:25:23,300 --> 00:25:24,740
And someone picked it.
443
00:25:25,160 --> 00:25:29,180
Well, it was dead after it was
basically closed in Berkeley.
444
00:25:30,020 --> 00:25:35,560
And then it resurrected in the
middle of 90s as open source,
445
00:25:36,140 --> 00:25:36,640
right?
446
00:25:37,620 --> 00:25:39,180
So, yeah.
447
00:25:41,000 --> 00:25:41,940
Michael: Yeah, you're right.
448
00:25:41,940 --> 00:25:46,880
There are a few individuals who
contribute a huge, huge, huge
449
00:25:46,880 --> 00:25:47,380
amount.
450
00:25:48,700 --> 00:25:53,740
But it also feels like there are
others who contribute hugely
451
00:25:53,760 --> 00:25:54,160
too.
452
00:25:54,160 --> 00:25:59,580
And obviously, if a few of them
or several of them stopped, like
453
00:25:59,580 --> 00:26:06,420
when MySQL joined Oracle via Sun,
and you had the split with
454
00:26:06,420 --> 00:26:09,680
MariaDB if there was a fork like
that in the Postgres world for
455
00:26:09,680 --> 00:26:13,140
some reason and several of the
contributors all left at once
456
00:26:13,140 --> 00:26:17,960
or 1 or 2 really really big important
ones did I can imagine
457
00:26:17,960 --> 00:26:25,240
it being detrimental to the speed
of Postgres enhancements, but
458
00:26:25,240 --> 00:26:28,440
I do think there's still so much
momentum.
459
00:26:28,680 --> 00:26:30,480
And actually, I don't think...
460
00:26:30,480 --> 00:26:34,200
I mean, we can talk about it, but
I think feature growth is really
461
00:26:34,200 --> 00:26:38,180
helping with Postgres, but I actually
don't think it's as, now
462
00:26:38,180 --> 00:26:41,600
that it's competitive with Oracle
and SQL Server on a bunch of
463
00:26:41,600 --> 00:26:46,640
like enterprise and like performance
features, it's not as important
464
00:26:46,640 --> 00:26:49,620
that we keep innovating as quickly
on the feature level.
465
00:26:49,700 --> 00:26:54,220
Perhaps things like pgvector and
making sure we're available
466
00:26:54,220 --> 00:26:58,640
for new use cases via extensions
or via core could be important.
467
00:26:59,280 --> 00:27:01,160
But yeah, I'd be keen to go back
to you.
468
00:27:01,160 --> 00:27:02,200
You already raised...
469
00:27:02,960 --> 00:27:06,220
Do you want to cover technical
reasons why others are choosing
470
00:27:06,220 --> 00:27:09,560
it, maybe us or others, or do you
want to move to doubts and
471
00:27:09,560 --> 00:27:09,840
things
472
00:27:09,840 --> 00:27:10,240
Nikolay: like that?
473
00:27:10,240 --> 00:27:11,960
Let's quickly cover technical reasons.
474
00:27:11,960 --> 00:27:18,460
So first of all, it has a strong
foundation, follows principles,
475
00:27:18,640 --> 00:27:23,400
follows standard, not fully, but
quite well, much better than
476
00:27:23,400 --> 00:27:24,180
many others.
477
00:27:24,920 --> 00:27:30,700
And this is like, it has principles
like extensibility and so
478
00:27:30,700 --> 00:27:30,900
on.
479
00:27:30,900 --> 00:27:36,300
Like these technical things, like
Extensibility is constantly
480
00:27:36,300 --> 00:27:38,240
bringing new features.
481
00:27:39,960 --> 00:27:47,240
pgvector relies on extensions framework,
and it has its own lifecycle,
482
00:27:47,440 --> 00:27:50,180
but maybe it will go to the core
at some point.
483
00:27:50,840 --> 00:27:51,720
Maybe, right?
484
00:27:51,980 --> 00:27:56,080
As the full-text search or XML
did in the past, they were separate
485
00:27:56,840 --> 00:28:00,080
extensions, but then went to core.
486
00:28:00,580 --> 00:28:03,740
And this means also features are
coming, coming, coming.
487
00:28:03,740 --> 00:28:04,500
That's great.
488
00:28:05,820 --> 00:28:09,720
Michael: Or it could, there's another
success case where it could
489
00:28:09,720 --> 00:28:12,980
be more like PostGIS, which has
been incredibly successful and
490
00:28:12,980 --> 00:28:16,360
helpful for the growth of Postgres
in my opinion, and has stayed
491
00:28:16,360 --> 00:28:17,060
an extension.
492
00:28:17,300 --> 00:28:21,540
And I think a lot of people are
choosing PostGIS, and Postgres
493
00:28:21,600 --> 00:28:24,480
comes along for the ride, rather
than the other way around.
494
00:28:24,480 --> 00:28:25,400
And that's really cool.
495
00:28:25,400 --> 00:28:27,180
And it could be the same in pgvector.
496
00:28:27,400 --> 00:28:30,480
Like, people could be choosing
pgvector, and Postgres comes along
497
00:28:30,480 --> 00:28:31,900
for the ride in those cases.
498
00:28:32,120 --> 00:28:36,100
So yeah, either case could be a
huge success still.
499
00:28:37,060 --> 00:28:39,020
Nikolay: PostGIS is an interesting
example.
500
00:28:39,860 --> 00:28:43,980
Yeah, and it's kind of a whole
different world, right?
501
00:28:44,640 --> 00:28:49,280
But imagine it was part of, like
Postgres documentation doesn't
502
00:28:49,280 --> 00:28:50,040
have PostGIS.
503
00:28:51,460 --> 00:28:58,700
Would Postgres be even more successful
if PostGIS was in core
504
00:28:58,700 --> 00:29:00,300
and documentation had it?
505
00:29:00,300 --> 00:29:07,540
Or, for example, if Timescale,
the company, decided to go all
506
00:29:07,540 --> 00:29:14,440
in with TimescaleDB and make it
super open, eventually contributing
507
00:29:14,540 --> 00:29:15,420
it to Core.
508
00:29:16,240 --> 00:29:19,540
Just imagine, with all compression
and all the stuff and Postgres
509
00:29:19,540 --> 00:29:20,880
documentation had it.
510
00:29:21,740 --> 00:29:25,520
I know it's not good for their
business maybe, but imagine this
511
00:29:25,520 --> 00:29:26,980
world we live in.
512
00:29:27,160 --> 00:29:33,220
Postgres has PostGIS, it has TimescaleDB,
pgvector, it has everything,
513
00:29:33,240 --> 00:29:33,740
right?
514
00:29:33,960 --> 00:29:38,460
The level of quality is unified,
right?
515
00:29:38,460 --> 00:29:43,240
It's like it's being tested all
the time in the same manner as
516
00:29:43,440 --> 00:29:44,440
Postgres itself.
517
00:29:44,660 --> 00:29:49,780
And people don't spend time trying
to understand how to bring
518
00:29:49,780 --> 00:29:50,920
these pieces together.
519
00:29:51,400 --> 00:29:55,080
And if it's managed Postgres like
RDS or something, all the pieces
520
00:29:55,080 --> 00:29:56,100
are there already.
521
00:29:56,940 --> 00:29:58,780
Michael: Yeah, I can see arguments
both ways.
522
00:29:58,780 --> 00:30:02,040
I've seen people I respect a lot
arguing completely the opposite
523
00:30:02,040 --> 00:30:02,540
direction.
524
00:30:02,640 --> 00:30:04,780
Nikolay: So maybe we should define
what Postgres is.
525
00:30:04,780 --> 00:30:09,780
There is Postgres when you just
install it with a few extensions,
526
00:30:09,780 --> 00:30:13,320
not a few, dozens of them, so-called
KDRIP modules, right?
527
00:30:13,320 --> 00:30:18,025
And also CLI, tool psql, and that's
it, right?
528
00:30:18,025 --> 00:30:18,580
That's it.
529
00:30:19,900 --> 00:30:25,180
It also can create a user in your
Ubuntu or Debian or CentOS
530
00:30:25,180 --> 00:30:28,940
and set things up and be installed
as a service.
531
00:30:30,100 --> 00:30:30,740
Of course.
532
00:30:30,920 --> 00:30:31,920
But that's it.
533
00:30:32,580 --> 00:30:37,540
There are also super popular extensions
which make Postgres very
534
00:30:37,540 --> 00:30:42,840
different, like PostGIS or TimescaleDB
or pgvector.
535
00:30:43,860 --> 00:30:44,360
Great.
536
00:30:44,540 --> 00:30:46,020
It's also Postgres or no?
537
00:30:46,020 --> 00:30:47,280
It's also Postgres, right?
538
00:30:47,280 --> 00:30:48,220
Bigger Postgres.
539
00:30:50,280 --> 00:30:55,260
It's like there is Los Angeles,
but if you live in Long Beach,
540
00:30:55,260 --> 00:30:56,980
you still live in Los Angeles,
right?
541
00:30:56,980 --> 00:31:02,120
It's like there are bigger Postgres.
542
00:31:02,520 --> 00:31:05,340
Michael: Al-Khalili That's a great
example because it depends
543
00:31:05,340 --> 00:31:08,520
in what context you're speaking
and who you're speaking to and
544
00:31:08,520 --> 00:31:11,180
you know how familiar they are
with the area if they say where
545
00:31:11,180 --> 00:31:15,140
are you from but it's if you if
you're a local coffee shop in
546
00:31:15,660 --> 00:31:18,620
near LA and someone asks where
you're from, you'll probably be
547
00:31:18,620 --> 00:31:19,300
more specific.
548
00:31:20,940 --> 00:31:24,140
But if you're in Thailand and somebody
asks where you're from,
549
00:31:24,140 --> 00:31:25,580
you'll probably just say LA.
550
00:31:25,680 --> 00:31:26,440
Nikolay: Same here.
551
00:31:26,760 --> 00:31:28,040
Michael: Same, exactly the same.
552
00:31:28,040 --> 00:31:31,300
Nikolay: We use Postgres, but if
you say we use Timescale Cloud,
553
00:31:31,300 --> 00:31:34,320
we're already like, okay, also
Postgres, but definitely with
554
00:31:34,320 --> 00:31:38,240
TimescaleDB and probably without
some things they don't provide.
555
00:31:40,080 --> 00:31:40,520
Interesting.
556
00:31:40,520 --> 00:31:41,900
So there's bigger Postgres.
557
00:31:42,180 --> 00:31:45,800
There are also many tools around,
like you're building 1 and
558
00:31:45,800 --> 00:31:46,860
we're building something.
559
00:31:47,160 --> 00:31:52,080
So these tools, yeah, but a lot
of options and it's like quite
560
00:31:52,080 --> 00:31:53,060
a rich ecosystem.
561
00:31:53,460 --> 00:31:54,360
Great right?
562
00:31:54,720 --> 00:31:57,380
So this is also a reason why Postgres,
because the ecosystem is
563
00:31:57,380 --> 00:31:59,640
super rich and growing and it's
great.
564
00:32:00,400 --> 00:32:03,160
Michael: Although possibly, like
I think that could be an argument
565
00:32:03,160 --> 00:32:04,000
against it.
566
00:32:04,000 --> 00:32:07,040
Definitely when I first was looking
at Postgres, I'd actually
567
00:32:07,040 --> 00:32:10,740
say that other ecosystems were
a little bit more advanced.
568
00:32:10,880 --> 00:32:15,560
There were more people building
external tools for some of the
569
00:32:15,560 --> 00:32:17,060
other systems.
570
00:32:17,320 --> 00:32:22,120
So I do think there's like an,
that's not as obvious a 1 for
571
00:32:22,120 --> 00:32:25,260
choosing Postgres in my opinion,
but it's great that the more
572
00:32:25,260 --> 00:32:30,360
and more are popping up the last like
technical ones I had were obviously
573
00:32:30,360 --> 00:32:33,840
the extensibility, not just in
terms of pre-made extensions,
574
00:32:33,840 --> 00:32:37,520
but the fact you could like as
a user, you can extend Postgres
575
00:32:37,660 --> 00:32:38,400
in various ways.
576
00:32:38,400 --> 00:32:41,520
I think a lot of people do choose
it for those reasons.
577
00:32:41,720 --> 00:32:42,260
Nikolay: Of course.
578
00:32:42,260 --> 00:32:42,760
Yeah.
579
00:32:42,800 --> 00:32:48,160
Starting from the creation of your
own data type to your own type
580
00:32:48,160 --> 00:32:54,220
of index and extensions and now
like even more things up to storage
581
00:32:54,220 --> 00:32:55,420
engines and so on.
582
00:32:55,760 --> 00:32:57,080
Michael: Yeah, exactly.
583
00:32:57,340 --> 00:33:00,140
I think people can dip their toe
in with a new data type and
584
00:33:00,140 --> 00:33:02,640
then like gradually get more and
more excited by what they could
585
00:33:02,640 --> 00:33:02,880
build.
586
00:33:02,880 --> 00:33:05,860
And then the last technical 1 I
had on my list was, and this
587
00:33:05,860 --> 00:33:08,860
might be more why people stay rather
than why people join in
588
00:33:08,860 --> 00:33:12,440
the first place, but backwards
compatibility is so helpful.
589
00:33:13,320 --> 00:33:17,480
Because of the good fundamentals
and because Postgres has five-year
590
00:33:18,080 --> 00:33:23,680
support of major versions, people
aren't forced to upgrade like
591
00:33:23,680 --> 00:33:26,520
that often and things don't tend
to break when they do.
592
00:33:26,520 --> 00:33:29,060
You know, obviously we've done
episodes on this and there's a
593
00:33:29,060 --> 00:33:31,680
lot of complexity around major
version upgrades and you do have
594
00:33:31,680 --> 00:33:33,220
to re-release those things.
595
00:33:34,000 --> 00:33:39,620
But compared to other systems,
compared to other platforms that
596
00:33:39,620 --> 00:33:42,840
people are building and building
for, things like there are major
597
00:33:43,100 --> 00:33:48,060
breaking changes in a lot of database
major version upgrades.
598
00:33:48,580 --> 00:33:51,180
And having seen people have to
deal with those and have to get
599
00:33:51,180 --> 00:33:55,520
stuck on really old versions, it's
just so much better in the
600
00:33:55,520 --> 00:33:56,540
Postgres world.
601
00:33:56,580 --> 00:34:00,280
So I think that might be a reason
people stay or like maybe some
602
00:34:00,280 --> 00:34:02,320
very smart people, the reason they
choose it.
603
00:34:02,320 --> 00:34:05,060
But I definitely wasn't aware of
that when I was first coming
604
00:34:05,060 --> 00:34:05,820
across it.
605
00:34:07,840 --> 00:34:08,340
Nikolay: Right.
606
00:34:08,420 --> 00:34:08,920
Yeah.
607
00:34:09,800 --> 00:34:10,080
Michael: Yeah.
608
00:34:10,080 --> 00:34:14,680
So on the doubt side of things,
you mentioned transparency.
609
00:34:15,140 --> 00:34:15,640
Transparency.
610
00:34:16,020 --> 00:34:16,360
Nikolay: Yeah.
611
00:34:16,360 --> 00:34:24,620
For me, transparency is a key factor
I dislike in Postgres because
612
00:34:25,580 --> 00:34:28,040
the source code is open.
613
00:34:28,500 --> 00:34:30,500
In mailing list, they are open
as well.
614
00:34:30,500 --> 00:34:31,420
Tanner Iskra Sure.
615
00:34:31,420 --> 00:34:36,760
Leon Mandeley But if you look closer,
and I know like people
616
00:34:36,760 --> 00:34:39,300
who just use Postgres, they don't
see problems.
617
00:34:40,160 --> 00:34:44,240
But I know for sure, not like only
based on my experience, but
618
00:34:44,240 --> 00:34:48,580
based on many companies, not just
1, not just 2, many companies,
619
00:34:49,300 --> 00:34:53,160
people who are in the head of those
companies, Postgres-related
620
00:34:53,500 --> 00:34:59,240
companies, big ones, big names,
they feel this lack of transparency
621
00:34:59,680 --> 00:35:00,520
in processes.
622
00:35:03,480 --> 00:35:08,440
Like Postgres project doesn't apply
this principle to itself.
623
00:35:10,080 --> 00:35:11,600
Processes are not transparent.
624
00:35:12,870 --> 00:35:18,380
Michael: Question, just to ask
where you're going with this,
625
00:35:19,900 --> 00:35:23,600
do you consider any other alternative
projects more transparent
626
00:35:23,720 --> 00:35:26,540
and more open, like, along this
axis?
627
00:35:27,980 --> 00:35:31,060
Nikolay: I'm honestly not a big
expert here.
628
00:35:31,060 --> 00:35:38,140
I just see if, like, well, usually
organizations which are built
629
00:35:38,400 --> 00:35:43,020
recently, which are quite strong
and so on, have kind of democracy,
630
00:35:43,200 --> 00:35:43,700
right?
631
00:35:44,060 --> 00:35:47,520
They have elections, some rotation
of power.
632
00:35:47,900 --> 00:35:50,740
Michael: When I'm looking at alternatives,
if I'm thinking like
633
00:35:50,740 --> 00:35:57,100
MySQL, Redis, SQLite, none of those
have as far as...
634
00:35:57,180 --> 00:36:00,000
Nikolay: But it doesn't mean there's
no problem.
635
00:36:00,820 --> 00:36:01,920
Michael: No, no, no.
636
00:36:02,100 --> 00:36:07,320
I'm just like the question why
Postgres partly asks if not Postgres,
637
00:36:07,440 --> 00:36:08,160
what else?
638
00:36:08,180 --> 00:36:09,640
Like, they're almost in the database.
639
00:36:11,140 --> 00:36:12,120
Or do you know what I mean?
640
00:36:12,120 --> 00:36:16,320
Like if you're gonna, if you doubt
it and then say, maybe this
641
00:36:16,320 --> 00:36:18,340
isn't it, what would it be?
642
00:36:18,340 --> 00:36:19,740
Like what's the alternative?
643
00:36:21,040 --> 00:36:22,160
Nikolay: Yeah, good question.
644
00:36:22,540 --> 00:36:26,380
It can be forked postgres with
different principles.
645
00:36:26,540 --> 00:36:27,040
Interesting.
646
00:36:27,620 --> 00:36:28,300
Yeah, yeah.
647
00:36:28,620 --> 00:36:33,420
Honestly, I like, I, When I raised
in the beginning of this discussion,
648
00:36:33,580 --> 00:36:37,460
I raised this, I have doubts, I
have them for long.
649
00:36:38,800 --> 00:36:42,160
I just wanted to look inside myself
and validate.
650
00:36:42,440 --> 00:36:45,860
But while we are discussing all
these things are good, I'm still
651
00:36:45,860 --> 00:36:46,740
staying honestly.
652
00:36:46,740 --> 00:36:50,700
Like I already feel like I'm still
staying with Postgres, but
653
00:36:50,720 --> 00:36:54,020
people must know I'm not fully
satisfied with things.
654
00:36:54,840 --> 00:36:59,120
And at some point, I might say
it's enough for me.
655
00:37:00,040 --> 00:37:01,280
I don't feel it right now.
656
00:37:01,280 --> 00:37:02,580
I'm very far from it.
657
00:37:03,040 --> 00:37:05,380
But lack of transparency.
658
00:37:06,160 --> 00:37:10,380
Michael: Yeah, so we've got lots
of reasons why we chose Postgres
659
00:37:10,380 --> 00:37:14,340
in the first place, lots of positives,
like still that we would
660
00:37:14,340 --> 00:37:17,200
choose it again today and that
we do continue to choose it every
661
00:37:17,200 --> 00:37:17,700
day.
662
00:37:17,800 --> 00:37:19,780
Some areas for improvement for
sure.
663
00:37:19,780 --> 00:37:21,920
I don't see a great alternative.
664
00:37:22,040 --> 00:37:25,920
I think it's still exceptional
and love building for it, and
665
00:37:25,920 --> 00:37:28,100
I'm hoping to for decades to come.
666
00:37:29,600 --> 00:37:33,520
It'd be cool to hear from anybody
that works in or with like
667
00:37:33,520 --> 00:37:37,660
similar organizations with different
governance structures and
668
00:37:37,660 --> 00:37:38,800
how those work.
669
00:37:38,960 --> 00:37:42,040
All I can think of is like benevolent
dictator types you know
670
00:37:42,040 --> 00:37:45,620
Linux and and SQLite and things
but I'm sure there are other
671
00:37:45,620 --> 00:37:49,040
good communities like I think the
Kubernetes 1 keeps coming up
672
00:37:49,040 --> 00:37:49,900
as a...
673
00:37:49,900 --> 00:37:51,240
Nikolay: Cloud native, maybe.
674
00:37:51,820 --> 00:37:53,920
Michael: Yeah, so there are some
interesting ones out there that
675
00:37:53,920 --> 00:37:56,040
are run slightly differently, so
it'd be great to hear from people
676
00:37:56,040 --> 00:37:57,600
that are heavily involved in those.
677
00:37:58,780 --> 00:37:59,280
Nikolay: Mm-hmm.
678
00:38:00,140 --> 00:38:00,560
Right.
679
00:38:00,560 --> 00:38:06,780
So, yeah, in my opinion, Postgres
is definitely one of the greatest
680
00:38:06,780 --> 00:38:08,840
examples of open source.
681
00:38:11,580 --> 00:38:18,980
I see it as a big bazaar with one
big cathedral in the center,
682
00:38:19,940 --> 00:38:25,140
which now I recognize and smaller
cathedrals on this bazaar maybe.
683
00:38:25,320 --> 00:38:29,240
Well, the cathedral is one, it's
one, but it's still a bazaar and
684
00:38:29,240 --> 00:38:33,100
no matter what, I think it has
good chances to be a good bazaar,
685
00:38:33,420 --> 00:38:38,220
like with many voices, even if
people inside the cathedral in the
686
00:38:38,220 --> 00:38:40,740
center don't agree with those voices,
right?
687
00:38:41,320 --> 00:38:47,180
These voices cannot be due to probably
due to original nature,
688
00:38:47,800 --> 00:38:52,260
license chosen in the '90s, and the
original nature of the project
689
00:38:52,260 --> 00:38:57,840
itself, even if there are conflicts,
this bazaar will still be
690
00:38:57,840 --> 00:38:58,340
huge.
691
00:38:58,660 --> 00:39:03,500
And I think it has good chances
to be huge, with different opinions,
692
00:39:03,760 --> 00:39:05,040
sometimes very contradicting.
693
00:39:06,140 --> 00:39:11,400
So yeah, I'm glad it's a bazaar
because I think it's a good thing,
694
00:39:11,400 --> 00:39:12,560
like an open source.
695
00:39:12,560 --> 00:39:15,740
You know, I'm referring to cathedral
and the bazaar by recreation.
696
00:39:16,560 --> 00:39:19,080
Michael: Yeah, yeah, I love the
analogy and you've used it multiple
697
00:39:19,080 --> 00:39:22,440
times in the past but it's always
been cathedral or bazaar.
698
00:39:22,720 --> 00:39:23,160
Nikolay: LM.
699
00:39:23,160 --> 00:39:26,990
Yeah, but now I see bazaar with
a big cathedral in the center.
700
00:39:26,990 --> 00:39:27,040
AD.
701
00:39:27,040 --> 00:39:28,420
Michael: There is a cathedral in
the middle.
702
00:39:28,420 --> 00:39:30,080
Maybe it's not that big though.
703
00:39:30,140 --> 00:39:34,020
It is a cathedral but maybe the
bazaar is bigger and the cathedral
704
00:39:34,020 --> 00:39:34,448
is very large.
705
00:39:34,448 --> 00:39:34,572
LM.
706
00:39:34,572 --> 00:39:34,696
I
707
00:39:34,696 --> 00:39:37,260
Nikolay: feel sometimes this cathedral
in the center tries to
708
00:39:37,260 --> 00:39:39,060
pretend there is no bazaar almost.
709
00:39:40,960 --> 00:39:43,320
Or this cathedral can define all
the rules.
710
00:39:43,320 --> 00:39:44,020
It cannot.
711
00:39:44,240 --> 00:39:46,060
It cannot define all the rules.
712
00:39:46,560 --> 00:39:47,640
Michael: Have you seen Monty Python?
713
00:39:47,640 --> 00:39:50,820
There's Monty Python, I think it's,
which 1 is it, maybe Search
714
00:39:50,820 --> 00:39:51,860
for the Holy Grail?
715
00:39:52,360 --> 00:39:53,560
Have you seen the Monty Python
716
00:39:53,560 --> 00:39:53,940
films?
717
00:39:53,940 --> 00:39:54,020
Nikolay: No.
718
00:39:54,020 --> 00:39:56,020
Michael: No, I think you would like them.
719
00:39:56,720 --> 00:39:58,060
Nikolay: My son loves it.
720
00:39:58,380 --> 00:39:58,780
He tries
721
00:39:58,780 --> 00:40:01,080
to convince me for years
to watch everything.
722
00:40:01,080 --> 00:40:01,400
Michael: You have
723
00:40:01,400 --> 00:40:03,220
to watch it, I think you'll
enjoy it.
724
00:40:03,340 --> 00:40:07,820
But there's 1 moment where the
king is going up to the peasants
725
00:40:07,820 --> 00:40:11,960
working the land and tells them
what to do because he's their
726
00:40:11,960 --> 00:40:12,260
king.
727
00:40:12,260 --> 00:40:14,520
And they're like, I don't believe
in a king.
728
00:40:15,060 --> 00:40:16,220
So it's quite funny.
729
00:40:16,500 --> 00:40:17,560
I'll link that up.
730
00:40:17,560 --> 00:40:19,340
Nikolay: Yeah, I should see.
731
00:40:19,840 --> 00:40:25,480
So yeah, for sure it will remain
to be a cathedral and it's good.
732
00:40:26,060 --> 00:40:34,120
So yeah, I thank you for help validating
that I still want to
733
00:40:34,120 --> 00:40:35,580
use Postgres, you know.
734
00:40:35,660 --> 00:40:38,980
For me, I have enough reasons to
use Postgres no matter what.
735
00:40:39,060 --> 00:40:40,220
No matter what happened.
736
00:40:40,440 --> 00:40:41,020
I mean...
737
00:40:41,040 --> 00:40:41,540
Michael: Nice.
738
00:40:41,540 --> 00:40:44,060
Maybe we'll discuss again in a
couple of years and see where
739
00:40:44,060 --> 00:40:44,880
you are there.
740
00:40:45,020 --> 00:40:46,020
Nikolay: Yeah, well, yeah.
741
00:40:46,020 --> 00:40:50,820
I'm quite positive I will keep
using it and help other people
742
00:40:51,000 --> 00:40:52,740
to use it in a better way.
743
00:40:53,860 --> 00:40:54,640
Michael: Me too.
744
00:40:55,440 --> 00:40:56,960
Wonderful, thanks so much, Nikolay.
745
00:40:56,980 --> 00:40:57,940
Catch you next week.