10 points par xguru 2024-07-13 | 6 commentaires | Partager sur WhatsApp
  • Quelques défauts surprenants découverts après avoir manipulé SQLite pendant quelques jours
  • ALTER COLUMN n’est pas pris en charge. Recommandation officielle pour modifier une colonne : « créer une nouvelle table »
  • DROP CONSTRAINT n’est pas pris en charge. Recommandation officielle pour supprimer une contrainte : « créer une nouvelle table »
  • SQLite n’a pas de type de données au niveau des colonnes. Les types de données (il n’y en a que 5) n’existent que pour les valeurs, donc tout peut aller partout
  • Si l’on demande une colonne d’un type non pris en charge ou inexistant, SQLite effectue l’opération erronée sans avertissement ni erreur. En définissant un schéma comme CREATE TABLE my_table (id bigserial, messages jsonb[]), j’ai eu l’impression que cela fonctionnait, et j’ai donc cru à tort pendant la première journée que SQLite prenait en charge les types serial et les tableaux
  • Avec CREATE TABLE my_table (...) STRICT, on peut n’autoriser que l’un des 5 types pris en charge : integer, real, text, blob, any
  • Le nouveau support de jsonb dans SQLite a récemment beaucoup attiré l’attention. Contrairement à Postgres, jsonb n’est pas réellement un type de données, mais un format utilisé en entrée/sortie par les fonctions intégrées jsonb*. Lorsqu’il est stocké de façon persistante, il s’agit d’un blob, l’un des 5 types de base
  • D’autres types très importants, comme timestamptz, sont également absents. Si l’on veut gérer des dates/heures, il faut les stocker sous forme de timestamp Unix en integer ou de chaîne au format ISO8601, et plusieurs fonctions intégrées sont fournies pour ce genre d’opérations
  • SQLite dispose de fonctionnalités impressionnantes liées au streaming que j’aimerais essayer, mais l’expérience DX initiale a clairement été un peu inconfortable
  • Je me demande parfois à quel point on se laisse enfermer dans certains récits. Par exemple, Postgres est-il vraiment la meilleure base de données au monde ? Cette expérience n’a fait que renforcer ma conviction. Oui, Postgres est le meilleur

6 commentaires

 
tested 2024-07-16

On dirait plutôt qu’on veut du SQLHeavy, et non du SQLite.

 
princox 2024-07-15

Il existe toutes sortes de bases de données. J’ai eu le sentiment que SQLite fonctionne selon sa propre philosophie.

 
regentag 2024-07-13

Pourquoi vouloir utiliser SQLite comme Postgres ?

Ça me donne l’impression de quelqu’un qui essaie Linux pour la première fois et dit : « Hancom Office marche mal et les jeux auxquels je joue ne se lancent pas non plus. Au fond, le vrai système d’exploitation, c’est Windows ! »

 
savvykang 2024-07-13

Le battage médiatique autour de sqlite sur Hacker News n’est-il pas un peu excessif ? Depuis 2022, on voit souvent sur Hacker News des affirmations selon lesquelles sqlite pourrait remplacer un SGBDR exploité séparément.

1: https://news.ycombinator.com/item?id=31318708
2. https://news.ycombinator.com/item?id=31152490
3. https://news.ycombinator.com/item?id=34812527
4. https://news.ycombinator.com/item?id=36208568

Autres : https://hn.algolia.com/?dateEnd=1720854657&dateRange=custom&da…

 
eajrezz 2024-07-13

Je pense que lorsque l’utilisation d’une famille de bases de données comme Postgres ou MySQL semble excessive, SQLite peut être une alternative tout à fait séduisante.

Par exemple, pour un petit service, le coût d’une DB managée peut parfois être disproportionné, et l’exploiter soi-même représente aussi une charge.

À l’inverse, dans le cas de SQLite, on dit que les performances restent suffisantes jusqu’à une certaine échelle, et surtout qu’avec des outils comme Litestream, la charge d’exploitation est presque inexistante, ce qui en fait une option intéressante.

 
savvykang 2024-07-14

Sans même aller jusqu’aux fonctions de réplication, sqlite est vraiment bien parce que les sauvegardes sont simples et qu’il suffit de gérer l’état du démon de service, mais pour le brancher à JPA il faut faire diverses choses, donc j’ai trouvé qu’on ne pouvait pas l’utiliser sur un projet qu’il faudra transmettre à quelqu’un d’autre. Et si, comme dans le billet d’origine, on a la volonté de gérer le schéma de données de manière plus stricte, ce n’est pas adapté à ce type d’usage.

J’avais commencé à écrire le commentaire précédent sans le terminer, mais ce que je voulais dire, c’est que certaines rumeurs infondées sur sqlite donnent l’illusion que sqlite serait une solution miracle.