Результаты поиска
Вызов ошибки в триггере MySQL
Если у меня есть trigger before the update на таблице, как я могу бросить ошибку, которая предотвращает обновление на этой таблице?
Базы данных плоских файлов
Каковы наилучшие методы создания структур базы данных плоских файлов в PHP?
Многие из более зрелых PHP плоских файловых фреймворков, которые я вижу, пытаются реализовать SQL-подобный синтаксис запроса, который в большинстве случаев является избыточным для моих целей (я бы просто использовал базу данных в этой точке).
Есть ли какие-то элегантные трюки, чтобы получить хорошую производительность и функции с небольшими накладными расходами кода?
XSD DataSets и игнорирование внешних ключей
У меня есть довольно стандартная настройка таблицы в текущем приложении с использованием функций .NET XSD DataSet и TableAdapter . Моя таблица contracts состоит из некоторой стандартной информации о контракте, со столбцом для primary department . Этот столбец является внешним ключом к моей таблице Departments , где я храню основные department name , id, notes . Все это настраивается и функционирует на моем сервере SQL .
Когда я использую инструмент XSD, я могу перетащить обе таблицы сразу, и он автоматически обнаруживает/создает внешний ключ, который у меня есть между этими двумя таблицами. Это отлично работает, когда я нахожусь на своей главной странице и просматриваю данные контракта.
Однако, когда я перехожу на свою административную страницу, чтобы изменить данные отдела, я обычно делаю что-то вроде этого:
Dim dtDepartment As New DepartmentDataTable()
Dim taDepartment As New DepartmentTableAdapter()
taDepartment.Fill(dtDepartment)
Однако в этот момент возникает исключение, говорящее о том, что здесь нарушена ссылка на внешний ключ, я предполагаю, поскольку у меня нет заполненного Contract DataTable .
Как я могу исправить эту проблему? Я знаю, что могу просто удалить внешний ключ из XSD, чтобы все работало нормально, но иметь дополнительную проверку целостности там и иметь схему XSD, соответствующую схеме SQL в базе данных, приятно.
Управление версиями SQL база данных сервера
Я хочу, чтобы мои базы данных были под контролем версий. Есть ли у кого-нибудь какие-нибудь советы или Рекомендуемые статьи, чтобы я начал работу?
Я всегда буду хотеть иметь там хотя бы некоторые данные (как упоминает alumb: типы пользователей и администраторы). Мне также часто требуется большая коллекция сгенерированных тестовых данных для измерения производительности.
Создание базы данных SQLite на основе набора данных XSD
Кто-нибудь знает, есть ли способ создать базу данных SQLite на основе XSD DataSet ? В прошлом я просто использовал базовый менеджер SQLite, но хочу немного больше объединить вещи с моей разработкой .NET , если это возможно.
Существует ли система контроля версий для изменения структуры базы данных?
Я часто сталкиваюсь со следующей проблемой.
Я работаю над некоторыми изменениями в проекте, которые требуют новых таблиц или столбцов в базе данных. Я делаю изменения в базе данных и продолжаю свою работу. Обычно я не забываю записать изменения, чтобы они могли быть воспроизведены в живой системе. Однако я не всегда помню, что я изменил, и не всегда помню, чтобы записать это.
Итак, я делаю толчок к живой системе и получаю большую, очевидную ошибку , что нет NewColumnX, тьфу.
Независимо от того, что это может быть не лучшим решением для данной ситуации, существует ли система контроля версий для баз данных? Меня не волнует конкретная технология баз данных. Я просто хочу знать, существует ли он. Если это случится работать с сервером MS SQL, то отлично.
cx_Oracle: Как выполнить итерацию по результирующему набору?
Существует несколько способов перебора результирующего набора. Каков компромисс каждого из них?
Замена уникальных индексированных значений столбцов в базе данных
У меня есть таблица базы данных, и одно из полей (не первичный ключ) имеет уникальный индекс. Теперь я хочу поменять местами значения под этим столбцом для двух строк. Как же это можно было сделать? Два хака, которые я знаю, это:
- Удалите обе строки и вставьте их заново.
- Обновить строки с некоторым другим значением и поменять местами, а затем обновить до фактического значения.
Но я не хочу идти на это, поскольку они не кажутся подходящим решением проблемы. Кто-нибудь может мне помочь?
Соедините PHP с IBM и (AS/400)
У меня есть предстоящий проект, в котором мне нужно будет подключить наш веб-сайт ( PHP5/Apache 1.3/OpenBSD 4.1 ) к нашей серверной системе, работающей на iSeries с OS400 V5R3, чтобы я мог получить доступ к некоторым таблицам, хранящимся там. Я кое-что проверил вокруг, но наткнулся на несколько блокпостов.
Из того, что я видел, расширения DB2 и программное обеспечение DB2 от IBM работают только под Linux. Я попытался скомпилировать расширения со всем программным обеспечением от IBM и даже попробовал их предварительно скомпилированное расширение ibm_db2, но безуспешно. IBM поддерживает только Linux, поэтому я включил эмуляцию Linux в kernel, но это, похоже, ничему не помогло.
Если кто-то столкнулся с тем, что все работает изначально под OpenBSD, это было бы здорово, но я думаю, что мне нужно будет сделать, это настроить второй сервер под управлением CentOS с установленным DB2 (скорее всего, через ZendCore для IBM, так как он, похоже, делает все это для меня) и драйвер, чтобы я мог настроить небольшой сервер транзакций, который я могу разместить и получить представление JSON данных DB2, которые мне нужны.
Может быть, второй вариант кажется излишним или у кого-то еще есть идеи получше?
Встроенная база данных для .net, которая может работать вне сети
Я искал (и до сих пор ищу) встроенную базу данных для использования в приложении .net (c#). Предостережение: приложение (или, по крайней мере, база данных) хранится на сетевом диске, но используется только 1 пользователем одновременно.
Итак, моя первая идея была SQL Server Compact edition . Это действительно хорошо интегрировано, но оно не может работать вне сети.
Firebird, по -видимому, имеет ту же проблему, но интеграция .net, по-видимому, не является действительно первоклассной и в значительной степени недокументирована.
Blackfish SQL выглядит интересно, но пробной версии .net нет. Ценообразование также OK.
Есть ли другие предложения о том, что хорошо работает с .net и работает вне сети без необходимости установки серверного программного обеспечения?
Редактирование записей базы данных несколькими пользователями
Я разработал таблицы баз данных (нормализованные, на сервере MS SQL) и создал автономный интерфейс windows для приложения, которое будет использоваться несколькими пользователями для добавления и редактирования информации. Мы добавим веб-интерфейс, который позволит осуществлять поиск по всему нашему производственному району в более поздние сроки.
Я обеспокоен тем, что если два пользователя начнут редактировать одну и ту же запись, то последним, кто зафиксирует обновление, будет 'winner', и важная информация может быть потеряна. На ум приходит множество решений, но я не уверен, что создам еще большую головную боль.
- Ничего не делайте и надейтесь, что два пользователя никогда не будут редактировать одну и ту же запись одновременно. - Может быть, никогда и не случится, но что, если это случится?
- Процедура редактирования может хранить копию исходных данных, а также обновления, а затем сравнить, когда пользователь закончил редактирование. Если они отличаются, показывают пользователя и подтверждают обновление -потребуется две копии данных для хранения.
- Добавьте последний обновленный столбец DATETIME и проверьте его соответствие при обновлении, если нет, то покажите различия. - требуется новый столбец в каждой из соответствующих таблиц.
- Создайте таблицу редактирования, которая регистрируется, когда пользователи начинают редактировать запись, которая будет проверена и не позволит другим пользователям редактировать ту же запись. - потребуется тщательное продумывание потока программ, чтобы предотвратить блокировку тупиков и записей, которые будут заблокированы, если пользователь выйдет из программы.
Есть ли какие-то лучшие решения или я должен пойти на одно из них?
Как подключиться к базе данных и выполнить цикл над набором записей в C#?
Каков самый простой способ подключения и запроса базы данных для набора записей в C#?
Как работает индексация баз данных?
Учитывая, что индексация так важна, поскольку ваш набор данных увеличивается в размере, может ли кто-нибудь объяснить, как индексирование работает на уровне базы данных-агностика?
Сведения о запросах для индексации поля см. В разделе Как индексировать столбец базы данных .
Как индексировать столбец базы данных
Надеюсь, я смогу получить ответы для каждого сервера баз данных.
Для получения общих сведений о том, как работает индексация, ознакомьтесь с разделом: как работает индексация базы данных?
Насколько большой может быть база данных MySQL, прежде чем производительность начнет снижаться
В какой момент база данных MySQL начинает терять производительность?
- Имеет ли значение физический размер базы данных?
- Имеет ли значение количество записей?
- Является ли любое снижение производительности линейным или экспоненциальным?
У меня есть то, что я считаю большой базой данных, с примерно 15М записями, которые занимают почти 2 ГБ. Основываясь на этих цифрах, есть ли у меня стимул Очистить данные, или я могу позволить им продолжать масштабироваться еще несколько лет?
Механизмы отслеживания изменений схемы DB
Каковы наилучшие методы отслеживания и / или автоматизации изменений схемы DB? Наша команда использует Subversion для управления версиями, и мы смогли автоматизировать некоторые из наших задач таким образом (перемещение сборок на промежуточный сервер, развертывание тестируемого кода на рабочий сервер), но мы все еще делаем обновления базы данных вручную. Я хотел бы найти или создать решение, которое позволит нам эффективно работать на разных серверах с различными средами, продолжая использовать Subversion в качестве бэкенда, через который код и обновления DB передаются на различные серверы.
Многие популярные программные пакеты включают в себя сценарии автоматического обновления, которые обнаруживают версию DB и применяют необходимые изменения. Является ли это лучшим способом сделать это даже в более крупном масштабе (через несколько проектов, а иногда и через несколько сред и языков)? Если да, то есть ли какой-либо существующий код, который упрощает этот процесс, или лучше всего просто запустить наше собственное решение? Кто-нибудь реализовывал что-то подобное раньше и интегрировал его в Subversion post-commit hooks, или это плохая идея?
Хотя решение, поддерживающее несколько платформ, было бы предпочтительнее, мы определенно должны поддерживать стек Linux/Apache/MySQL/PHP, поскольку большая часть нашей работы находится на этой платформе.
Есть ли опыт работы с буферами протокола?
Я просто просматривал некоторую информацию о формате обмена данными буферов протокола Google. Кто-нибудь играл с кодом или даже создал проект вокруг него?
В настоящее время я использую XML в проекте Python для структурированного контента, созданного вручную в текстовом редакторе, и мне было интересно, каково общее мнение о буферах протокола в качестве пользовательского формата ввода. Преимущества скорости и краткости определенно кажутся там, но есть так много факторов, когда речь заходит о фактическом создании и обработке данных.
Какой язык вы используете для PostgreSQL триггеров и хранимых процедур?
PostgreSQL интересен тем, что он поддерживает несколько языков для написания хранимых процедур. Какой из них вы используете, и почему?
Вы когда-нибудь сталкивались с запросом, который SQL Server не мог выполнить, потому что он ссылался на слишком много таблиц?
Вы когда-нибудь видели там сообщения об ошибках?
-- SQL Server 2000
Не удалось выделить вспомогательную таблицу для разрешения представления или функции.
Было превышено максимальное количество таблиц в запросе (256).-- SQL Server 2005
Слишком много имен таблиц в запросе. Максимально допустимое значение-256.
Если да, то что вы сделали?
Сдался? Убедили клиента упростить свои требования? Денормализовали базу данных?
@(все хотят, чтобы я опубликовал запрос):
- Я не уверен, что смогу вставить 70 килобайт кода в окно редактирования ответа.
- Даже если я смогу это сделать, это не поможет, так как эти 70 килобайт кода будут ссылаться на 20 или 30 просмотров, которые мне также придется опубликовать, так как в противном случае код будет бессмысленным.
Я не хочу, чтобы это прозвучало так, как будто я хвастаюсь здесь, но проблема не в запросах. Запросы являются оптимальными (или, по крайней мере, почти оптимальными). Я потратил бесчисленные часы на их оптимизацию, ища каждый отдельный столбец и каждую отдельную таблицу, которые можно удалить. Представьте себе отчет, содержащий 200 или 300 столбцов, которые должны быть заполнены одним оператором SELECT (потому что именно так он был разработан несколько лет назад, когда это был еще небольшой отчет).
Автогенерация Диаграммы Базы Данных MySQL
Я устал открывать Dia и создавать схему базы данных в начале каждого проекта. Есть ли там инструмент, который позволит мне выбрать определенные таблицы, а затем создать схему базы данных для меня на основе базы данных MySQL? Предпочтительно, чтобы это позволило мне отредактировать диаграмму позже, так как ни один из внешних ключей не установлен...
Вот что я представляю себе схематично (пожалуйста, извините за ужасный дизайн данных, я его не проектировал. Давайте сосредоточимся на концепции диаграммы, а не на фактических данных, которые она представляет для этого примера ;) ):
Вы когда-нибудь сталкивались с запросом, который SQL Server не мог выполнить, потому что он ссылался на слишком много таблиц?
Вы когда-нибудь видели там сообщения об ошибках?
-- SQL Server 2000
Не удалось выделить вспомогательную таблицу для разрешения представления или функции.
Было превышено максимальное количество таблиц в запросе (256).-- SQL Server 2005
Слишком много имен таблиц в запросе. Максимально допустимое значение-256.
Если да, то что вы сделали?
Сдался? Убедили клиента упростить свои требования? Денормализовали базу данных?
@(все хотят, чтобы я опубликовал запрос):
- Я не уверен, что смогу вставить 70 килобайт кода в окно редактирования ответа.
- Даже если я смогу это сделать, это не поможет, так как эти 70 килобайт кода будут ссылаться на 20 или 30 просмотров, которые мне также придется опубликовать, так как в противном случае код будет бессмысленным.
Я не хочу, чтобы это прозвучало так, как будто я хвастаюсь здесь, но проблема не в запросах. Запросы являются оптимальными (или, по крайней мере, почти оптимальными). Я потратил бесчисленные часы на их оптимизацию, ища каждый отдельный столбец и каждую отдельную таблицу, которые можно удалить. Представьте себе отчет, содержащий 200 или 300 столбцов, которые должны быть заполнены одним оператором SELECT (потому что именно так он был разработан несколько лет назад, когда это был еще небольшой отчет).
Автогенерация Диаграммы Базы Данных MySQL
Я устал открывать Dia и создавать схему базы данных в начале каждого проекта. Есть ли там инструмент, который позволит мне выбрать определенные таблицы, а затем создать схему базы данных для меня на основе базы данных MySQL? Предпочтительно, чтобы это позволило мне отредактировать диаграмму позже, так как ни один из внешних ключей не установлен...
Вот что я представляю себе схематично (пожалуйста, извините за ужасный дизайн данных, я его не проектировал. Давайте сосредоточимся на концепции диаграммы, а не на фактических данных, которые она представляет для этого примера ;) ):
Лучше ли создавать классы моделей или придерживаться общего класса утилиты базы данных?
У нас есть простой служебный класс в доме для наших вызовов базы данных (легкая оболочка вокруг ADO.NET), но я думаю о создании классов для каждого database/object. было бы разумно сделать это, или это только выиграло бы, если бы мы использовали полную структуру MVC для ASP.NET?
Итак, у нас есть это:
SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters);
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters);
SQLWrapper.Execute(connstr-alias, sql-statement, parameters);
Думая о том, чтобы сделать это:
Person p = Person.get(id);
p.fname = "jon";
p.lname = "smith";
p.Save();
или для нового рекорда -
Person p = new Person();
p.fname = "Jon";
p.lname = "Smith";
p.Save();
p.Delete();
Будет ли это умно, или это будет перебор? Я вижу выгоду для повторного использования, изменения базы данных и maintenance/readability.
Есть ли какой-либо трюк, который позволяет использовать Management Studio (ver. 2008) функция IntelliSense с более ранними версиями сервера SQL?
Новая версия Management Studio (т. е. та, которая поставляется с SQL Server 2008), наконец, имеет функцию Transact-SQL IntelliSense. Однако out-of-the-box он работает только с экземплярами SQL Server 2008.
Есть ли какой-то обходной путь для этого?
Простое решение MOLAP
Для анализа большого количества текстовых журналов я сделал некоторые хакерские действия, которые выглядят так:
- Локально импортировать журналы в Access
- Перерабатывать ссылке куб с предыдущими MDB в услуги обработки 2000 (Да это 2К)
- Используйте Excel для визуализации Куба (он не большой - до миллионов необработанных записей)
Мой hackery-это успех, и все больше людей требуют доступа к моему инструменту. Как вы видите, я вижу больше автоматизации и проще deployment.
Есть ли у вас сейчас какие-то инструменты / библиотеки, которые дали бы мне то же самое, но с более легким deployment? Вид встроенного сервиса OLAP ?
Edit: я слышал о Мондриане, но мы не делаем много с Java. Вы видели что-то подобное, сделанное для .Net/Win32 ? Comercial также OK.
MOSS SSP проблема-сбой входа в базу данных из удаленного SSP
У нас были некоторые проблемы с экземпляром SharePoint в тесте окружающая среда. К счастью, это не производство ;) проблемы начались когда закончился диск с базами данных сервера SQL и индексом поиска из космоса. После этого Служба поиска не будет работать и искать настройки в SSP были недоступны. Восстановление дискового пространства сделал не решить проблему. Поэтому вместо того, чтобы восстанавливать VM, мы решили попробуйте решить эту проблему.
Мы создали новый SSP и изменили ассоциацию всех сервисов на новый SSP. Старый SSP и его базы данных были затем удалены. Поиск результаты для файлов PDF больше не отображаются, но поиск работает в остальном все нормально. MySites также работает OK.
После реализации этого изменения возникают следующие проблемы:
1) в журнале событий приложений появилось сообщение об ошибке аудита, для 'DOMAIN\SPMOSSSvc', которое является учетной записью фермы MOSS.
Event Type: Failure Audit
Event Source: MSSQLSERVER
Event Category: (4)
Event ID: 18456
Date: 8/5/2008
Time: 3:55:19 PM
User: DOMAIN\SPMOSSSvc
Computer: dastest01
Description:
Login failed for user 'DOMAIN\SPMOSSSvc'. [CLIENT: <local machine>]
2) SQL Server profiler показывает запросы от SharePoint, которые ссылаются на старый (удалено) база данных SSP.
Так...
- Где бы эти ссылки на DOMAIN\SPMOSSSvc и старый SSP база данных существует?
- Есть ли способ 'completely' удалить SSP с сервера, и воссоздать? Опция удаления была недоступна (выделена серым цветом), Когда a один SSP находится на месте.
В какой момент кто-то должен решить переключить системы баз данных
При разработке ли его веб или рабочий стол в какой момент разработчик должен переключиться с SQLite, MySQL, MS SQL и т. д
Блокировка базы данных сервера SQL с помощью PHP
Мне нужна дополнительная безопасность для определенной точки в моем веб-приложении. Поэтому я хочу заблокировать базу данных (SQL Server 2005). Любые предложения или это даже необходимо с SQL сервером?
Редактировать на вопрос:
Запрос не выполняется в автоматическом режиме без регистрации сообщений об ошибках и не происходит внутри транзакции.
окончательное решение:
Я никогда не мог решить эту проблему, однако то, что я сделал, было переключением на MySQL и использованием запроса транзакционного уровня здесь. Это не было главной или даже основной причиной для переключения. У меня были проблемы с сервером SQL, и это позволило мне иметь наш CMS и различные другие инструменты, работающие на одной базе данных. Ранее у нас был сервер SQL и база данных MySQL, работающая для запуска нашего сайта. Порт был немного трудоемким, однако в долгосрочной перспективе я чувствую, что он будет работать намного лучше для сайта и бизнеса.
Больше, чем символ, но меньше, чем капля
Char отлично подходят, потому что они имеют фиксированный размер и, таким образом, делают более быструю таблицу. Однако они ограничены 255 символами. Я хочу держать 500 символов, но blob-это переменная длина, и это не то, что я хочу.
Есть ли способ иметь поле фиксированной длины 500 символов в MySQL или мне придется использовать 2 поля char?
Блокировка базы данных сервера SQL с помощью PHP
Мне нужна дополнительная безопасность для определенной точки в моем веб-приложении. Поэтому я хочу заблокировать базу данных (SQL Server 2005). Любые предложения или это даже необходимо с SQL сервером?
Редактировать на вопрос:
Запрос не выполняется в автоматическом режиме без регистрации сообщений об ошибках и не происходит внутри транзакции.
окончательное решение:
Я никогда не мог решить эту проблему, однако то, что я сделал, было переключением на MySQL и использованием запроса транзакционного уровня здесь. Это не было главной или даже основной причиной для переключения. У меня были проблемы с сервером SQL, и это позволило мне иметь наш CMS и различные другие инструменты, работающие на одной базе данных. Ранее у нас был сервер SQL и база данных MySQL, работающая для запуска нашего сайта. Порт был немного трудоемким, однако в долгосрочной перспективе я чувствую, что он будет работать намного лучше для сайта и бизнеса.
Больше, чем символ, но меньше, чем капля
Char отлично подходят, потому что они имеют фиксированный размер и, таким образом, делают более быструю таблицу. Однако они ограничены 255 символами. Я хочу держать 500 символов, но blob-это переменная длина, и это не то, что я хочу.
Есть ли способ иметь поле фиксированной длины 500 символов в MySQL или мне придется использовать 2 поля char?
Как сохранить древовидную структуру в таблице базы данных с автоматическим увеличением IDs с помощью ADO.NET DataSet и DataAdapter
У меня есть самореферентная таблица ролей, которая представляет собой древовидную структуру
ID [INT] AUTO INCREMENT
Name [VARCHAR]
ParentID [INT]
Я использую ADO.NET DataTable и DataAdapter для загрузки и сохранения значений в эту таблицу. Это работает, если я создаю только дочерние элементы существующих строк. Если я создаю дочернюю строку, а затем создаю дочерний элемент этого ребенка, а затем обновляю, временное значение ID, сгенерированное DataTable, переходит в столбец ParentID. У меня есть следующий набор отношений данных:
dataset.Relations.Add(New DataRelation("RoleToRole",RoleTable.Columns("ID"), RoleTable.Columns("ParentID")))
И когда я создаю новые дочерние строки в DataTable, я вызываю метод SetParentRow
newRow.SetParentRow(parentRow)
Есть ли что-то особенное, что я должен сделать, чтобы заставить поколение ID распространяться рекурсивно, когда я вызываю Update на DataAdapter?
Какие инструменты FoxPro data tools можно использовать для поиска поврежденных данных?
У меня есть несколько пакетов SQL Server DTS, которые импортируют данные из базы данных FoxPro. Все это прекрасно работало до недавнего времени. Теперь скрипт, который импортирует данные из одной из таблиц FoxPro, выбрасывает в импорт около 470 000 записей. Я просто вытаскиваю данные в таблицу с nullable varchar полями, поэтому я думаю, что это должно быть странная/коррумпированная проблема с данными.
Какие инструменты вы бы использовали, чтобы отследить такую проблему?
FYI, это ошибка, которую я получаю:
Данные для исходного столбца 1 ('field1') недоступны. Поставщик может потребовать, чтобы все столбцы Blob-объектов были самыми правыми в исходном результирующем наборе.
В этой таблице не должно быть никаких столбцов blob-объектов.
Спасибо за ваши предложения. Я не знаю, является ли это проблемой коррупции наверняка. Я только что начал скачивать FoxPro из своей подписки MSDN, так что я посмотрю, смогу ли я открыть таблицу. SSRS открывает таблицу, она просто задыхается, прежде чем запустить все записи. Я просто пытаюсь понять, с какой пластинкой у него возникли проблемы.
Насколько велика будет такая база данных?
Я пытаюсь выяснить, насколько большой будет определенная база данных (она еще не создана). Я знаю, сколько строк и какие таблицы будут. Есть ли функция в Oracle, которая скажет мне размер такой теоретической базы данных? Есть ли известная математическая формула, которую я могу использовать? Я знаю, что есть функция для определения размера существующей базы данных, но я хочу знать, насколько она будет большой, прежде чем я ее создам.
Насколько велика будет такая база данных?
Я пытаюсь выяснить, насколько большой будет определенная база данных (она еще не создана). Я знаю, сколько строк и какие таблицы будут. Есть ли функция в Oracle, которая скажет мне размер такой теоретической базы данных? Есть ли известная математическая формула, которую я могу использовать? Я знаю, что есть функция для определения размера существующей базы данных, но я хочу знать, насколько она будет большой, прежде чем я ее создам.
Хорошие ресурсы для проектирования реляционных баз данных
Я ищу book/site/tutorial о лучших практиках для проектирования реляционных баз данных, настройки производительности и т. д. Оказывается, этот вид ресурса немного трудно найти; есть много "here's normalization, here's ER diagrams, have at it,", но не так много на пути реальных примеров. У кого-нибудь есть идеи?
Лучшее решение .NET для часто изменяемой базы данных
В настоящее время я разрабатываю небольшое приложение CRUD. Их база данных-это огромный беспорядок и будет часто меняться в течение следующих 6 месяцев до года. Что бы вы порекомендовали для моего слоя данных:
1) ORM (если да, то какой?)
2) Linq2Sql
3) Хранимые Процедуры
4) Параметризованные Запросы
Мне действительно нужно решение, которое будет достаточно динамичным (как быстрым, так и легким), где я могу часто заменять таблицы и добавлять/удалять столбцы.
Примечание: у меня нет большого опыта работы с ORM (только немного SubSonic) и, как правило, используют хранимые процедуры, поэтому, возможно, это будет путь. Я хотел бы узнать Ling2Sql или NHibernate, если бы это позволяло ситуацию, которую я описал выше.
Какая самая страшная авария с базой данных произошла с вами на производстве?
Например: обновление всех строк таблицы customer, поскольку вы забыли добавить предложение where.
- На что это было похоже, осознавая это и сообщая об этом своим коллегам или клиентам?
- Какие уроки были извлечены?
Индекс Базы Данных Без Учета Регистра?
У меня есть запрос, в котором я ищу по строке:
SELECT county FROM city WHERE UPPER(name) = 'SAN FRANCISCO';
Теперь это работает нормально, но масштабируется не очень хорошо, и мне нужно его оптимизировать. Я нашел вариант создания сгенерированного представления или что-то в этом роде, но я надеялся на более простое решение с использованием индекса.
Мы используем DB2 , и я действительно хочу использовать выражение в индексе, но эта опция, кажется, доступна только на z/OS,, однако мы запускаем Linux. Я все равно попробовал индекс выражения:
CREATE INDEX city_upper_name_idx
ON city UPPER(name) ALLOW REVERSE SCANS;
Но, конечно, он давится на UPPER(имя).
Есть ли другой способ создать индекс или что-то подобное таким образом, чтобы мне не нужно было перестраивать существующие запросы для использования нового сгенерированного представления, изменять существующие столбцы или любые другие подобные навязчивые изменения?
EDIT: я готов выслушать решения для других баз данных... он может перейти на DB2...
Каков хороший способ денормализации базы данных mysql?
У меня есть большая база данных нормализованных данных заказа, которые становятся очень медленными для запроса отчетов. Многие из запросов, которые я использую в отчетах, объединяют пять или шесть таблиц и должны исследовать десятки или сотни тысяч строк.
Есть много запросов, и большинство из них были максимально оптимизированы, чтобы уменьшить нагрузку на сервер и увеличить скорость. Я думаю, что пришло время начать хранить копию данных в денормализованном формате.
Есть идеи по поводу подхода? Должен ли я начать с пары моих худших запросов и пойти оттуда?
Каковы преимущества использования единой базы данных для EACH клиента?
В ориентированном на базу данных приложении, которое предназначено для нескольких клиентов, я всегда думал, что "better" будет использовать единую базу данных для ALL клиентов-связывая записи с соответствующими индексами и ключами. Слушая подкаст Stack Overflow, я услышал, как Джоэл упомянул, что FogBugz использует одну базу данных на клиента (так что если бы было 1000 клиентов, то было бы 1000 баз данных). Каковы преимущества использования этой архитектуры?
Я понимаю, что для некоторых проектов клиентам нужен прямой доступ ко всем их данным - в таком приложении очевидно, что каждому клиенту нужна своя база данных. Однако для проектов, где клиенту не нужно обращаться непосредственно к базе данных, есть ли какие-либо преимущества в использовании одной базы данных на клиента? Кажется, что с точки зрения гибкости гораздо проще использовать единую базу данных с одной копией таблиц. Проще добавлять новые функции, легче создавать отчеты и просто легче управлять ими.
Я был довольно уверен в методе "one database for all clients", пока не услышал, как Джоэл (опытный разработчик) упомянул, что его программное обеспечение использует другой подход, и я немного смущен его решением...
Я слышал, как люди цитируют, что базы данных замедляются с большим количеством записей, но любая реляционная база данных с некоторыми достоинствами не будет иметь этой проблемы - особенно если используются правильные индексы и ключи.
Любой вход очень ценится!
Как вы держите две взаимосвязанные, но отдельные системы в синхронизации друг с другом?
Мой нынешний проект развития имеет два аспекта. Во-первых, существует общедоступный веб-сайт, на котором внешние пользователи могут представлять и обновлять информацию для различных целей. Эта информация затем сохраняется на локальном сервере SQL на объекте colo.
Второй аспект - это внутреннее приложение, которое сотрудники используют для управления теми же записями (концептуально)и предоставления обновлений статуса, утверждений и т. д. Это приложение размещается в корпоративном брандмауэре с собственной локальной базой данных сервера SQL.
Эти две сети соединены аппаратным решением VPN, которое является приличным,но явно не самым быстрым в мире.
Эти две базы данных похожи и имеют много общих таблиц, но они не являются 100% одинаковыми. Многие таблицы с обеих сторон очень специфичны для внутреннего или внешнего применения.
Таким образом, возникает вопрос: когда пользователь обновляет свою информацию или представляет запись на общедоступном веб-сайте, Как вы передаете эти данные в базу данных внутреннего приложения, чтобы она могла управляться внутренним персоналом? И наоборот... как ВЫ продвигаете обновления, сделанные сотрудниками, обратно на веб-сайт?
Стоит отметить, что чем больше "real time" таких обновлений происходит, тем лучше. Не то чтобы это было мгновенно, просто достаточно быстро.
До сих пор я думал об использовании следующих типов подходов:
- Двунаправленная репликация
- Веб-сервис взаимодействует с обеих сторон с кодом для синхронизации изменений по мере их внесения (в режиме реального времени).
- Веб-службы взаимодействуют с обеих сторон с кодом для асинхронной синхронизации изменений (с помощью механизма массового обслуживания).
Какой-нибудь совет? Кто-нибудь сталкивался с этой проблемой раньше? Вы придумали решение, которое хорошо сработало для вас?
mysqli или PDO - каковы плюсы и минусы?
В нашем случае мы разделены между использованием mysqli и PDO для таких вещей, как подготовленные заявления и поддержка транзакций. Некоторые проекты используют одно, некоторые другое. Существует очень мало реальной вероятности того, что мы когда-нибудь переедем в другой RDBMS.
Я предпочитаю PDO только по той причине, что он допускает именованные параметры для подготовленных операторов, а насколько мне известно, mysqli этого не делает.
Есть ли еще какие-то плюсы и минусы в выборе одного из них в качестве стандарта, когда мы объединяем наши проекты, чтобы использовать только один подход?
Триггеры базы данных
В прошлом я никогда не был поклонником использования триггеров в таблицах базы данных. Для меня они всегда представляли собой некий "magic", который должен был произойти на стороне базы данных, далеко - далеко от контроля моего кода приложения. Я также хотел ограничить объем работы, которую должен был выполнять DB, поскольку это обычно общий ресурс, и я всегда предполагал, что триггеры могут быть дорогостоящими в сценариях с высокой нагрузкой.
Тем не менее, я нашел несколько примеров, когда триггеры имели смысл использовать (по крайней мере, на мой взгляд, они имели смысл). Однако недавно я оказался в ситуации, когда мне иногда может понадобиться "bypass" спусковой крючок. Я чувствовал себя очень виноватым из-за необходимости искать способы сделать это, и я все еще думаю, что лучший дизайн базы данных облегчил бы необходимость этого обхода. К сожалению, этот DB используется несколькими приложениями, некоторые из которых поддерживаются очень несговорчивой командой разработчиков, которая кричала бы об изменениях схемы, поэтому я застрял.
Что там за общий консесус насчет триггеров? Любишь их? Ненавидеть их? Думаете, они служат какой-то цели в некоторых сценариях? Считаете ли вы, что необходимость обойти триггер означает, что вы "делаете это неправильно"?
Как я должен обрабатывать autolinking в wiki контент страницы?
Под автолинковкой я подразумеваю процесс, с помощью которого wiki ссылок, встроенных в содержимое страницы, генерируются либо в гиперссылку на страницу (если она существует), либо в ссылку на создание (если страница не существует).
С помощью парсера, который я использую, это двухэтапный процесс-сначала анализируется содержимое страницы и извлекаются все ссылки на страницы wiki из источника markup. Затем я передаю массив существующих страниц обратно в синтаксический анализатор, прежде чем будет создан окончательный HTML markup.
Каков наилучший способ справиться с этим процессом? Похоже, что мне нужно сохранить кэшированный список каждой отдельной страницы на сайте, а не извлекать индекс заголовков страниц каждый раз. Или лучше проверить каждую ссылку отдельно, чтобы увидеть, существует ли она? Это может привести к большому количеству запросов к базе данных, если список не был кэширован. Будет ли это по-прежнему жизнеспособно для более крупного сайта wiki с тысячами страниц?
Как организовать запросы набора данных для повышения производительности
Я не знаю, когда, чтобы добавить к набору данных адаптера таблицы или запроса с помощью панели инструментов. Разве это имеет какое-то значение?
Я также не знаю, где создавать экземпляры адаптеров.
- Должен ли я сделать это в
Page_Load? - Должен ли я просто сделать это, когда я собираюсь использовать его?
- Открываю ли я новое соединение при создании нового экземпляра?
Это не кажется очень важным, но каждый раз, когда я создаю запрос, маленький голос в моем мозгу задает мне эти вопросы.
[ADO.NET error]: в базе данных 'master' отказано в разрешении создать базу данных. Попытка прикрепить базу данных с автоматическим именем для файла HelloWorld.mdf не удалась
Создать базу данных разрешение запрещено в базе данных 'master'.
Попытка прикрепить базу данных с автоматическим именем для файла
C:\Documents и Settings\..\App_Data\HelloWorld.mdf потерпели неудачу.
База данных с таким же именем существует, или указанный файл не может быть
открыт, или он находится на UNC share.
Создать базу данных разрешение запрещено в базе данных 'master'. Попытка прикрепить базу данных с автоматическим именем для файла C:\Documents и Settings\..\App_Data\HelloWorld.mdf потерпели неудачу. База данных с таким же именем существует, или указанный файл не может быть открыт, или он находится на UNC share.
Я нашел эти ссылки:
- http://blog.benhall.me.uk/2008/03/sql-server-and-vista-create-database.html
- http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=702726&SiteID=1
Привязка параметров: что происходит под капотом?
.
NET, Java и другие высокоуровневые базы данных API на различных языках часто предоставляют методы, известные как подготовленные операторы и привязка параметров, в отличие от отправки простых текстовых команд на сервер базы данных. Я хотел бы знать, что происходит, когда вы выполняете такой оператор:
SqlCommand cmd = new SqlCommand("GetMemberByID");
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@ID", memberID);
para.DbType = DbType.Integer;
cmd.Parameters.Add(param);
Я знаю, что это лучшая практика. SQL инъекционные атаки сводятся к минимуму таким образом. Но что именно происходит под капотом, когда вы выполняете эти заявления? Является ли конечный результат все еще безопасной строкой SQL? Если нет, то каков конечный результат? И достаточно ли этого для предотвращения SQL инъекционных атак?
Java+Tomcat, умирающее соединение с базой данных?
У меня есть установка экземпляра tomcat, но соединение с базой данных, которое я настроил в context.xml , продолжает умирать после периодов бездействия.
Когда я проверяю журналы я получаю следующую ошибку:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Последний пакет успешно полученный с сервера составил 68051 сек тому назад. Последний пакет успешно отправлено на сервер был 68051 секунд назад, что больше, чем настроенное значение сервера 'wait_timeout'. Вы должны рассмотреть возможность истечения срока действия и / или тестирования срок действия соединения перед использованием в вашем приложении, увеличивая сервер настроил значения для таймаутов клиента или с помощью соединителя / J свойство соединения 'autoReconnect=true', чтобы избежать этой проблемы.
Вот конфигурация в context.xml:
<Resource name="dataSourceName"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="username"
password="********"
removeAbandoned = "true"
logAbandoned = "true"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/databasename?autoReconnect=true&useEncoding=true&characterEncoding=UTF-8" />
Я использую autoReconnect=true , как говорит ошибка, но соединение продолжает умирать. Я никогда раньше не видел, как это происходит.
Я также проверил, что все подключения к базе данных закрываются должным образом.
Создание тестовых данных в базе данных
Я знаю о некоторых генераторах тестовых данных, но большинство из них, похоже, просто заполняют базы данных стилей имен и адресов [не стесняйтесь поправлять меня].
У нас есть большое интегрированное и нормализованное приложение - например, счета-фактуры имеют номера деталей, связанные с таблицами запасов, номера клиентов, связанные с таблицами клиентов, журналы изменений, связанные с информацией аудита, и т. д., которые, очевидно, трудно заполнить случайным образом. В настоящее время мы запутываем реальные данные, чтобы получить тестовые данные (но не очень хорошо).
Что tools\methods вы используете для создания больших объемов данных для тестирования?
Создать таблицу DB из таблицы набора данных
Можно ли (в Vb.Net 2005), не разбирая вручную свойства таблицы dataset, создать таблицу и добавить ее в базу данных?
У нас есть старые версии нашей программы На некоторых машинах, которые, очевидно, имеют нашу старую базу данных, и мы ищем способ определить, есть ли отсутствующая таблица, а затем создать таблицу на основе текущего состояния таблицы в наборе данных. Мы переписывали таблицу каждый раз, когда выпускали новую версию (если были добавлены новые столбцы), но мы хотели бы избежать этого шага, если это возможно.
Восстановление резервной копии базы данных по сети
Как восстановить резервную копию базы данных с помощью SQL Server 2005 по сети? Я помню, что делал это раньше, но было что-то странное в том, как вы это делали.
Как выбрать N-ю строку в таблице базы данных SQL?
Мне интересно изучить некоторые (в идеале) агностические способы выбора n-й строки из таблицы базы данных. Было бы также интересно посмотреть, как это может быть достигнуто с помощью собственных функциональных возможностей следующих баз данных:
- SQL сервер
- MySQL
- PostgreSQL
- SQLite
- Oracle
В настоящее время я делаю что-то вроде следующего в SQL Server 2005, но мне было бы интересно увидеть другие более агностические подходы:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000
Кредит за вышеизложенное SQL: веб- блог Фироза Ансари
Update: смотрите ответ Troels Arvin относительно стандарта SQL. Троэльс, у тебя есть какие-нибудь ссылки, которые мы можем привести?
Когда файл-это просто файл?
Итак, вы пишете веб-приложение, и у вас есть несколько областей сайта, где пользователь может загружать файлы. Мой основной метод работы для этого-сохранить фактический файл на сервере и иметь таблицу базы данных, которая соединяет сохраненное имя файла с записью, к которой оно относится.
Мой вопрос заключается в следующем: должна ли быть другая таблица для каждого "type" файла? Кроме того, следует ли хранить файлы в контекстно-зависимых местах на сервере или все вместе?
Несколько примеров: фотографии профиля пользователя, работа приложений CVs, документов на страницах CMS и т. д.
Переход с MySQL на PostgreSQL
В настоящее время мы используем MySQL для продукта, который мы создаем, и стремимся перейти на PostgreSQL как можно скорее, в первую очередь по причинам лицензирования.
Кто-нибудь еще сделал такой шаг? Наша база данных-это жизненная сила приложения и в конечном итоге будет хранить TBs данных, поэтому я очень хочу услышать об опыте работы improvements/losses, основных препятствий в преобразовании SQL и хранимых процедурах и т. д.
Edit: просто чтобы разъяснить тем, кто спрашивал, почему нам не нравится лицензирование MySQL. Мы разрабатываем коммерческий продукт, который (в настоящее время) зависит от MySQL в качестве бэк-энда базы данных. В их лицензии говорится, что мы должны платить им процент от нашей прейскурантной цены за установку, а не фиксированную плату. Как стартап, это менее чем привлекательно.
Сравнение производительности хранилища RDF с традиционной базой данных
У кого-то есть решение для хранения RDF, например Sesame ? Я ищу обзор производительности такого рода решений по сравнению с традиционным решением для баз данных.
Как зашифровать строку подключения в WinForms 1.1 app.config?
Просто ищу первый шаг основное решение здесь, что держит честных людей.
Спасибо, Майк
Лучший способ узнать SQL сервер
Так что я получаю новую работу по работе с базами данных (Microsoft SQL Server, если быть точным). Я ничего не знаю о SQL и уж тем более о SQL сервере. Они сказали, что будут тренировать меня, но я хочу проявить некоторую инициативу, чтобы узнать об этом самостоятельно, чтобы быть впереди. С чего лучше всего начать (учебники, книги и т.д.)? Я хочу узнать больше о языке SQL больше, чем любой из причудливых пунктов и кликов.
Запрос таблицы объединения с полями в виде столбцов
Я не совсем уверен, возможно ли это, или попадает в категорию таблиц pivot, но я решил, что пойду к профессионалам, чтобы увидеть.
У меня есть три основные таблицы: Card, Property и CardProperty. Поскольку карты не имеют одинаковых свойств и часто имеют несколько значений для одного и того же свойства, я решил использовать подход union table для хранения данных вместо того, чтобы иметь действительно большую структуру столбцов в моей карточной таблице.
Таблица свойств-это базовая таблица типов ключевых слов и значений. Таким образом, у вас есть ключевое слово ATK и значение, присвоенное ему. Существует еще одно свойство, называемое SpecialType, для которого карта может иметь несколько значений, например "Sycnro" и "DARK"
Я бы хотел создать представление или хранимую процедуру, которая дает мне идентификатор карты, имя карты и все ключевые слова свойств, назначенные карте в виде столбцов, и их значения в ResultSet для указанной карты. Поэтому в идеале у меня был бы результирующий набор, например:
ID NAME SPECIALTYPE
1 Red Dragon Archfiend Synchro
1 Red Dragon Archfiend DARK
1 Red Dragon Archfiend Effect
и я мог бы подсчитать свои результаты таким образом.
Я думаю, что даже slicker будет просто объединять свойства вместе на основе их ключевого слова, поэтому я мог бы создать ResultSet как:
1 Red Dragon Archfiend Synchro/DARK/Effect
..но я не знаю, возможно ли это.
Помогите мне stackoverflow Кеноби! Ты моя единственная надежда.
Зачем нам нужны объекты сущностей?
Мне действительно нужно увидеть честные, вдумчивые дебаты о достоинствах принятой в настоящее время парадигмы проектирования корпоративных приложений .
Я не убежден, что сущностные объекты должны существовать.
Под объектами сущностей я подразумеваю типичные вещи, которые мы обычно создаем для наших приложений, например "Person", "Account", "Order" и т. д.
Моя нынешняя философия дизайна такова:
- Весь доступ к базе данных должен осуществляться с помощью хранимых процедур.
- Всякий раз, когда вам нужны данные, вызовите хранимую процедуру и выполните итерацию по SqlDataReader или строкам в DataTable
(Примечание: Я также построил корпоративные приложения с Java EE, java людьми, пожалуйста, замените экввалентные для моих .NET примеров)
Я не против OO. Я пишу много классов для разных целей, только не сущностей. Я признаю, что большая часть классов, которые я пишу, являются статическими вспомогательными классами.
Я не строю игрушки. Я говорю о больших транзакционных приложениях большого объема, развернутых на нескольких машинах. Веб-приложения, службы windows, веб-службы, b2b-взаимодействие, вы называете это.
Я использовал или картографы. Я уже написал несколько таких писем. Я использовал стек Java EE, CSLA и несколько других эквивалентов. Я не только использовал их, но и активно разрабатывал и поддерживал эти приложения в производственных средах.
Я пришел к проверенному в бою выводу, что объекты сущностей мешают нам, и без них наша жизнь была бы намного легче.
Рассмотрим этот простой пример: вы получаете вызов службы поддержки по поводу определенной страницы в вашем приложении, которая работает неправильно, возможно, одно из полей не сохраняется, как это должно быть. С моей моделью разработчик, назначенный для поиска проблемы, открывает ровно 3 файла . Файл ASPX, ASPX.CS и SQL с сохраненной процедурой. Проблема, которая может быть пропущенным параметром для вызова хранимой процедуры, требует нескольких минут для решения. Но с любой моделью сущностей вы неизменно запускаете отладчик, начинаете шагать по коду, и в конечном итоге вы можете получить файлы 15-20, открытые в Visual Studio. К тому времени, когда вы спуститесь в самый низ стопки, вы забудете, с чего начали. Мы можем только держать так много вещей в наших головах одновременно. Программное обеспечение невероятно сложное, без добавления каких-либо ненужных слоев.
Сложность разработки и устранение неполадок - это только одна сторона моей проблемы.
Теперь поговорим о масштабируемости.
Делают ли разработчики понимаете ли вы, что каждый раз, когда они пишут или изменяют какой-либо код, взаимодействующий с базой данных, им нужно провести тророговый анализ точного воздействия на базу данных? И не просто копия разработки, я имею в виду имитацию производства, так что вы можете видеть, что дополнительный столбец, который вам теперь требуется для вашего объекта, просто аннулировал текущий план запроса, и отчет, который был запущен за 1 секунду, теперь займет 2 минуты только потому, что вы добавили один столбец в список выбора? И получается, что индекс, который вам теперь требуется, настолько велик, что DBA придется изменить физический макет ваших файлов?
Если вы позволите людям слишком далеко уйти от физического хранилища данных с помощью абстракции, они создадут хаос с приложением, которое нужно масштабировать.
Я вовсе не фанатик. Меня можно убедить, если я ошибаюсь, и, возможно, я ошибаюсь, поскольку существует такой сильный толчок к Linq, чтобы Sql, ADO.NET EF, Hibernate, Java EE, и т.д. Пожалуйста, продумайте свои ответы, если я что-то упускаю, я действительно хочу знать, что это такое, и почему я должен изменить свое мышление.
[Редактировать ]
Похоже, что этот вопрос внезапно снова активен, поэтому теперь, когда у нас есть новая функция комментариев, Я прокомментировал сразу несколько ответов. Спасибо за ответы, я думаю, что это здоровая дискуссия.
Вероятно, мне следовало бы более четко объяснить, что я говорю о корпоративных приложениях. Я действительно не могу комментировать, скажем, игру, которая работает на чьем-то рабочем столе или мобильном приложении.
Одна вещь, которую я должен поставить здесь наверху в ответ на несколько подобных ответов: ортогональность и разделение проблем часто цитируются в качестве причин для перехода entity/ORM. хранимые процедуры, на мой взгляд, являются лучшим примером разделения проблем, который я могу придумать. Если вы запретите любой другой доступ к базе данных, кроме как через хранимые процедуры, вы теоретически можете перестроить всю свою модель данных и не нарушать никакого кода, пока вы поддерживаете входы и выходы хранимых процедур. Они являются прекрасным примером программирования по контракту (просто до тех пор, пока вы избегаете "select *" и документируете результирующие наборы).
Спросите кого-нибудь, кто давно работает в этой отрасли и работает с долгоживущими приложениями: сколько слоев приложений и UI появилось и исчезло за время существования базы данных? Насколько сложно настроить и рефакторировать базу данных, когда есть 4 или 5 различных уровней сохраняемости, генерирующих SQL для получения данных? Ты ничего не можешь изменить! ORMs или любой код, который генерирует SQL, блокирует вашу базу данных в камне .
Действительно ли внешние ключи необходимы при проектировании базы данных?
Насколько мне известно, внешние ключи (FK) используются для того, чтобы помочь программисту правильно манипулировать данными. Предположим, что программист уже делает это правильно, тогда действительно ли нам нужна концепция внешних ключей?
Существуют ли другие способы использования внешних ключей? Может быть, я что-то упустил?
Любимые приемы настройки производительности
Когда у вас есть запрос или хранимая процедура, требующая настройки производительности, что вы делаете в первую очередь?
SQL2005: связывание таблицы с несколькими таблицами и сохранение целостности ссылок?
Вот упрощение моей базы данных:
Table: Property Fields: ID, Address Table: Quote Fields: ID, PropertyID, BespokeQuoteFields... Table: Job Fields: ID, PropertyID, BespokeJobFields...
Затем у нас есть другие таблицы, которые относятся к таблицам котировок и заданий по отдельности.
Теперь мне нужно добавить таблицу сообщений , где пользователи могут записывать телефонные сообщения, оставленные клиентами относительно заданий и котировок.
Я мог бы создать две идентичные таблицы (QuoteMessage и JobMessage), но это нарушает принцип DRY и кажется беспорядочным.
Я мог бы создать одну таблицу сообщений :
Table: Message Fields: ID, RelationID, RelationType, OtherFields...
Но это останавливает меня от использования ограничений для обеспечения моей ссылочной целостности. Я также могу предвидеть, что это создает проблемы со стороной devlopment, используя Linq для SQL позже.
Есть ли элегантное решение этой проблемы, или мне в конечном итоге придется взломать что-то вместе?
Ожоги
Какова наилучшая стратегия сохранения больших наборов данных?
Я веду проект, где мы будем записывать данные метрик. Я хотел бы сохранить данные в течение многих лет. Тем не менее, я также хотел бы, чтобы основная таблица не раздувалась с данными, которые, хотя и необходимы для долгосрочного тренда, не требуются для краткосрочной отчетности.
Какова наилучшая стратегия для решения этой ситуации? Просто архивировать старые данные в другую таблицу? Или "roll it up" через некоторую консолидацию самих данных (а затем сохранить его в другую таблицу)? Или что-то совсем другое?
Дополнительная информация: мы используем SQL Server 2005.
Как зашифровать строку подключения в WinForms 1.1 app.config?
Просто ищу первый шаг основное решение здесь, что держит честных людей.
Спасибо, Майк
Лучший способ узнать SQL сервер
Так что я получаю новую работу по работе с базами данных (Microsoft SQL Server, если быть точным). Я ничего не знаю о SQL и уж тем более о SQL сервере. Они сказали, что будут тренировать меня, но я хочу проявить некоторую инициативу, чтобы узнать об этом самостоятельно, чтобы быть впереди. С чего лучше всего начать (учебники, книги и т.д.)? Я хочу узнать больше о языке SQL больше, чем любой из причудливых пунктов и кликов.
Запрос таблицы объединения с полями в виде столбцов
Я не совсем уверен, возможно ли это, или попадает в категорию таблиц pivot, но я решил, что пойду к профессионалам, чтобы увидеть.
У меня есть три основные таблицы: Card, Property и CardProperty. Поскольку карты не имеют одинаковых свойств и часто имеют несколько значений для одного и того же свойства, я решил использовать подход union table для хранения данных вместо того, чтобы иметь действительно большую структуру столбцов в моей карточной таблице.
Таблица свойств-это базовая таблица типов ключевых слов и значений. Таким образом, у вас есть ключевое слово ATK и значение, присвоенное ему. Существует еще одно свойство, называемое SpecialType, для которого карта может иметь несколько значений, например "Sycnro" и "DARK"
Я бы хотел создать представление или хранимую процедуру, которая дает мне идентификатор карты, имя карты и все ключевые слова свойств, назначенные карте в виде столбцов, и их значения в ResultSet для указанной карты. Поэтому в идеале у меня был бы результирующий набор, например:
ID NAME SPECIALTYPE
1 Red Dragon Archfiend Synchro
1 Red Dragon Archfiend DARK
1 Red Dragon Archfiend Effect
и я мог бы подсчитать свои результаты таким образом.
Я думаю, что даже slicker будет просто объединять свойства вместе на основе их ключевого слова, поэтому я мог бы создать ResultSet как:
1 Red Dragon Archfiend Synchro/DARK/Effect
..но я не знаю, возможно ли это.
Помогите мне stackoverflow Кеноби! Ты моя единственная надежда.
Отслеживание версий, автоматизация изменений схемы DB с помощью django
В настоящее время я смотрю на фреймворк Python Django для будущих веб-приложений на базе БД, а также для порта некоторых приложений, написанных в настоящее время в PHP. Одной из самых неприятных проблем в течение последних лет было отслеживание изменений схемы базы данных и развертывание этих изменений в производительных системах. Я не смел просить, чтобы их тоже можно было отменить, но, конечно, для тестирования и отладки это было бы отличной функцией. Из других вопросов здесь (таких как этот или этот) я вижу, что я не одинок и что это не тривиальная проблема. Кроме того, я нашел много вдохновения в ответах там.
Теперь, поскольку Django кажется очень мощным, есть ли у него какие-либо инструменты, чтобы помочь с этим? Может быть, это даже в их документах, и я пропустил это?
MyISAM против InnoDB
Я работаю над проектами, которые включают в себя много записей базы данных, я бы сказал ( 70% вставляет и 30% читает ). Это соотношение также будет включать обновления, которые я считаю одним чтением и одной записью. Чтение может быть грязным (например, мне не нужна 100% точная информация во время чтения).
Задача, о которой идет речь, будет заключаться в выполнении более 1 миллиона транзакций базы данных в час.
Я прочитал кучу материала в интернете о различиях между MyISAM и InnoDB, и MyISAM кажется мне очевидным выбором для конкретной базы данных/таблиц, которые я буду использовать для этой задачи. Из того, что я, кажется, читаю, InnoDB хорошо, если транзакции необходимы, так как поддерживается блокировка уровня строки.
Есть ли у кого-нибудь опыт работы с этим типом нагрузки (или выше)? Разве MyISAM-это правильный путь?
Существует ли эквивалент профилировщика для MySql?
"Microsoft SQL Server Profiler - это графический пользовательский интерфейс к SQL Trace для мониторинга экземпляра компонента Database Engine или служб Analysis Services."
Я нахожу использование SQL Server Profiler чрезвычайно полезным во время разработки, тестирования и при отладке проблем приложений баз данных. Кто-нибудь знает, есть ли эквивалентная программа для MySql?
Одна база данных или много?
Я разрабатываю веб-сайт, который будет управлять данными для нескольких объектов. Данные не являются общими для всех объектов, но они могут принадлежать одному и тому же клиенту. Клиент может захотеть управлять всеми своими сущностями из одного "dashboard". Так что я должен иметь одну базу данных для всего, или держать данные разделены на отдельные базы данных? Есть ли лучшая практика? Каковы положительные / отрицательные стороны для того, чтобы иметь:
- база данных для всего сайта (сущности имеет "customerID", данные имеет "entityID")
- база данных для каждого клиента (данные "entityID")
- база данных для каждой сущности (отношение база данных для клиента находится за пределами база данных)
Несколько баз данных, похоже, будут иметь лучшую производительность (меньше строк и соединений), но в конечном итоге могут стать кошмаром обслуживания.
550   11   03:27, 12th August, 2020
SQL Server 2005-экспорт таблицы программно (запустите файл .sql, чтобы перестроить его)
У меня есть база данных с таблицей клиентов, которые имеют некоторые данные
У меня есть еще одна база данных в офисе, что все то же самое, но мой стол клиентов пуст
Как я могу создать sql файл в SQL Server 2005 (T-SQL), который берет все, что находится на столе клиентов из первой базы данных, создает, скажем, buildcustomers.sql, я zip этот файл, копирую его по сети, выполняю его на моем SQL сервере и вуаля! мой столик клиентов полон
Как я могу сделать то же самое для всей базы данных?
Автоматизируйте Синхронизацию Oracle Таблиц С MySQL Таблицами
Университет, в котором я работаю, использует Oracle для системы баз данных. В настоящее время у нас есть программы, которые мы запускаем ночью, чтобы загрузить то, что нам нужно, в некоторые локальные таблицы доступа для наших потребностей тестирования. Доступ становится маленьким для этого сейчас, и нам нужно что-то большее. Кроме того, ночные задания требуют постоянного обслуживания, чтобы продолжать работать (из-за проблем с сетью, изменений таблиц, плохого кода:)), и я хотел бы устранить их, чтобы освободить нас для более важных вещей.
Я больше всего знаком с MySQL, поэтому я настраиваю тестовый сервер MySQL. Как лучше всего автоматизировать копирование необходимых таблиц из Oracle в MySQL?
Редактировать: я принял ответ. Мне не нравится ответ, но он кажется правильным на основе дальнейших исследований и отсутствия других ответов. Спасибо всем, кто обдумал мой вопрос и ответил на него.
Рекомендуемый SQL дизайн базы данных для тегов или меток
Я слышал о нескольких способах реализации тегирования; использование таблицы сопоставления между TagID и ItemID (имеет смысл для меня, но масштабируется ли она?), добавление фиксированного числа возможных столбцов TagID к ItemID (кажется, это плохая идея), сохранение тегов в текстовом столбце, разделенном запятыми (звучит безумно, но может сработать). Я даже слышал, что кто-то рекомендовал разреженную матрицу, но тогда как же имена тегов растут изящно?
Я пропустил лучшую практику для тегов?
обновление auto_now DateTimeField в родительской модели w/ Django
У меня есть две модели: сообщение и вложение. Каждое вложение прикрепляется к определенному сообщению, используя ForeignKey в модели вложения. Обе модели имеют auto_now DateTimeField под названием updated. Я пытаюсь сделать так, чтобы при сохранении любого вложения оно также устанавливало обновленное поле в связанном сообщении на now. Вот мой код:
def save(self):
super(Attachment, self).save()
self.message.updated = self.updated
Будет ли это работать, и если вы можете объяснить мне, почему? Если нет, то как я должен это сделать?
Список стандартных длин полей базы данных
Я разрабатываю таблицу базы данных и снова задаю себе один и тот же глупый вопрос: как долго должно быть поле firstname?
Есть ли у кого-нибудь список разумной длины для наиболее распространенных полей , таких как имя, фамилия и адрес email?
Представление порядка в реляционной базе данных
У меня есть коллекция объектов в базе данных. Картинки в фотогалерее, товар в каталоге, главы в книге и т. д. Каждый объект представлен в виде строки. Я хочу иметь возможность произвольно упорядочивать эти изображения, сохраняя этот порядок в базе данных, чтобы при отображении объектов они были в правильном порядке.
Например, предположим, что я пишу книгу,и каждая глава-это объект. Я пишу свою книгу и размещаю главы в следующем порядке:
Введение, доступность, форма и Функция, Ошибки, Последовательность, Заключение, Индекс
Он отправляется в Редактор и возвращается со следующим предложенным порядком:
Введение, Форма, Функция, Доступность, Последовательность, Ошибки, Заключение, Индекс
Как я могу хранить этот заказ в базе данных надежным и эффективным способом?
У меня были следующие идеи, но я не в восторге от них:
Массив. Каждая строка имеет порядок ID, когда порядок изменяется (через удаление с последующей вставкой), порядок IDs обновляются. Это упрощает поиск, так как это просто
ORDER BY, но кажется, что его легко сломать.// REMOVAL
UPDATE ... SET orderingID=NULL WHERE orderingID=removedID
UPDATE ... SET orderingID=orderingID-1 WHERE orderingID > removedID
// INSERTION
UPDATE ... SET orderingID=orderingID+1 WHERE orderingID > insertionID
UPDATE ... SET orderID=insertionID WHERE ID=addedIDСвязанный список. Каждая строка имеет столбец для идентификатора следующей строки в заказе. Обход кажется дорогостоящим здесь, хотя может каким-то образом использовать
ORDER BY, о котором я не думаю.Разнесенный массив. Установите orderingID (как используется в #1), чтобы быть большим, так что первый объект 100, Второй 200 и т.д. Затем, когда происходит вставка, вы просто помещаете ее в
(objectBefore + objectAfter)/2. Конечно, это должно было бы быть перебалансировано время от времени, поэтому у вас нет вещей слишком близко друг к другу (даже с поплавками, вы в конечном итоге столкнетесь с ошибками округления).
Ни один из них не кажется мне особенно элегантным. У кого-нибудь есть лучший способ сделать это?
Базы Данных Модульного Тестирования
Этим летом я разрабатывал базовое приложение ASP.NET/SQL Server CRUD, и модульное тестирование было одним из требований. Я столкнулся с некоторыми неприятностями, когда пытался протестировать их с помощью базы данных. Насколько я понимаю, модульные тесты должны быть:
- не имеющий гражданства
- независимые друг от друга
- повторяемость с теми же результатами т. е. отсутствие постоянных изменений
Эти требования, по-видимому, противоречат друг другу при разработке базы данных. Например, я не могу проверить Insert(), не убедившись, что вставляемые строки еще не существуют, поэтому мне нужно сначала вызвать Delete(). Но что, если их там еще нет? Тогда мне нужно было бы сначала вызвать функцию Exists().
Мое окончательное решение включало очень большие функции настройки (фу!) и пустой тестовый случай, который будет запущен первым и укажет, что установка выполнена без проблем. Это принесение в жертву независимости испытуемых при сохранении их безгражданства.
Другое решение, которое я нашел, заключается в том, чтобы обернуть вызовы функций в транзакцию, которая может быть легко откатана, как у Роя Ошерова XtUnit . Это работа, но она включает в себя другую библиотеку, другую зависимость, и это кажется немного слишком тяжелым решением для данной проблемы.
Итак, что же сделало сообщество SO, столкнувшись с этой ситуацией?
tgmdbm сказал:
Вы обычно используете свой любимый автоматизированная система модульного тестирования для выполните интеграционные тесты, которые являются почему некоторые люди путаются, но они не следуйте тем же правилам. Вы разрешено вовлекать бетон реализация многих ваших классов (потому что они прошли юнит-тестирование). Вы испытываете, как ваш бетон классы взаимодействуют друг с другом и вместе с базой данных .
Так что, если я правильно прочитал это, на самом деле нет никакого способа эффективно провести модульное тестирование уровня доступа к данным. Или же "unit test" уровня доступа к данным будет включать тестирование, скажем, команд SQL/, генерируемых классами, независимо от фактического взаимодействия с базой данных?
Можно ли совместно использовать транзакцию между приложением .Net и объектом COM+?
Некоторое время назад я провел несколько тестов и так и не понял, как это сделать.
Ингредиент:
- COM + транзакционный объект (разработан в VB6)
- .Net веб-приложение (с транзакцией) в IIS что...
выполняет вызов компонента COM+
обновление строки в базе данных SQL
Тестирование :
Запустите приложение .Net и принудительно создайте исключение.
Результат :
Обновление, выполненное из приложения .Net, откатывается назад.
Обновление, выполненное объектом COM+, не откатывается.
Если я вызываю объект COM+ со старой страницы ASP, откат срабатывает.
Я знаю, что некоторые люди могут думать: "что?! COM+ и .Net вы, должно быть, сошли с ума!", но есть некоторые места в этом мире, где все еще есть много компонентов COM+. Мне просто было любопытно, сталкивался ли кто-нибудь с этим и выяснил ли ты, как это сделать.
Как изменить размер и преобразовать загруженное изображение в PNG с помощью GD?
Я хочу разрешить пользователям загружать изображения типа Аватара в различных форматах (по крайней мере, в форматах GIF, JPEG и PNG ), но сохранить их все как PNG database BLOBs . Если изображения слишком большие, по пикселям, я хочу изменить их размер до DB-вставки.
Что является лучшим способом, чтобы использовать GD, чтобы сделать изменения и преобразования PNG?
Edit: к сожалению, на сервере, который мне нужен, доступен только GD, а не ImageMagick .
Какой хороший способ инкапсулировать доступ к данным с помощью PHP/MySQL?
Большая часть моего опыта находится в стеке MSFT, но сейчас я работаю над сайд-проектом, помогая кому-то с личным сайтом с дешевым хостингом, который построен на стеке LAMP. Мои возможности по установке дополнительных компонентов ограничены, поэтому мне интересно, как написать код доступа к данным без внедрения необработанных запросов в файлы .php.
Я люблю, чтобы все было просто, даже с этим .NET. Обычно я пишу хранимые процедуры для всего, и у меня есть вспомогательный класс, который обертывает все вызовы для выполнения процедур и возврата наборов данных. Я не ищу полномасштабного ORM,но это может быть путь, и другие, кто рассматривает этот вопрос, возможно, ищут его.
Помните, что у меня есть учетная запись $7/month GoDaddy, поэтому я ограничен тем, что уже установлено в их базовом пакете.
Edit: спасибо rix0rr, Алан, Андерс, Дракон, Я проверю все это. Я отредактировал вопрос, чтобы быть более открытым для решений ORM, поскольку они так популярны.
Где разместить ваш код-база данных или приложение?
Я разрабатываю веб-приложения / настольные приложения уже около 6 лет. В течение своей карьеры я сталкивался с приложениями, которые были сильно написаны в базе данных с использованием хранимых процедур, тогда как многие приложения просто имели только несколько основных хранимых процедур (для чтения, вставки, редактирования и удаления записей сущностей) для каждой сущности.
Я видел, как люди утверждают, что если вы заплатили за корпоративную базу данных, то широко используйте ее функции. В то время как многие из "object oriented architects" сказали мне, что это абсолютное преступление-поместить в базу данных что-то большее, чем необходимо, и вы должны быть в состоянии управлять приложением, используя методы на этих классах?
Как вы думаете, где находится равновесие?
Спасибо, Krunal
Что является лучшим способом, чтобы взаимодействовать с сервером MySQL?
Я собираюсь использовать C/C++, и хотел бы знать, как лучше всего поговорить с сервером MySQL. Должен ли я использовать библиотеку, которая поставляется с установкой сервера? Есть ли у них хорошие библиотеки, которые я должен рассматривать, кроме официальной?
Эффективная стратегия для оставления истории аудита trail/изменений для DB приложений?
Назовите Некоторые стратегии, которые люди успешно использовали для ведения истории изменений данных в довольно сложной базе данных. Одно из приложений, которое я часто использую и разрабатываю, действительно может извлечь выгоду из более полного способа отслеживания изменений записей с течением времени. Например, прямо сейчас записи могут иметь ряд timestamp и измененных пользовательских полей, но в настоящее время у нас нет схемы для регистрации нескольких изменений, например, если операция откатывается. В идеальном мире можно было бы восстановить запись, какой она была после каждого сохранения, и т. д.
Немного информации о DB:
- Необходимо иметь возможность расти на тысячи записей в неделю
- 50-60 таблиц
- Основные пересмотренные таблицы могут содержать несколько миллионов записей каждая
- Разумное количество внешних ключей и индексов набора
- Использование PostgreSQL 8.x
В какой степени разработчик должен изучать специфику систем баз данных?
Современные системы баз данных сегодня оснащены множеством функций. И вы согласитесь со мной, что для изучения одной базы данных вы должны разучиться понятиям, которые вы изучили в другой базе данных. Например, каждая база данных будет реализовывать блокировку иначе, чем другие. Поэтому перенос понятий из одной базы данных в другую был бы рецептом неудачи. И могут быть другие примеры, когда две базы данных будут работать очень по-разному.
Поэтому при разработке систем, управляемых базами данных, должны ли программисты знать базу данных в деталях, чтобы они кодировали для производительности? Я не думаю, что было бы целесообразно, чтобы DBA был вызван для выполнения позже, поскольку его работа заключается в том, чтобы только поддерживать базу данных и помогать разработчику в случае чрезвычайной ситуации, но не на регулярной основе.
Как вы думаете, в какой степени разработчик должен получить представление о базе данных?
Выберите существующие данные из базы данных для создания тестовых данных
У меня есть база данных SqlServer, которую я вручную заполнил некоторыми тестовыми данными. Теперь я хотел бы извлечь эти тестовые данные в виде инструкций insert и проверить их в системе управления версиями. Идея состоит в том, что другие члены команды должны иметь возможность создавать ту же базу данных, запускать созданные сценарии вставки и иметь те же данные для тестирования и разработки.
Есть ли хороший инструмент, чтобы сделать это? Я не ищу инструмент для генерации данных, как описано здесь .
Что такое "best" способ хранения международных адресов в базе данных?
Каков "лучший" способ хранения международных адресов в базе данных? Ответьте в виде схемы и объясните причины, по которым вы решили нормализовать (или нет) свой путь. Также объясните, почему вы выбрали тип и длину каждого поля.
Примечание: Вы сами решаете, какие поля вы считаете необходимыми.
448   6   16:35, 22nd August, 2020
Хранимая процедура и время ожидания
Я запускаю длинную хранимую процедуру процесса.
Мне интересно, если в случае тайм-аута или любого случая отключения с базой данных после инициирования вызова хранимой процедуры. Он все еще работает и реализует изменения на сервере?
присоединение последних из различных тегов usermetadata к пользовательским строкам
У меня есть БД Postgres со столом пользователя (userId, firstName и lastName) и usermetadata таблицы (идентификатор, код, контент, созданный datetime). Я храню различную информацию о каждом пользователе в таблице usermetadata по коду и веду полную историю. например, пользователь (userid 15) имеет следующие метаданные:
15, 'QHS', '20', '2008-08-24 13:36:33.465567-04'
15, 'QHE', '8', '2008-08-24 12:07:08.660519-04'
15, 'QHS', '21', '2008-08-24 09:44:44.39354-04'
15, 'QHE', '10', '2008-08-24 08:47:57.672058-04'
Мне нужно получить список всех моих пользователей и самое последнее значение каждого из различных кодов usermetadata. Я сделал это программно, и это было, конечно, ужасно медленно. Лучшее, что я мог придумать, чтобы сделать это в SQL,-это присоединиться к подзапросам, которые также были медленными, и мне пришлось сделать по одному для каждого кода.
Вставить внутрь ... значения ( SELECT ... FROM ... )
Я пытаюсь создать таблицу INSERT INTO , используя входные данные из другой таблицы. Хотя это вполне осуществимо для многих движков баз данных , я всегда стараюсь вспомнить правильный синтаксис для движка SQL дня ( MySQL , Oracle , SQL Server , Informix и DB2 ).
Есть ли в стандарте SQL (например, SQL-92 ) синтаксис серебряной пули, который позволил бы мне вставлять значения, не беспокоясь о базовой базе данных?
Как сжатие данных более эффективно, чем индексирование для производительности поиска?
В нашем приложении большие объемы данных индексируются тремя целочисленными столбцами (источник, тип и время). Загрузка значительных фрагментов этих данных может занять некоторое время, и мы внедрили различные меры для уменьшения объема данных, которые должны быть найдены и загружены для больших запросов, таких как хранение больших гранулярностей для запросов, которые не требуют высокого разрешения (с точки зрения времени).
При поиске данных в наших архивах резервных копий, где данные хранятся в текстовых файлах bzipped, но имеют в основном ту же структуру, я заметил, что значительно быстрее распаковать stdout и передать его через grep, чем распаковать его на диск и grep файлы. Фактически, untar-to-pipe был даже заметно быстрее, чем просто захват несжатых файлов (т. е. дисконтирование untar-to-disk).
Это заставило меня задуматься, действительно ли влияние производительности дискового ввода-вывода намного тяжелее, чем я думал. Итак, вот мой вопрос:
Считаете ли вы, что помещение данных из нескольких строк в (сжатое) поле blob одной строки и поиск одиночных строк на лету во время извлечения может быть быстрее, чем поиск одних и тех же строк через индекс таблицы?
Например, вместо того, чтобы иметь эту таблицу
CREATE TABLE data ( `source` INT, `type` INT, `timestamp` INT, `value` DOUBLE);
Я бы так и сделал
CREATE TABLE quickdata ( `source` INT, `type` INT, `day` INT, `dayvalues` BLOB );
с примерно 100-300 строк в данных для каждой строки в quickdata и поиска нужных меток времени на лету во время декомпрессии и декодирования поля blob.
Это имеет смысл для вас? Какие параметры я должен исследовать? Какие ниточки могут быть привязаны? Какие функции DB (любые DBMS) существуют для достижения аналогичных эффектов?
Существует ли задача rake для резервного копирования данных в вашей базе данных?
Существует ли задача rake для резервного копирования данных в вашей базе данных?
У меня уже есть резервная копия моей схемы, но я хочу сделать резервную копию данных. Это небольшая база данных MySQL.
Тайм-аут не соблюдается в строке подключения
У меня есть долго работающий оператор SQL, который я хочу запустить, и независимо от того, что я помещаю в предложение "timeout=" моей строки подключения, он всегда заканчивается через 30 секунд.
Я просто использую SqlHelper.ExecuteNonQuery() , чтобы выполнить его, и позволяю ему заботиться об открытии соединений и т. д.
Есть ли что-то еще, что может переопределить мой тайм-аут или заставить сервер sql игнорировать его? Я запустил profiler над запросом, и trace не выглядит по-другому, когда я запускаю его в management studio, а не в своем коде.
Management studio завершает запрос примерно за минуту, но даже с тайм-АУ, установленным на 300 или 30000, мой код все равно выходит через 30 секунд.
База данных: что такое Multiversion Concurrency Control (MVCC) и кто его поддерживает?
Недавно Джефф опубликовал сообщение о своей проблеме с блокировками базы данных, связанными с чтением. Мультиверсионное управление параллелизмом (MVCC) претендует на решение этой проблемы. Что это такое и какие базы данных его поддерживают?
обновлено: эти поддерживают его (какие другие?)
- oracle
- postgresql
Какие существуют инструменты рефакторинга баз данных?
Я ищу что-то, что можно интегрировать в мой рабочий процесс CI.
Я слышал о dbdeploy , но я ищу что-то другое. Причина, по которой мне не нравится dbdeploy, заключается в том, что я не хочу устанавливать java на своем сервере.
Я бы предпочел, конечно, чтобы решение не включало в себя нанизывание некоторых скриптов shell вместе.
Когда вы используете табличные кластеры?
Как определить, когда следует использовать табличные кластеры ? Существует два типа, index и hash, которые можно использовать для разных случаев. По вашему опыту, окупилось ли внедрение и использование табличных кластеров?
Если ни одна из ваших таблиц не настроена таким образом, изменение их для использования табличных кластеров увеличит сложность настройки. Но перевесят ли ожидаемые эксплуатационные преимущества затраты на повышение сложности будущих работ по техническому обслуживанию?
Есть ли у вас любимые онлайн-ссылки или книги, которые хорошо описывают кластеризацию таблиц и дают хорошие примеры реализации?
//Oracle советы очень ценятся.
Сервер SQL для MySQL
У меня есть резервная копия сервера SQL DB .формат bak, который мне удалось успешно восстановить в локальный экземпляр SQL Server Express. Теперь я хочу экспортировать как структуру, так и данные в формате, который примет MySQL. Инструменты, которые я использую для управления MySQL, обычно позволяют мне импортировать / экспортировать .sql файлов, но, к сожалению, Microsoft не сочла нужным сделать мою жизнь такой легкой!
Я не могу поверить, что я первый, кто столкнулся с этим, но Google не очень помог. Кто-нибудь справлялся с этим раньше?
Инструменты сравнения баз данных
Моя компания имеет ряд относительно небольших баз данных Access (2-5MB), которые управляют нашими инструментами проектирования с помощью пользователей. Естественно, эти базы данных эволюционируют с течением времени по мере обнаружения и исправления ошибок в данных, а также по мере изменения схемы для поддержки новых функций в инструментах. Может ли кто-нибудь порекомендовать инструмент database diff для сравнения данных и схемы из одной версии базы данных в другую? Любые предложения будут оценены: бесплатно, с открытым исходным кодом или коммерческие.
Можно ли использовать nHibernate с базой данных Paradox?
Можно ли настроить nHibernate для подключения к базе данных Paradox (*.db файлов)?
Почему это плохая практика, чтобы сделать несколько подключений к базе данных в одном запросе?
Обсуждение Синглетонов в PHP году заставляет меня все больше и больше задумываться над этим вопросом. Большинство людей учат, что вы не должны делать кучу соединений DB в одном запросе, и мне просто любопытно, каковы ваши рассуждения. Моя первая мысль-это затраты на ваш сценарий, чтобы сделать так много запросов к DB, но затем я противопоставляю себя вопросу: не будет ли несколько соединений делать параллельные запросы более эффективными?
Как насчет некоторых ответов (с доказательствами, люди) от некоторых людей в курсе?
Простой объект для продукта базы данных
Я рассматривал некоторые различные продукты для .NET, которые предлагают ускорить время разработки, предоставляя возможность бизнес-объектам легко сопоставляться с автоматически создаваемой базой данных. У меня никогда не было проблем с написанием уровня доступа к данным, но мне интересно, действительно ли этот тип продукта сэкономит время, которое он требует. Я также беспокоюсь, что буду отказываться от слишком большого контроля над базой данных и затруднять отслеживание любых проблем на уровне данных. Делают ли эти типы продуктов лучше или хуже в уже сложном случае, когда необходимо изменить структуру базы данных и бизнес-объекта?
Например: Отображение отношений объектов из Dev Express
В сущности, стоит ли оно того? Смогу ли я сэкономить "THAT" много времени, усилий и будущих ошибок?
Кто-нибудь использует CouchDB?
Я с интересом следил за проектом CouchDB в течение последних двух лет и вижу, что теперь это проект инкубатора Apache. До этого веб-сайт CouchDB был полон отказов от использования производственного кода , поэтому я просто следил за ним. Мне было бы интересно узнать ваш опыт, если бы вы использовали CouchDB либо для живого проекта, либо для пилота технологии.
Хорошая бесплатная альтернатива MS Access
Рассмотрим необходимость разработки легкого настольного приложения DB на платформах Microsoft.
Это можно было бы сделать довольно легко с MS Access, но я хотел бы иметь возможность распространять его среди других, и я не хочу платить за лицензию времени выполнения.
Требования:
- легкое распределение для других
- нет проблем с лицензированием среды выполнения
Соображения и кандидаты:
- База из номера OpenOffice . Мои опасения были связаны с его стабильностью.
- MySQL + написание пользовательского кода DB в C++ или Python или что-то еще кажется довольно тяжелым решением.
Вопрос: каковы низкозатратные или бесплатные альтернативы базам данных MS Access?
См. Также: Механизмы Отчетности С Открытым Исходным Кодом
@Schnapple
Bruceatk вроде бы ударил по тому, о чем я думаю; это не столько двигатель DB, сколько я хочу другие тонкости, которые доступ приносит на вечеринку. Хороший конструктор форм, хороший механизм отчетности и т. д. Но вы действительно поднимаете очень хороший вопрос о следе установки. Я думал об этом, но пока еще не принял никаких твердых решений относительно того, в какую сторону мне двигаться. Это, вероятно, будет что-то довольно легкое в любом случае, и небольшой монтажный след определенно будет плюсом.
@Remou,
Нет, я не знал, что среда выполнения MS Access 2007 бесплатна; спасибо, что указали на это. В последний раз, когда я удосужился исследовать его (я не помню, когда это было), я думаю, что это была довольно дорогая лицензия для среды выполнения, потому что я думаю, что они пытались продать ее корпоративным отделам IT.
И спасибо всем остальным, кто откликнулся также; я был совершенно не в курсе тех других вариантов, которые вы все указали.
Создание таблиц базы данных из определений объектов
Я знаю, что существует несколько (автоматических) способов создания уровня доступа к данным для управления существующей базой данных (от LINQ до SQL, Hibernate и т. д...). Но я начинаю немного уставать (и я считаю, что должен быть лучший способ делать вещи) от таких вещей, как:
- Создание / изменение таблиц в Visio
- Использование Visio-х "Update Database" для создания / изменения базы данных
- Импорт таблиц в объект "LINQ to SQL classes"
- Соответственно, меняется код
- Скомпилировать
Как насчет способа создания схемы базы данных из определения объектов / сущностей? Я не могу найти хороших ссылок для таких инструментов (и я ожидал бы какой-то встроенной поддержки, по крайней мере, в некоторых фреймворках).
Было бы прекрасно, если бы я только мог ... :
- Изменение определения объекта
- Измените код, который управляет объектом
- Компилировать (изменения в базе данных производятся автоматически-магически)
Как обойти неподдерживаемые целочисленные типы полей без знака в MS SQL?
Пытаясь сделать приложение на основе MySQL поддержкой MS SQL, я столкнулся со следующей проблемой:
Я сохраняю auto_increment MySQL как целочисленные поля без знака (разных размеров), чтобы использовать полный диапазон, поскольку я знаю, что никогда не будет отрицательных значений. MS SQL не поддерживает атрибут unsigned для всех целочисленных типов, поэтому мне приходится выбирать между удалением половины диапазона значений или созданием обходного пути.
Одним из очень наивных подходов было бы поместить некоторый код в код абстракции базы данных или в хранимую процедуру, которая преобразует между отрицательными значениями на стороне БД и значениями из большей части диапазона без знака. Это, конечно, испортит сортировку, а также не будет работать с функцией автоматического идентификатора (или это будет каким-то образом?).
Я не могу придумать хороший обходной путь прямо сейчас, есть ли он? Или я просто фанатик и должен просто забыть о половине диапазона?
Редактировать:
Вудхаус: да, наверное, ты прав. В моей голове все еще звучит голос, говорящий, что, возможно, я смогу уменьшить размер поля, если оптимизирую его использование. Но если нет простого способа сделать это, вероятно, не стоит беспокоиться об этом.
Как выбрать базу данных SQL?
Мы живем в золотой век баз данных, с многочисленными высококачественными коммерческими и бесплатными базами данных. Это здорово, но недостатком является то, что нет простого очевидного выбора для того, кто нуждается в базе данных для своего следующего проекта.
- Какие ограничения / критерии вы используете для выбора базы данных?
- Насколько хорошо различные базы данных, которые вы использовали, соответствуют этим constraints/criteria?
- Какие особенности имеют базы данных?
- Какие базы данных вы чувствуете себя комфортно, рекомендуя другим?
и т.д...
Как управлять обновлением схемы в рабочей базе данных?
Это, кажется, забытая область,которая действительно может использовать некоторое понимание. Каковы ваши лучшие практики для:
- выполнение процедуры обновления
- резервное копирование в случае ошибок
- синхронизация изменений кода и базы данных
- тестирование до deployment
- механика изменения таблицы
и т.д...
Получить последний элемент в таблице-SQL
У меня есть таблица истории в SQL Server, которая в основном отслеживает элемент через процесс. Элемент имеет несколько фиксированных полей, которые не изменяются на протяжении всего процесса, но имеет несколько других полей, включая статус и идентификатор, которые увеличиваются по мере увеличения шагов процесса.
В основном я хочу получить последний шаг для каждого элемента, заданного ссылкой на пакет. Так что если я сделаю
Select * from HistoryTable where BatchRef = @BatchRef
Он вернет все шаги для всех элементов в пакете-например
Id Status BatchRef ItemCount 1 1 Batch001 100 1 2 Batch001 110 2 1 Batch001 60 2 2 Batch001 100
Но чего я действительно хочу, так это:
Id Status BatchRef ItemCount 1 2 Batch001 110 2 2 Batch001 100
Edit: Appologies - кажется, не удается получить теги TABLE для работы с Markdown - последовал за справкой к письму и выглядит нормально в предварительном просмотре