With this office hours we had a lot of questions about MySQL and PostgreSQL
and why you prefer Postgres to MySQL, why other people MySQL a lot of the time.
If you could answer some of those, it'd be great.
Yes, yes. We'll start with the first question, which is why I prefer Postgres over MySQL.
This is a two-part answer.
Back in 2005 when we started Reddit, I was basically where you are now,
which is just learning how web apps work.
I was trying to install all this stuff on my computer, and I was trying to install MySQL and Postgres,
and MySQL wouldn't compile on my Mac and Postgres would. >>That's a good reason.
I mean, actually to be fair, it says a lot about a project.
Like if it builds on my Mac it'll probably build just about anywhere,
because at the time OSX was still fairly new.
That's how we started with Postgres.
MySQL at the time was still very popular--far more popular than Postgres,
but it had a reputation for being a little lossy with data.
This may be the right word--a little inconsistent.
Postgres--the documentation was better, they would sacrifice functionality over stability
and consistency and adherence to kind of the SQL standard.
Some queries that we did on Reddit that kind of pushed the limits of these databases
ran much, much faster in Postgres than in MySQL, so I've just been loyal ever since.
These days feature-for-feature they're basically the same.
MySQL is not nearly so cavalier with your data
and a lot of people use MySQL.
At this point, whichever you prefer.
Maybe go back to whichever compiles easier on your computer is
a perfectly acceptable reason these days, I think.
We also had some questions about other types of databases,
why NoSQL databases were popular, why a lot of companies are moving to that.
You mentioned that Facebook uses MySQL, I believe,
and we had some questions about them using NoSQL as well.
Okay, sure. NoSQL is basically a reaction to the difficulties of developing with SQL databases.
One of the challenges of SQL databases is you have define your tables ahead of time.
You have to know your coms are going to be. You have to know what the type are.
When you're writing web software, one of the advantages of writing web software
is you don't have to think everything through in advance.
You can get something working. You can put it online. You can see how users react to it.
You can kind of iterate from there--add new features, take features away--whatever you want to do.
The challenge is when you have databases and a large amount of data,
you have to sometimes add a new column or add a new index or add a bunch of new datatypes.
When you have a database in production that has thousands or millions of users,
this can be really painful.
These NoSQL databases--generally, they try to solve that problem.
Another way to describe them would be schema-less databases.
The databases don't have a schema.
That is they don't have a formal description of columns and datatypes, and it's neat.
On Reddit, we kind of built our own kind of schema-less system on top of Postgres.
We actually do the same thing again at Hipmunk.
It's a nice way of working.
The challenge right now with a lot of these schema-less databases is they're not very good.
They're brand new technology. Databases are really hard.
They have stability problems. Documentation is lacking.
Not very many of them are used in the wild in production,
so you don't have good support and people to lean on and that sort of thing.
In my opinion it's still wise, especially when it comes to data,
especially if you care about your data, to stick with something that's proven, that works,
that you know how to scale.
Everybody has worked with Postgres and MySQL for a long time now,
so those things work very, very well.
Now, as for Facebook--I don't work at Facebook, so I'm not an authority on the subject--
but I know they use a lot of MySQL.
They've actually made a lot of improvements to MySQL.
They also wrote their own NoSQL system, called Cassandra,
which my understanding--although I don't know for sure--is they don't actually use anymore.
Reddit uses Cassandra, incidentally. They started using that after I left, however.
I can't say with a clear conscious that I condone that decision,
but apparently it's working for them in production.
Your mileage may vary. Personally, I'm happy with Postgres.
I know how to scale it these days, and you can get away with kind of schema-less
behaviors in Postgres by just storing one column that's like a big wad of JSON, for example.
That actually works really well, depending on what problems you're solving.
Anyway, that's a long answer to a simple question, but that's my opinion. >>Great.
Durante las horas de oficina surgieron varias dudas sobre MySQL y Postgre SQL
como por qué prefieres Postgres antes que MySQL, si la mayoría prefiere MySQL.
Nos encantaría escuchar algunas respuestas.
Sí, sí. Comenzaré con la primera pregunta. Por qué prefiero Postgres a MySQL.
Tengo dos respuestas.
Cuando inicié Reddit en 2005, estaba en tu lugar
aprendiendo cómo funcionan las web apps.
intenté instalar varias cosas en mi computadora, como MySQL y Postgres
y MySQL no compilaba en mi Mac pero Postgres sí. -Es un buen motivo.
Eso dice mucho de un proyecto.
Si funciona en mi Mac, seguramente funcionara en cualquier otro lugar
ya que en ese momento OSX era muy nuevo.
Por eso comenzamos con Postgres.
En esa época, MySQL era mucho más popular que Postgres
pero tenía la fama de perder algunos datos,
o mejor dicho, era inconsistente.
Con Postgres, la documentación era mejor, la estabilidad estaba por encima de la funcionalidad,
tenía consistencia y fidelidad al modelo estándar de SQL.
Algunas búsquedas que hacíamos en Reddit exigían el máximo de la base de datos,
y funcionaban muchísimo más rápido en Postgres que en MySQL, y desde entonces le he sido fiel.
Hoy en día, si comparamos las funciones, son básicamente iguales.
MySQL no es tan descuidado con tus datos,
y mucha gente lo utiliza.
a esta altura, el que prefieras.
Tal vez volver a lo que compile mejor compile en tu computadora,
es razón suficiente el día de hoy.
También surgieron dudas sobre otros tipos de bases de datos,
como por qué las bases de datos NoSQL son populares, por qué varias empresas se cambian a eso.
Mencionaste que Facebook usa MySQL
y nos preguntaron si también usaban NoSQL.
NoSQL surge a raíz de las dificultades de desarrollar con base de datos SQL
uno de los retos de SQL es que debes definir las tablas de antemano.
Debes saber cuáles serán los comandos y de qué tipo.
Una de las ventajas de escribir web software,
es que no necesitas pensar todo con anticipación.
Puedes hacerlo funcionar, subirlo a la red y ver cómo reaccionan los usuarios.
Puedes modificarlo, agregar o quitar características, lo que quieras.
El problema es cuando tienes bases de datos y grandes cantidades de datos,
a veces debes agregar una columna o un índice nuevo o agregar nuevos tipos de datos.
Cuando tienes una base de datos en producción que tienen miles o millones de usuarios,
puede resultar difícil.
Las bases de datos NoSQL, por lo general, tratan de solucionar este problema.
También se los conoce como bases de datos schema-less.
o sea que son bases de datos sin esquema.
No tienen una clase formal de columnas y tipos de datos y es ordenado.
En Reddit, creamos nuestro propio sistema schema-less sobre Postgres.
Y hacemos lo mismo en Hipmunk.
Es más agradable trabajar así.
Ahora el problema con estas bases de datos schema-less es que no son muy buenas.
Es tecnología muy reciente. Las bases de datos son muy complicadas.
Tienen problemas de estabilidad, les falta documentación.
Son pocos los que lo utilizan abiertamente en producción,
así que no tienes soporte o gente que te respalde y demás.
En mi opinión, cuando se trata de datos,
y si te preocupan tus datos, es mejor quedarse con algo que de seguro funcione,
que sepas como manejar.
Todos han tabajado con Postgres y MySQL durante mucho tiempo
así que funcionan muy muy bien.
En cuanto a Facebook... no trabajo en Facebook así que no sé mucho,
pero sí sé que usan mucho MySQL.
De hecho le hicieron varias mejoras a MySQL.
También crearon su propio sistema NoSQL, llamado Cassandra,
que creo, aunque no estoy seguro, que ya no lo utilizan más.
Casualmente, Reddit usa Cassandra. Aunque comenzaron a utilizarlo después que me fui.
No puedo decir que apruebo esa decisión,
pero al parecer les sirve en la producción.
Tus resultados pueden variar. Personalmente, estoy contento con Postgres
ya sé cómo configurarlo, y puedes utilizar funciones schema-less
en Postgres almacenando una columna que sería un archivo WAD en JSON, por ejemplo.
Funciona bastante bien, según los problemas que intentes resolver
En fin, una respuesta larga a una pregunta simple, pero es mi opinión. -Genial.
MySQLとPostgreSQLについて たくさん質問をもらっています
なぜMySQLの人気が高いのですか？ あなたはなぜMySQLよりPostgreSQLを好むのですか？
質問に答えてもらえますか?
順番に答えましょう なぜ私はPostgreSQLが好きなのか？
2つの答えがあります
Redditを始めた2005年 私はアプリケーションの仕事を
学び始めたばかりの初心者でした
私はMySQLとPostgreSQLを自分のPCに インストールしました
MySQLは私のMacとコンパイルできず PostgreSQLはできたのが理由です
これはプロジェクトによるところが大きいのです
私のMacで構築されたものは どこでも同じだったでしょう
当時OSXはまだかなり新しかったのです
それがPostgreSQLで始めた理由です
当時のMySQLはPostgreSQLに比べ はるかにポピュラーでしたが
データに不可逆性があると言われていました
少し矛盾があるというのが正しい表現かもしれません
PostgreSQLはドキュメンテーションはいいのですが 安定性と一貫性と忠実性の機能を
SQLのスタンダートに比べ 犠牲にしている部分がありました
Redditで行ったクエリは データベースの限界に挑戦しましたが
MySQLよりPostgreSQLの方が速くて動きもよいので それ以来PostgreSQL一筋です
今は機能面では基本的に同じです
MySQLはデータに関心を払っていますし
多くの人がMySQLを利用します
あなたがどちらを好んでも
自分のPCにコンパイラしやすいという点が
選択の大きなポイントになるでしょう
他のデータベースについての質問もきました
NoSQLデータベースはなぜ人気なのか？ 多くの企業が移行していますよね
確かFacebookはMySQLを使ってると言ってましたね
NoSQLについて教えてください
NoSQLはSQLを使って開発する 困難に対抗するためにできました
SQLデータベースの課題は最初にテーブルを 定義する必要があることです
どのようなサイトになるのか知らなければなりません
Webソフトウェアで書く利点の一つは
前もってすべてを考える必要がないことです
作業しながら オンライン上でユーザの反応も見られます
機能の追加や削除を何度でも 好きなだけ繰り返すことができます
課題は膨大なデータをもつデータベースの場合
新しいコラム、インデックス、データタイプ型などの 追加が必要になることです
数千 数万のユーザを抱えるデータベースの作業は
非常に困難なものになります
NoSQLはこの問題の解決を試みています
スキーマレスデータベースという方法です
データベースにスキーマがないのです
コラムとデータタイプの形式記述を持たないのです
RedditではPostgreSQL上で スキーマレスレスのシステムを構築しました
Hipmunkも同様です
作業がやりやすいのです
現在の課題は多くのスキーマレスの データベースはあまり良くないことです
新しいテクノロジですからね データベースはとても困難な分野です
安定性の問題やドキュメンテーションの欠陥があります
少ないですがウイルスに感染している場合もあります
良いサポートも頼れるような人もいないのです
データに関しては特にNoSQLは非常に優秀です
もしあなたがデータに関心があり 実証済みにこだわるなら最適です
スケールアップの方法も分かります
多くの人が長い間PostgreSQLとMySQLで 作業をしてきました
これらはとてもいいです
私はFacebookで働いたことはないので 自信はありませんが
彼らはMySQLを使っていたはずです
MySQLの改善もたくさん行って
Cassandraという独自のNoSQLシステムも作りました
今はもう使っていないようです
そういえば私が辞めてからRedditは Cassandraを使っています
その決定について容認しているとは明言できませんが
明らかに制作のために使われています
私はPostgreSQLに満足しています
大きなJSONデータの塊のような 一つの列をストアすることにより
スキーマレスのデータを PostgreSQLでうまく扱うことができます
解決したい問題によっては有効です
シンプルな質問でしたが長い答えになってしまいました
Com este Horário de Trabalho, tínhamos uma série de questões sobre MySQL e PostgreSQL
e por que uns preferem Postgres do que MySQL e outros usam MySQL a maior parte do tempo.
Certo. Neste Horário de Trabalho, tivemos uma série de questões sobre MySQL e PostgreSQL
e por que você prefere Postgres ao invés de MySQL e por que outras pessoas preferem MySQL com frequência.
Se você pudesse tratar um pouco disso, seria ótimo.
Sim, sim. Começaremos com a primeira questão, que é por que eu prefiro Postgres ao invés de MySQL.
Trata-se de uma resposta em duas partes.
Em 2005, quando iniciamos o Reddit, eu estava basicamente na posição em que vocês estão agora,
ou seja, aprendendo como funcionam aplicativos web.
Estava tentando instalar todas essas coisas no meu computador, incluindo MySQL e Postgres,
e MySQL não compilava no meu Mac, ao contrário do Postgres. -- Essa é uma boa razão.
Quer dizer, para ser justo, revela muito sobre um projeto.
Ou seja, se compila em meu Mac, poderia compilar em praticamente qualquer outro lugar
porque, na época, OSX ainda era algo bem novo.
Foi assim que começamos com Postgres.
MySQL ainda era muito popular na época, muito mais popular que Postgres,
mas tinha uma reputação de causar algumas perdas de dados.
Essa pode ser a expressão adequada, algo inconsistente.
No Postgres, a documentação era melhor, eles abriam mão de alguma funcionalidade em favor da estabilidade
e da consistência e adesão ao tipo de padrão SQL.
Algumas consultas desse tipo que fizemos no Reddit expandiram os limites dessas bases de dados
rodaram muito, muito mais rápido em Postgres do que em MySQL, então me tornei fiel desde então.
Hoje em dia, vendo ponto a ponto, são praticamente a mesma coisa.
MySQL não é mais tão displiscente com seus dados
e muita gente usa MySQL.
Atualmente, dá para usar o que vocês preferirem.
Acho que, talvez, usar aquele que compilar com mais facilidade no seu computador
é uma razão perfeitamente aceitável para escolher atualmente.
Também recebemos algumas questões sobre outros tipos de bases de dados
por que bases de dados NoSQL eram populares, por que muitas empresas estão mudando para elas.
Você mencionou que Facebook utiliza MySQL, eu acho,
e recebemos algumas questões mencionando que eles também utilizavam NoSQL.
OK, claro. NoSQL é basicamente uma resposta às dificuldades de desenvolver utilizando bases de dados SQL.
Uma das dificuldades das bases de dados SQL é que você tem de definir suas tabelas previamente.
Você deve saber quais serão seus comandos. Deve saber de que tipo serão.
Quando se está programando na rede, uma das vantagens
é que você não precisa pensar em tudo de antemão.
Você pode fazer algo funcionar, colocar online, ver como os usuários reagem.
Você pode de certa forma se apoiar nisso, adicionar novos elementos, eliminar outros, fazer o que quiser.
O desafio é, quando você tem bases de dados e uma grande quantidade de dados,
então você tem que, às vezes, inserir uma nova coluna ou um novo índice ou um monte de novos tipos de dados.
Quando você tem uma base de dados ativa que tem milhares ou milhões de usuários
isso pode ser realmente trabalhoso.
Essas bases de dados NoSQL, geralmente, tentam resolver esse problema.
Outra forma de descrevê-las seria como bases de dados não-esquemáticas.
Essas bases de dados não possuem um esquema.
Ou seja, elas não possuem uma descrição formal de colunas e tipos de dados, e isso é legal.
No Reddit, nós criamos nosso próprio sistema não-esquemático adicional ao Postgres.
Na verdade, fazemos isso novamente com o Hipmunk.
É uma boa maneira de trabalhar.
A dificuldade atual com muitas dessas bases de dados não-esquemáticas é que elas não são tão boas.
Elas são tecnologia de ponta. Bases de dados são realmente difíceis.
Elas têm problemas de estabilidade. Sua documentação é incompleta.
Poucas delas são utilizadas ativamente no mercado,
então não existe um bom suporte para que as pessoas possam se apoiar em algo assim.
Na minha opinião, ainda é prudente, especialmente em se tratando de dados,
especialmente se você se importa com seus dados, confiar am algo que já foi testado, que funciona
que você sabe como avaliar.
Todo mundo já trabalhou com Postgres e MySQL por um tempo considerável
então sabem que funcionam muito, muito bem.
Agora, com relação ao Facebook, eu não trabalho no Facebook, por isso não sou autoridade no assunto
mas sei que eles usam bastante MySQL.
Na verdade, eles aperfeiçoaram bastante o MySQL.
Eles também escreveram seu próprio sistema NoSQL, chamado Cassandra
que, pelo que sei, apesar de não ter certeza, eles já não usam mais.
O Reddit, aliás, utiliza o Cassandra. Mas só começaram a usar depois que saí de lá.
Não posso dizer com a consciência limpa que apoio essa decisão
mas, aparentemente, tem funcionado para eles no uso corrente.
Seu desempenho pode variar. Pessoalmente, estou contente com o Postgres.
Sei como dimensioná-lo hoje em dia e é possível se virar com quaisquer tipos de comportamentos
não-esquemáticos no Postgres, basta armazenar uma coluna que seja como um grande nódulo de JSON, por exemplo.
Isso funciona muito bem na verdade, dependendo do tipo de problemas que você estiver resolvendo.
De todo modo, esta foi uma longa resposta para uma questão simples, mas é minha opinião. -- Ótimo.