Similar questions has been asked more than 10 years ago. I have tried to search the web for the last two days, and read numerous pages all over the place. Unfortunately, I am still not finding a good answer.
This question should not have been tied to any particular database, but my particular server is mysql 5.6.12. I tried mysql-workbench, and it could not generate the links between the entities even though my database has clear foreign key constraints defined.
In the past I have used a program from Sybase, and it worked fine and need to pay.
I have seen one from Oracle, not sure this one is good or not. It might be a time for people to share experiences here.
I have seen a pattern that usually people who has no problems won't visit this site. Just to make a simple answer to my own question.
Mysql-workbench can display relationships, but if you have one single error in the schema, then not a single one will show up. I found DbSchema a better alternative, and it is not expensive.
I've seen interesting projects on sourceforge:
schemacrawler --> http://schemacrawler.sourceforge.net/
schemaspy --> http://schemaspy.sourceforge.net/
I've never used them but they looks good with maven integration, programatically and command line modes, and many other stuff.
Related
After a bunch of googling, I don't really see a good way to have Orleans work with an existing Relation-Database backend.
Every example that I have found for doing this relies on adding columns to deal with concurrency and I haven't really seen any samples of how to use Orleans with, as is the typical example, the northwind database or something.
This leads me to believe that Orleans is not really intended to be used in this way (because if it was I would expect someone somewhere to have create a sample app demonstrating it by now). Am I missing something? Has anyone seen a sample project or blog post explaining how to use, say, an existing EF context with Orleans? This needs to be done without adding additional columns. I am working with data that is controlled by multiple teams in a mission critical system, so there is no way I will get approval to start adding columns to hundreds of tables.
As #Milney says, to my knowledge, there is nothing special in Orleans that would prevent you from using a normal EF DbContext, no extra columns required.
If, on the other hand, your issue is that other applications are causing concurrency issues from outside Orleans, then I think you'll need to deal with them as you would in any application (e.g. with optimistic concurrency checks).
But it's possible I'm misunderstanding your use case.
As the title suggests, I've got a problem I just cant find a solution to. I've googled every possible angle and just cant seem to find a solution to this problem.
Basically, I'm missing 2 Link Types -- Affects and Affected By
All the others are there.
For example if i was to create a new Bug WI go to All Links -> Link To there is no option for Affects or Affected By.
Ive checked the data warehouse and the Work Item Link Type Dimension for the cube in analysis services, and they are in fact not in there.
I've tried everything i cn think of,
Ive also exported the linktypes from one of our development environments (which includes the link types) and imported them back into the production server using witadmin... This did not work,
I'm really lost with this one and there just doesn't seem to be any solutions on google, which i find hard to believe but i've spent the last 4 hours looking.
I would really appreciate it if some one could provide some help on this one, im willing to try anything.
It just seems strange why just these 2 link types would be missing.
We use our own process template which is just an extension to the MSF For Agile Software development v5.0 process template.
Seems the only way to solve this issue is to force TFS to recreate the Tfs_Warehouse database and reprocess the cube..... PROBLEM SOLVED
I'm developing an app (basically an intranet) which has a few small sets of users, each a company using the app internally.
Up to now, each set of users has its own deployment with a separate domain name and database, but all living on the same server. This means that each time I have to push an upgrade I need to deploy once per client. Also, each new client means adding a new deploy target, for which I'm currently using Capistrano's multistage plugin, but it's getting a bit ridiculous.
This is a less than ideal setup, so after some thought I came up with the idea of modifying the app so that it handles multiple domains, each mapped to a different database, but on a single deployment. I created a small proof-of-concept app which basically has a before_filter in ApplicationController acting as a multiplexer for domains/databases, connecting ActiveRecord to each domain's database on each request. This worked really well, but I haven't applied this to the big app yet and I can think of at least one problem down the road: running migrations across all databases. I'm pretty sure I can work around that one though, maybe I'll tweak the rake task a little, but I'm worried that might not be the last of problems with it.
Has anyone ever tried this, or can think of any major reasons why this would be a bad idea? I would like to listen to some opinions.
Thanks!
This is usually called multi-tenancy. Here is a presentation or video about doing it in rails. Couldn't tell if it was any good, it was blocked here at work.
And no, there is nothing wrong with it as an idea. I'm not sure about your particular implementation, but I have worked on apps that were multi-tenant in the past and can't say we ever had much difficulty except when trouble clients wanted to stay on a legacy version of the product and we wanted to move forward.
I have a similar app and still the same problem as you, and after many tries, i ended up (before a desirable core solution came) with one env file per domain and kind a filter like yours.
I've been running in production for almost 1 year, and the only problem i detected is that rails expected the main db (even you won't use it) to have the same migration level as the others. (this problem arise under certain conditions)
If you need futher details, just let me know.
I hope this helps.
Looking at all the answers to the question: "Are the days of stored procedures numbered".
It appears as if some people are jumping in with strong opions based on what I perceive to be a narrow range of software development experiences.
I would like to re-submit the question, but first I need help putting together a list of qualifications required before answering.
Here is one version of the requirements to get you started.
Worked on one large database like
for ever (10+ years).
Starting some time in the 1990s went
to work for a startup with the goal
of creating a world beating ERP
system.
Wrote code in either VB6 or Cobol.
Released new versions of said system
once every 2+ years.
Came in as new developer of said
system and had good the fortune to
be allowed spelunk through thousands of lines of stored procedures so that some major changes to business logic could be implemented.
Worked deep in the bowels of a
Financial institution adding web
based front ends to various parts of
large mostly ossified database.
Wrote more SQL code than many .NET
developers have written C#.
Etc.
Have you seen the similar question Stored Procedures - End of days which has answers from some people I would consider to be some of the most experienced on SO in this area: Joel Coehoorn, Stephen A Lowe, and edits by Jeff Attwood (the OP refers to a podcast by Jeff where he says the days of SP are over).
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I recently joined a new company with a large existing codebase. Most of my experience has been in developing small-medium sized apps which I was involved with since the beginning.
Does anyone have any useful tools or advice on how to begin working on a large app?
Do I start at the models and move to controllers? Are there scripts to visually map out model relationships? Should I jump in, start working on it and learn the apps structure as I go?
Railroad should help you understand the big picture. It generates diagrams for your models and controllers.
I found unit tests to be the most efficient, effective and powerful tool. So, before making any change, make sure your application has a minimum LOC so that you won't break any existing feature working on.
You should care about unit tests (of course I'm talking about unit/functional/integrational tests) because:
they ensure you won't break any existing feature
they describe the code so that you won't need tons of comments everywhere to understand why that code fragment acts in that way
having test you'll spent less time debugging and more time coding
When you have tests, you can start refactoring your app.
Here's a list of some tools I usually work with:
Rack::Bug
New Relic
You might want to view some of the wonderful Gregg's videos about Scaling Rails to get more powerful tools.
Also, don't forget to immediately start tracking how your application is performing and whether it is raising exceptions. You can use one of the following tools
Hoptoad
Exceptional
If you need to fix some bug, don't forget to reproduce the issue with a test first, then fix the bug.
Not specific on Rails, but I would start reading the requirements and architecture documentation. After that get familiar with the domain by sketching the models and their relationship on a big sheet of paper.
Then move on to the controllers (maybe look at the routes first).
The views should not contain that much information, I guess you can pretty much skip them.
If you still need to know more, the log of the versioning system (given they use one) is also a good place to get to know how the project evolved.
When I've been in this situation, I try one of three things:
Read all the code top to bottom. This lets you see what code is working, and you can report progress easily (I read through all the view code this week). This means you spend time on things that may not be helpful (unused code) but you get a taste of everything that is there. This is very boring.
Start at the beginning and go to the end. From the login page or splash screen, start looking at that code, then the next page, then the next page. Look at the view, controller, and database code. This takes some time, but it gives you the context for why you need that code or database table. And it allows you do see most often the ones that get used in the most places. This is more interesting.
Start fixing bugs. This has the benefit of showing progress on your new project (happy boss) taking work from other people (happy co-workers) and learning at the same time (happy developer). It provides the context of number 2, and you can skip rarely used code from number 1. This is the most interesting way for me.
Also, keep track of what you've learned. Get a cheap spiral-bound notebook and write down an outline of what you've learned. Imagine yourself giving a talk on the code you're learning about or bug you're fixing. Take enough notes to give that talk, and spice it up with a factoid or two to make it interesting. I give my notebooks dignity and purpose by calling them "Engineering Notebooks", put a title on the front (my name, company, date), and bringing them to every meeting. It looks very professional compared to the guys who don't show up with paper to take notes. For this, don't use a wiki. It can't be relied upon, and I spend a week playing with the wiki instead of learning.
As mentioned above, being the new guy is a good chance to do the things nobody ever got around to like unit tests, documenting processes, or automating running tests. Document the process to set up a new box and get all the software installed to be productive. Take an old box under someone's desk and put a continuous integration install on it, and have it email you when the tests fail. You can forward that email whenever someone else checks in code that breaks the tests. Start writing tests to figure out how things work together, esp. if there aren't any/very many tests.
Try to ask lots of questions in one-on-one situations. This shows you're engaged and learning, and it helps you find the experts in the different parts of the app. On a big project you may need to go to one person for one topic and a different person for other topics. It also helps identify who thinks they know more than they really do or who talks more than you really need.