c# оптимальный вариант базы данных

198
21 июля 2019, 02:20

нужно вести базу клиентов. программу для запросов напишу сам. интересует вариант когда один файл базы данных и вся работа с ним. какие есть форматы базы данных и какой из них предпочтительнее?

Answer 1

@tym32167, один файл на компе, с которым будет работать прога, клиент скорее всего 1, формат хранения - не знаю, из того что успел прочитать наверно mdf, в значениях будут string и int. запросы типичные select, add, delete, update, конечно же бесплатная

Настоятельно советую Realm для этих целей.

Из плюсов:

  • Любой SQL будет излишне сложным в написании кода и в поддержке. С реалмом банально не нужно знать SQL языка и уметь писать оптимальные SQL запросы. LINQ за тебя сам оптимизирует их.

    В т.ч. SQLite не лучший из вариантов, хотя в даном случае сервера ставить и не нужно.

  • Realm же работает сразу с обьектами твоего языка (хоть и с некоторыми ограничениями), так что нет нужды пользоваться ORM вообще. У тебя не будет посредников с базой данных и не будет лишнего кода.

  • Окроме того реалм поддерживает Reactive code из коробки, что несомненно огромнейший плюс на фоне любого SQL решения. Реализация в SQL рективности будет требовать значительно большего количества кода. Ты можешь подписыватся на изменения в таблице (или ее области) и обновлять их автоматически в куче мест твоей програмы.

  • Так же реалм поддерживает миграции баз данных из коробки, что требовало бы больше кода с SQL. Что просто прекрасно, если ты наперед не знаешь структуру своей БД.

  • Удобная стоковая "Realm studio" для просмотра данных твоей БД

  • Ну и бесплатность (платное только использование облака)

Из минусов:

  • неудобная поддержка коллекций (в дотнетовском реалме). -- добавление или изменение коллекции нужно делать исключительно внутри транзакции. И это все через IList. В других языках с этим проще. Это обусловлено ограничениями самого .Net
  • огранничения в работе с LINQ. Которые тебя не коснутся вообще при маленьких базах данных. Что бы обойти ограничения просто делаешь .ToList() и обходишь любое ограничение. Но это путь быдлокода :)
  • Realm Studio при запуске постоянно предлагает разместить БД платно в клауде. Но что поделать -- им нужно как-то зарабатывать :)
  • Нужно помнить что из-за изменений в NuGet 3.1 перестали создаватся файлы с контентом из нюгетов. Так что что бы пользоватся бд нужно будет вручную создавать FodyWeavers.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <Weavers>
        <RealmWeaver />
    </Weavers>
    

Документация: https://realm.io/docs/dotnet/latest

Есле таблиц буквально пара будет у тебя, то даже реалм будет излишним. Так что, вполне возможно, тебе больше подойдет бинарная сериализация

READ ALSO
ContextMenu не скрывается при выполнении команды

ContextMenu не скрывается при выполнении команды

Использую библиотеку HardcodetWpf

155
Обновлять свойство Button при изменении Text у TextBox

Обновлять свойство Button при изменении Text у TextBox

В окне кнопка, у которой свойство IsEnabled должно быть true только если Text в TextBox соответствует паттерну RegexА в других случаях false

160
Получения url страницы в ajax запросе

Получения url страницы в ajax запросе

Есть ajax запросРезультатом которого если всё хорошо будет срабатывать

169
Почему в проекте можно обратится к зависимостям подключенной dll?

Почему в проекте можно обратится к зависимостям подключенной dll?

Всем привет!Сразу извиняюсь, если очень глупо задал вопрос

140