Как разработать many-many отношения в объектной базе данных?

Допустимые номера для портов: от 0 до 2 ^ 16-1 = от 0 до 65535
Это потому, что номер порта имеет длину 16 бит.

Однако порты делятся на:
Известные порты : от 0 до 1023 (используются для системных служб, например, HTTP, FTP, SSH, DHCP ...)
Зарегистрированные / пользовательские порты : от 1024 до 49151 (вы можете использовать его для своего сервера, но будьте осторожны с некоторыми известными приложениями: такими как сервер системы управления базами данных Microsoft SQL Server или сервер Apache Derby Network Server уже исходя из этого диапазона, т.е. не рекомендуется назначать порт MSSQL вашему серверу, иначе, если MSSQL работает, то ваш сервер, скорее всего, не будет работать из-за конфликта портов)
Динамические / частные порты : от 49152 до 65535. (не используется для серверов, а не для клиентов, например, в службе NATing)

В программировании вы можете использовать любые числа от 0 до 65535 для вашего сервера, однако вам следует придерживайтесь диапазонов, упомянутых выше, в противном случае некоторые системные службы или некоторые приложения не будут работать из-за конфликта портов.
Проверьте список большинства портов здесь: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

15
задан Ben 29 January 2013 в 19:57
поделиться

6 ответов

Если вы используете объектную базу данных, вам не нужно заботиться о том, как отношения хранятся в базе данных. Вы определяете классы и отношения между ними. Прочтите, пожалуйста, ссылку на вашу базу данных. Примеры отношений:

n:n attribute, referencing from the parent
------------------------------------------------------------------
class Person {
    List addresses;
}

class Address {
}


n:n attribute, referencing from the child
------------------------------------------------------------------
class Person {
}

class Address {
    List persons
}

n:n attribute, bidirectional references
------------------------------------------------------------------
class Person {
    List addresses;
}

class Address {
    List persons
}
4
ответ дан 1 December 2019 в 04:18
поделиться

Я думаю, вы просто немного зациклились на реляционном образе мышления БД. Списки в каждом объекте - это правильный объектно-ориентированный подход. Коммиты и откаты - не проблема, они происходят в транзакции, которая фиксирует все или все откатывает.

1
ответ дан 1 December 2019 в 04:18
поделиться

В чистой объектно-ориентированной базе данных, такой как GemStone, сами объекты имеют коллекции ссылок на другие объекты. Когда на объект ссылается приложение, OODBMS генерирует прокси-сервер, который обертывает объект. Схема для этого - просто постоянный объект и его коллекция ссылок на объекты, на которые он ссылается. OODBMS не обязательно нуждается в связующем объекте.

С уровнем отображения O / R (при условии, что он достаточно умен, чтобы устанавливать отношения M: M), отношение M: M проявляется как совокупность вспомогательных ссылок на сам объект который преобразователь O / R разрешает в сущность ссылки за кулисами. Не все преобразователи O / R делают это, поэтому у вас может быть отдельный объект ссылки.

1
ответ дан 1 December 2019 в 04:18
поделиться

У вас есть какая-то конкретная причина, по которой вы хотели бы использовать ODBMS? Для простых структур данных (таких как категоризация книг) вы, как правило, не найдете никаких преимуществ в ODBMS по сравнению с RDBMS, и на самом деле вам будет легче работать в гораздо более стандартизированном мире RDBMS. ODBMS имеет очень ощутимые преимущества, когда вы работаете со сложными типами данных или буквальным постоянством / хранением динамических объектов. ODBMS также считается намного более быстрой и масштабируемой, чем RDBMS, хотя я сам мало что могу в этом сказать. Вот пара страниц, на которых обсуждаются РСУБД и ODBMS:

Что бы ни случилось с объектно-ориентированными базами данных

Объектно-ориентированная база данных против объектно-реляционной базы данных (SO)

1
ответ дан 1 December 2019 в 04:18
поделиться

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

Уловка здесь - ссылки.

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

Таблица соответствия является реляционной концепцией, если только этот промежуточный соединительный класс не может иметь свойства, не относящиеся ни к одному из объекты. Он существует, поскольку позволяет писать запросы мощным способом, поскольку сокращает отношение до двух отношений один ко многим и значительно сокращает дублирование данных. Если бы вы сделали это в базе данных отношений без таблицы сопоставления, то все очень быстро испортилось бы - как будет работать обновление? Лично я нахожу привлекательность oo-баз данных в том, чтобы отойти от этого

способа, которым я мог бы связать все объекты вместе через события в коде с каким-то обработчиком транзакций, позволяющим кэшировать состояния объектов. поэтому вместо того, чтобы объекты манипулировать свойствами друг друга, они запрашивают изменение через обработчик и ждут результата в обратном вызове.

0
ответ дан 1 December 2019 в 04:18
поделиться

На самом деле я могу придумать только два способа решения этой проблемы, оба из которых вы упомянули. Лично я бы выбрал первый подход (создание объекта отображения как объектно-ориентированного объекта). Это предотвращает хранение избыточной информации и необходимость синхронизации; это также означает, что если ассоциация в конечном итоге имеет собственные поля (скажем, дату, когда книга была отнесена к этой категории), их можно легко включить. Мы используем этот подход для множества ассоциаций в нашей системе.

Объектно-ориентированные объекты будут выглядеть так:

BookCategory {
 Book book
 Category category
}
Book {
 Collection <BookCategory> categories
}
Category {
 Collection <BookCategory> categories
}

Здесь вы должны синхронизировать объект отношения и две коллекции; однако в этом случае коллекции необязательны. Обычно вы можете получить ту же информацию с помощью запроса ORM, например: выберите b.book из BookCategory b, где b.category = MyCategory

Альтернативой является настройка, например:

Book {
 Collection<Category> categories
}

Category {
 Collection<Books> books
}

Если ваш инструмент ORM / DB автоматически поддерживает ассоциации, это нормально; в противном случае вы застряли при обновлении обеих коллекций. (В Hibernate одна сторона будет иметь свойство: inverse = true в сопоставлении; эта сторона не обновляется, поэтому, строго говоря, ее не нужно поддерживать. Однако это кажется мне плохой практикой.)

Если вы обычно получаете доступ к отношению только одним способом (например, получаете все книги в категории), вы можете удалить коллекцию с другой стороны; тогда я думаю, вам придется обойти инструмент ORM и использовать собственный запрос, чтобы получить доступ к взаимосвязи с другого направления.

Мы используем Hibernate (инструмент объектно-реляционного сопоставления на основе Java) в нашем проекте; http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#collections-ofvalues ​​

HTH!

9
ответ дан 1 December 2019 в 04:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: