powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сервисная база данных
25 сообщений из 32, страница 1 из 2
Сервисная база данных
    #39154228
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, такой полуфиласофский вопрос.

Хочется под настройки, метаданные и всё, что не связано с данными, хранить в отдельной базе.
Вопрос в том, что выбрать?

От базы хочется:
- минимальные приседания для установки и переноса базы с места на место, наката патчей и т.п.
- наличие удобных инструментов для управления

Пока вижу два варианта:
1. текстовый файл, через ado. Но подозреваю, тут всё будет не очень удобно.
2. sqlite. Но надо что-то себе в код встраивать.

с обоими вариантами никогда не работал.

может ещё что-то?
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154231
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно XML, JSON, INI.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154247
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

xml как xml, или какой-то провайдер может с ним работать как с базой?
я думал про просто xml+boost, то хотелось бы работать с этим хранилищем именно через sql.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154273
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3. MS Sql?
Только к нему нужен манагер.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154282
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2. sqlite.
слишком дофига потенциальных языков и сред использования, оно всё, конечно, есть, но по несколько раз встраивать в разные среды не хочется.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154283
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты бы немного поподробнее описал что за метаданные хранить собираешься и какой у них объем.

У меня для настроек используются INI. Есть WinAPI заточенное на быстрое чтение. Этих настроек обычно немного: пара десятков строк.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154286
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

sqlite

хотя json тоже очень хорошо было бы.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154290
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,


Еще есть boost;::program-options или что-то в этом роде, там кажется можно тоже в файл записать опции как параметры, и оно это Парсит
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154314
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думал насоветовать MSXML, но то что удобно в С#, в С++ очень тяжело пишется (

https://msdn.microsoft.com/en-us/library/ms767609(v=vs.85).aspx

Есть еще такой пример из dlib
http://dlib.net/config_reader_ex.cpp.html
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154332
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot]Ты бы немного поподробнее описал что за метаданные хранить собираешься и какой у них объем.
[quot]

Ну, например, названия колонок таблиц. В виде таблицы:

id_таблицы, номер_колонки, название, свойства, скрипт, ...

Или настройки соединений, в виде таблицы:

название, строка_коннекта, логин, пароль, свойства, скрипт, скрипт, скрипт, ...


пока остановился на текстовых файлах, потому что:
1. не требует лишних инсталляций
2. легко переносимо, даже частями, что может быть полезно
минусы:
1. редактирование, к примеру, если это csv, то запятую не поиспользуешь
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154335
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,
можно их вообще скриптом писать (LUA очень маленький)
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154344
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

таблицы?

а как lua интегрируется в с++ проекты? Давно хотел его погонять, всё не было случая...
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154457
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbkealon(Ruslan),

таблицы?

а как lua интегрируется в с++ проекты? Давно хотел его погонять, всё не было случая...
да просто там всё, на оффсайте есть вся инфа, функции просто свои к движку добавляешь
движок можно и слинковать и отдельной dll-кой

А по таблицам надо просто через свои функции описать их создание-валидацию. Если я правильно понимаю у тебя фактически метаинформация по ним, а не сами таблицы.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154467
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

пример на паскале, повыдёргивал из рабочего проекта, но на C, C++ будет тоже самое

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
//  открываем контекст и добавляем модули которые можно испольовать
  L:=lua_open();
  luaopen_base(L);                //* открывает основную библиотеку */
  luaopen_table(L);            //* открывает библиотеку table */
//  luaopen_io(L);               //* открывает библиотеку I/O */
  luaopen_string(L);           //* открывает библиотеку string */
  luaopen_math(L);             //* открывает библиотеку math */

// регистрируем свойю функцию
  lua_register(L,'print',@MyLUA_Print);

// здесь собственно сам вызов скрипта
  TestLUAException(luaL_loadfile(L, PChar(fn)));
  TestLUAException(lua_pcall(L, 0, LUA_MULTRET, 0));

  // закрываем контекст
  if Assigned(L) then begin
    lua_close(L);
  end;     
// функция-пример, просто объединяет все параметры в строку и выводит
function MyLUA_Print(L:Plua_State):Integer;cdecl;
var i,k:integer;
  s,t:string;
begin
  k:=lua_gettop(L);

  s:='';
  for i:=0 to k-1 do begin
    t:=lua_tostring(L, -(k-i));
    //if t='' then t:='{}';
    if s<>'' then begin
      s:=concat(s,' ',t);
    end else begin
      s:=t;
    end;
  end;
  lua_pop(L, k);

  Writeln(s);

  Result:=0;
end;

...
Рейтинг: 0 / 0
Сервисная база данных
    #39154510
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbНу, например, названия колонок таблиц. В виде таблицы:

id_таблицы, номер_колонки, название, свойства, скрипт, ...
Зачем свое хранилище под это?

Таблицы ведь где-то в СУБД? Пиши скрипт сразу на языке СУБД:
Код: sql
1.
2.
3.
if not exists MyTable then create MyTable (...)
if not exists MyTable.Field1 then alter MyTable add Field1 ...
...


и запускай его при необходимости. Например при смене версии клиентского EXE.
Например при старте запросил версию из базы, сравнил с версией ЕХЕ, несовпало - запустил скрипт, сохранил версию в базу.

ИМХУ нет смысла структуру базы полностью дублировать в метаданные. У тебя юзеры руками в базе ковыряются и структуру таблиц меняют? Сомневаюсь.

Возьми за правило все изменения структуры делать этим скриптом, в т.ч. при разработке, тогда при необходимости что-то изменить в структуре просто дописал что надо изменить в конец скрипта и все.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39154520
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbНу, например, названия колонок таблиц. В виде таблицы:

id_таблицы, номер_колонки, название, свойства, скрипт, ...
Вообще-то они уже и так хранятся в самой БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сервисная база данных
    #39155207
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
я не могу так лезть в базу данных, там всё строго регламентировано, свои инструменты и "DBA inside" :)
Юзеры посредством админского софта там ковыряются и могут менять структуру таблиц. Это происходит редко, но происходит.
Структура БД у меня не копируется, а перекрывается и дополняется.

Dimitry Sibiryakov,
там специальные названия для колонок, их менять нельзя, они используются кодом базы данных и кодом прикладного софта(там даже на самом деле сложные views используются, которые генерятся самой БД с учётом разных факторов, ни у кого нет прямого доступа к таблицам). В самой базе данных есть метаданные по колонкам, названия, свойства для использования в прикладном софте.
Мне туда нельзя. Моя задумка: сделать стороннюю надстройку для себя. У меня появились задачи, которые существующий софт не решает. Свой код я напишу быстро, но чтобы всё отображалось красиво, нужны настройки для отображения. Их будет много, их лучше хранить в базе, в сторонней, иначе админы меня убьют, если что-то левое обнаружат.

Т.е. вопрос лезть или не лезть в основную базу, не стоИт :) Сами архитекторы давно мечтают вынести всю метаинформацию в отдельную базу данных, что позволит делать накаты, не затрагивая саму базу, а так же легко переносит базу с данными без учёта, какая версия прикладного софта сейчас установлена, и т.д. Т.е. по нормальному, отделить код и описание от самих данных. Но это стоит больших денег, никто на это просто так не согласится.

А я для себя персонально могу. У меня пока отдельные запросы и отображение данных, просто хочется красоты и больше функционала, и всё это сериализовать. Вопрос в том, как быстро и просто это сделать. Попробовал и решил пока остановиться на файлах.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39156094
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

Ну тогда бери любой из вариантов которые ты упомянул в первом посте. Какой покажется более легким в реализации, тот и бери.
В описанной задаче они будут равноценными.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Сервисная база данных
    #39801207
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb3. MS Sql
Мечты сбываются!.. купила бабка порося


Итак, есть:
- база данных MSSQL, в винде, из коробки.
- приложение, которое работает с внешней базой данных, где много всякого.

хочется:
- создавать в локальной MSSQL копии некоторых данных внешней базы, чтобы не ходить полпланеты каждый раз за ними.
- чтобы приложение, открывшись первый раз и получив trusted_connection к master, могло создать себе базу и нужные таблицы в ней.

что пока получилось:
- Create database myBase - получаю permisson denied in database 'master'.

Возможно ли вообще любому приложению создать базу?
Т.е. я сейчас могу пойти в студию, там открыть SQL browser и там создать базу и выдать права, ок. Но я не могу это сделать у всех других пользователей софта.
Может быть можно сделать базу, сбакапить её, а потом как-то накатить из ресурсов программы?
С другой стороны, почему я в студии под доменным коннектом могу создать базу, а в приложении под тем же(?) коннектом - не могу? Может, connection string надо как-то правильно уметь готовить?
...
Рейтинг: 0 / 0
Сервисная база данных
    #39801236
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbМожет, connection string надо как-то правильно уметь готовить?
Скорее всего проблема именно тут, т.к. все описанные проблемы только из-за отсутствия прав у того, кто указан в connection string.
...
Рейтинг: 0 / 0
Сервисная база данных
    #39801466
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, ага, а как узнать, как правильно приготовить connection string? :)
Т.е. юзер с виндовой аутентификацией, хочет создать себе базу...
...
Рейтинг: 0 / 0
Сервисная база данных
    #39801474
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пробовал, но вроде так
Код: plaintext
1.
Driver={ODBC Driver 13 for SQL Server};server=<server>;database=<database>;trusted_connection=Yes;
...
Рейтинг: 0 / 0
Сервисная база данных
    #39801488
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У него прав на создание базы нет, а не проблема с коннектом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сервисная база данных
    #39801492
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Ttrusted_connection=Yesпробовал, permission denied

Dimitry SibiryakovУ него прав на создание базы нет, а не проблема с коннектом.ну вот там вроде как можно на коннекте права получить.

я нашёл такое, что можно указать файл для создания базы данных для юзера, у которого вообще нет прав на машине. тут , но оно у меня выпадает с ошибкой на Integrated Security=true;
...
Рейтинг: 0 / 0
Сервисная база данных
    #39801513
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbну вот там вроде как можно на коннекте права получить.

Это было бы слишком большой дырой в безопасности если бы любой пользователь мог положить
сервер тупо создав кучу баз и забив всё место на диске.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сервисная база данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]