Лучшая база данных

Лучшая база данных

Мы все знаем и любим Ноушен за его гибкость и пользу, но мало кто знает, на что способен этот инструмент в руках очумелого программиста. Сейчас узнаете.

Для начала что такое Ноушен на самом деле. Ноушен — это база данных с интерфейсом. У системы есть 2 основные сущности: 1) страница и 2) база данных. Там базы данных до самого низу, да.

Не стоит обманываться. Базы данных в Ноушене — это абстракция над страницами. Поэтому все в Ноушене — страница. Просто некоторые из них имеют одинаковые поля для удобства и объединены в коллекции — базы данных.

Зная это можно догадаться, что Ноушен можно использовать в качестве «Cистемы Управления Контентом». Сокращенно — СУК. Ноушен даже позволяет опубликовать страницы в интернет напрямую, но это не путь самурая. Самурай хочет свой дизайн и не хочет палить Ноушен. Поэтому путь приводит нас к Прикладному Интерфейсу Разработки.

Чтобы использовать ПИР от Ноушен СУК вам потребуется ключ. Его можно получить на странице https://www.notion.so/my-integrations.

Мои совнедрения
Мои совнедрения

ПИР у Ноушена очень прокачан и позволяет делать настоящие запросы к вашей базе данных. Вот пример на языке Clojure:

(require '[clj-http.client :as client])

(client/post "https://api.notion.com/v1/databases/<айди_вашей_базы>/query"

             {:headers {:Notion-Version "2022-06-28"}
              :content-type :json
              :form-params {:filter {:or [{:property "In stock"
                                           :checkbox {:equals true}}
                                          {:property "Cost of next trip"
                                           :number {:greater_than_or_equal_to 2}}]}
                            :sorts [{:property "Last ordered"
                                     :direction "ascending"}]}})

Обратите внимание на параметр filter:

{:filter {:or [{:property "In stock"
                :checkbox {:equals true}}
               {:property "Cost of next trip"
                :number {:greater_than_or_equal_to 2}}]}
 :sorts [{:property "Last ordered"
          :direction "ascending"}]}

Мы просим строки, у которых свойство In Stock установлено в True, либо свойство Cost of next trip больше или равно 2. Результаты требуем отсортировать.

Ну и чем это не MySQL?

Однако чтобы этот запрос успешно выполнился вам нужен идентификатор базы данных. Его можно взять тыкнув на кнопку «Поделиться» в верхнем правом углу:

Копируйте ссылку
Копируйте ссылку

Вы получите примерно такую ссылку: https://www.notion.so/dima-rozhkov/6ab9ec9a516242e8abdafdfc762242f4?v=f02b44dcd3e02c7b8ebe4f725dcfea08&pvs=4

Где часть 6ab9ec9a516242e8abdafdfc762242f4 это искомый идентификатор базы, а f02b44dcd3e02c7b8ebe4f725dcfea08 идентификатор отображения, он вам не нужен.

Дальше сами разберетесь, под менее популярные языки навроде джаваскрипта даже есть готовые клиенты. Я такой использую на продакшоне в своем проекте.

Сесурити и доступы

Важный момент в Ноушене: чтобы ваше совнедрение получило доступ к базе данных вы должны явно добавить его на страницу. Для этого надо тыкнуть на кнопку с тремя точками в верхнем правом углу:

Вот так
Вот так

После этого ваше совнедрение должно заработать, а может даже заработать денег.

В телеграме можно найти ботов, которые будут публиковать сообщения в ноушен. Тем самым можно нивелировать тормозной интерфейс Ноушена и открывать его только с настольной ЭВМ.

Теперь вы знаете, что такое Ноушен на самом деле. Живите с этим.

Попробуйте Notion, он хорош не только как база данных: https://affiliate.notion.so/9ruaa8ti9bc6 (рефка)